diff --git a/.ci/Dockerfile.gitlabci b/.ci/Dockerfile.gitlabci index b628d8622..867b53c28 100644 --- a/.ci/Dockerfile.gitlabci +++ b/.ci/Dockerfile.gitlabci @@ -19,5 +19,4 @@ RUN apt-get build-dep -y . # Dependencies of the freedombox Debian package RUN apt-get install -y build-essential # Build dependencies RUN apt-get install -y sshpass parted # Test dependencies RUN apt-get install -y sudo -RUN apt-mark hold fuse fuse3 # not installable in CI environment RUN apt-get install -y $(./run --list-dependencies) # Module dependencies diff --git a/.gitignore b/.gitignore index 8ed9a9b69..849b4ff89 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,6 @@ doc/manual/*/*.pdf doc/manual/*/*.html doc/manual/*/*.xml -!doc/manual/*/*.raw.xml doc/plinth.1 doc/dev/_build \#* diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e9edd71a2..b81f88049 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,7 +5,6 @@ before_script: - export DEBIAN_FRONTEND=noninteractive - apt-get update - apt-get build-dep -y . # Dependencies of the plinth Debian package - - apt-mark hold fuse fuse3 # not installable in CI environment - apt-get install -y $(./run --list-dependencies) # Module dependencies stages: diff --git a/HACKING.md b/HACKING.md index a80525afe..12431e4e4 100644 --- a/HACKING.md +++ b/HACKING.md @@ -4,24 +4,32 @@ FreedomBox is built as part of Debian GNU/Linux. However, you don't need to install Debian to do development for FreedomBox. FreedomBox development is -typically done on a container or a Virtual Machine. For running a container, you -need systemd containers, Git and Python. This approach is recommended. For -running a VM, you can work on any operating system that can install latest +typically done on a container or a Virtual Machine. + +* For running a container, you need systemd containers, Git, Python and a +sudo-enabled user. This approach is recommended. +* For running a VM, you can work on any operating system that can install latest versions of Git, Vagrant and VirtualBox. ## Using Containers -The ./container script shipped with FreedomBox source code can manage the +The `./container` script shipped with FreedomBox source code can manage the development environment inside a systemd-nspawn container. -1. Checkout FreedomBox Service (Plinth) source code using Git. +1. Checkout FreedomBox Service (Plinth) source code using Git: ```bash host$ git clone https://salsa.debian.org/freedombox-team/freedombox.git host$ cd freedombox ``` -2. To download, setup, run, and configure a container for FreedomBox +2. Work in a specific branch: + ```bash + host$ git branch YOUR-FEATURE-BRANCH + host$ git checkout YOUR-FEATURE-BRANCH + ``` + +3. To download, setup, run, and configure a container for FreedomBox development, simply execute in your FreedomBox Service (Plinth) development folder: @@ -29,7 +37,7 @@ development environment inside a systemd-nspawn container. host$ ./container up ``` -3. SSH into the running container with the following command: +4. SSH into the running container with the following command: ```bash host$ ./container ssh @@ -37,7 +45,7 @@ development environment inside a systemd-nspawn container. ### Using after Setup -After logging into the container, the source code is available in /freedombox +After logging into the container, the source code is available in `/freedombox` directory: ```bash @@ -63,10 +71,18 @@ guest$ sudo ./setup.py install Note: This development container has automatic upgrades disabled by default. +### Troubleshooting + +* Sometimes `host$ ./container destroy && ./container up` doesn't work. In such + cases, try to delete the hidden `.container` folder and then `host$ + ./container up`. +* Not all kinds of changes are automatically updated. Try `guest$ sudo mount -o + remount /freedombox`. + ## Using Vagrant -Use VirtualBox and Vagrant if for some reason, the container option is not -suitable such as when you are running non-GNU/Linux machine or a non-systemd +Use VirtualBox and Vagrant if for some reason the container option is not +suitable, such as when you are running non-GNU/Linux machine or a non-systemd machine. ### For Debian GNU/Linux and Derivatives @@ -264,7 +280,7 @@ executed (red). Inside the container run ```bash -guest$ cd /freedombox ; sudo functional_tests/install.sh +guest$ cd /freedombox ; sudo plinth/tests/functional/install.sh ``` #### For running tests inside the VM diff --git a/actions/apache b/actions/apache index 9dbe9d957..a888acac9 100755 --- a/actions/apache +++ b/actions/apache @@ -117,6 +117,9 @@ def subcommand_setup(arguments): webserver.enable('rewrite', kind='module') webserver.enable('macro', kind='module') + # Disable /server-status page to avoid leaking private info. + webserver.disable('status', kind='module') + # switch to mod_ssl from mod_gnutls webserver.disable('gnutls', kind='module') webserver.enable('ssl', kind='module') diff --git a/actions/bepasty b/actions/bepasty new file mode 100755 index 000000000..f6bc5eb46 --- /dev/null +++ b/actions/bepasty @@ -0,0 +1,219 @@ +#!/usr/bin/python3 +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Configuration helper for bepasty. +""" + +import argparse +import collections +import grp +import json +import os +import pathlib +import pwd +import secrets +import shutil +import string +import subprocess +import sys + +import augeas + +from plinth import action_utils +from plinth.modules import bepasty + +DATA_DIR = '/var/lib/bepasty' + +PASSWORD_LENGTH = 20 + +CONF_FILE = pathlib.Path('/etc/bepasty-freedombox.conf') + + +def parse_arguments(): + """Return parsed command line arguments as dictionary.""" + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') + + setup = subparsers.add_parser( + 'setup', help='Perform post-installation operations for bepasty') + setup.add_argument('--domain-name', required=True, + help='The domain name that will be used by bepasty') + + subparsers.add_parser('get-configuration', help='Get all configuration') + + add_password = subparsers.add_parser( + 'add-password', help='Generate a password with given permissions') + add_password.add_argument( + '--permissions', nargs='+', + help='Any number of permissions from the set: {}'.format(', '.join( + bepasty.PERMISSIONS.keys()))) + add_password.add_argument( + '--comment', required=False, + help='A comment for the password and its permissions') + + subparsers.add_parser('remove-password', + help='Remove a password and its permissions') + + set_default = subparsers.add_parser('set-default', + help='Set default permissions') + set_default.add_argument( + '--permissions', nargs='*', + help='Any number of permissions from the set: {}'.format(', '.join( + bepasty.PERMISSIONS.keys()))) + + subparsers.required = True + return parser.parse_args() + + +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(CONF_FILE)) + aug.load() + return aug + + +def _key_path(key): + """Return the augeas path for the key.""" + return '/files' + str(CONF_FILE) + '/' + key + + +def conf_file_read(): + """Read and return the configuration.""" + aug = _augeas_load() + conf = collections.OrderedDict() + for path in aug.match(_key_path('*')): + key = path.rsplit('/', 1)[-1] + if key[0] != '#': + conf[key] = json.loads(aug.get(path)) + + return conf + + +def conf_file_write(conf): + """Write configuration to the file.""" + aug = _augeas_load() + for key, value in conf.items(): + if not key.startswith('#'): + value = json.dumps(value) + + aug.set(_key_path(key), value) + + aug.save() + + +def subcommand_setup(arguments): + """Post installation actions for bepasty.""" + # Create bepasty group if needed. + try: + grp.getgrnam('bepasty') + except KeyError: + subprocess.run(['addgroup', '--system', 'bepasty'], check=True) + + # Create bepasty user if needed. + try: + pwd.getpwnam('bepasty') + except KeyError: + subprocess.run([ + 'adduser', '--system', '--ingroup', 'bepasty', '--home', + '/var/lib/bepasty', '--gecos', 'bepasty file sharing', 'bepasty' + ], check=True) + + # Create data directory if needed. + if not os.path.exists(DATA_DIR): + os.makedirs(DATA_DIR, mode=0o750) + shutil.chown(DATA_DIR, user='bepasty', group='bepasty') + + # Create configuration file if needed. + if not CONF_FILE.is_file(): + passwords = [_generate_password() for _ in range(3)] + conf = { + '#comment': + 'This file is managed by FreedomBox. Only a small subset of ' + 'the original configuration format is supported. Each line ' + 'should be in KEY = VALUE format. VALUE must be a JSON ' + 'encoded string.', + 'SITENAME': arguments.domain_name, + 'STORAGE_FILESYSTEM_DIRECTORY': '/var/lib/bepasty', + 'SECRET_KEY': secrets.token_hex(64), + 'PERMISSIONS': { + passwords[0]: 'admin,list,create,read,delete', + passwords[1]: 'list,create,read,delete', + passwords[2]: 'list,read', + }, + 'PERMISSION_COMMENTS': { + passwords[0]: 'admin', + passwords[1]: 'editor', + passwords[2]: 'viewer', + }, + 'DEFAULT_PERMISSIONS': '', + } + conf_file_write(conf) + CONF_FILE.chmod(0o640) + shutil.chown(CONF_FILE, user='bepasty', group='bepasty') + + +def subcommand_get_configuration(_): + """Get default permissions, passwords, permissions and comments.""" + conf = conf_file_read() + print(json.dumps(conf)) + + +def subcommand_add_password(arguments): + """Generate a password with given permissions.""" + conf = conf_file_read() + permissions = _format_permissions(arguments.permissions) + password = _generate_password() + conf['PERMISSIONS'][password] = permissions + if arguments.comment: + conf['PERMISSION_COMMENTS'][password] = arguments.comment + + conf_file_write(conf) + action_utils.service_try_restart('uwsgi') + + +def subcommand_remove_password(_arguments): + """Remove a password and its permissions.""" + conf = conf_file_read() + password = ''.join(sys.stdin) + if password in conf['PERMISSIONS']: + del conf['PERMISSIONS'][password] + + if password in conf['PERMISSION_COMMENTS']: + del conf['PERMISSION_COMMENTS'][password] + conf_file_write(conf) + action_utils.service_try_restart('uwsgi') + + +def subcommand_set_default(arguments): + """Set default permissions.""" + conf = {'DEFAULT_PERMISSIONS': _format_permissions(arguments.permissions)} + conf_file_write(conf) + action_utils.service_try_restart('uwsgi') + + +def _format_permissions(permissions=None): + """Format permissions as comma-separated.""" + return ','.join(set(bepasty.PERMISSIONS.keys()).intersection( + permissions)) if permissions else '' + + +def _generate_password(): + """Generate a random password.""" + alphabet = string.ascii_letters + string.digits + return ''.join(secrets.choice(alphabet) for _ in range(PASSWORD_LENGTH)) + + +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() diff --git a/actions/coquelicot b/actions/coquelicot deleted file mode 100755 index aa46115c6..000000000 --- a/actions/coquelicot +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/python3 -# -*- mode: python -*- -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Configuration helper for coquelicot. -""" - -import argparse -import hashlib -import os -import sys - -import yaml - -from plinth import action_utils - -SETTINGS_FILE = '/etc/coquelicot/settings.yml' - - -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='Post-installation operations for coquelicot') - - subparsers.add_parser( - 'set-upload-password', - help='Set a new global, pre-shared password for uploading files') - - max_file_size = subparsers.add_parser( - 'set-max-file-size', - help='Change the maximum size of the files that can be uploaded to ' - 'Coquelicot') - max_file_size.add_argument('size', type=int, help='upload file size in MB') - - subparsers.add_parser( - 'get-max-file-size', - help='Print the maximum size of the files that can be uploaded to ' - 'Coquelicot') - - subparsers.required = True - return parser.parse_args() - - -def subcommand_setup(_): - """Perform post-installation operations for coquelicot.""" - settings = read_settings() - settings['path'] = "/coquelicot" - settings['max_file_size'] = mebibytes(1024) - write_settings(settings) - action_utils.service_restart('coquelicot') - - -def subcommand_set_upload_password(arguments): - """Set a new upload password for Coquelicot.""" - upload_password = ''.join(sys.stdin) - settings = read_settings() - hashed_pw = hashlib.sha1(upload_password.encode()).hexdigest() - settings['authentication_method']['upload_password'] = hashed_pw - write_settings(settings) - action_utils.service_try_restart('coquelicot') - - -def subcommand_set_max_file_size(arguments): - """Set a new maximum file size for Coquelicot.""" - size_in_bytes = mebibytes(arguments.size) - settings = read_settings() - settings['max_file_size'] = size_in_bytes - write_settings(settings) - action_utils.service_try_restart('coquelicot') - - -def subcommand_get_max_file_size(_): - """Print the maximum file size to stdout.""" - if os.path.exists(SETTINGS_FILE): - settings = read_settings() - print(int(settings['max_file_size'] / (1024 * 1024))) - else: - print(-1) - - -def read_settings(): - with open(SETTINGS_FILE, 'rb') as settings_file: - return yaml.load(settings_file) - - -def write_settings(settings): - with open(SETTINGS_FILE, 'w') as settings_file: - yaml.dump(settings, settings_file) - - -def main(): - """Parse arguments and perform all duties.""" - arguments = parse_arguments() - - subcommand = arguments.subcommand.replace('-', '_') - subcommand_method = globals()['subcommand_' + subcommand] - subcommand_method(arguments) - - -def mebibytes(size): - """Return the given size of mebibytes in bytes.""" - return size * 1024 * 1024 - - -if __name__ == '__main__': - main() diff --git a/actions/ejabberd b/actions/ejabberd index 7e4c9c1bd..dd9565bcf 100755 --- a/actions/ejabberd +++ b/actions/ejabberd @@ -13,7 +13,7 @@ import socket import subprocess from distutils.version import LooseVersion as LV -import ruamel.yaml +from ruamel.yaml import YAML, scalarstring from plinth import action_utils @@ -24,6 +24,10 @@ EJABBERD_ORIG_CERT = '/etc/ejabberd/ejabberd.pem' IQDISC_DEPRECATED_VERSION = LV('18.03') MOD_IRC_DEPRECATED_VERSION = LV('18.06') +yaml = YAML() +yaml.allow_duplicate_keys = True +yaml.preserve_quotes = True + def parse_arguments(): """Return parsed command line arguments as dictionary""" @@ -79,7 +83,7 @@ def parse_arguments(): def subcommand_get_configuration(_): """Return the current configuration, specifically domains configured.""" with open(EJABBERD_CONFIG, 'r') as file_handle: - conf = ruamel.yaml.round_trip_load(file_handle, preserve_quotes=True) + conf = yaml.load(file_handle) print(json.dumps({'domains': conf['hosts']})) @@ -98,21 +102,19 @@ def subcommand_pre_install(arguments): def subcommand_setup(arguments): """Enabled LDAP authentication""" with open(EJABBERD_CONFIG, 'r') as file_handle: - conf = ruamel.yaml.round_trip_load(file_handle, preserve_quotes=True) + conf = yaml.load(file_handle) for listen_port in conf['listen']: if 'tls' in listen_port: listen_port['tls'] = False conf['auth_method'] = 'ldap' - conf['ldap_servers'] = [ - ruamel.yaml.scalarstring.DoubleQuotedScalarString('localhost') - ] - conf['ldap_base'] = ruamel.yaml.scalarstring.DoubleQuotedScalarString( + conf['ldap_servers'] = [scalarstring.DoubleQuotedScalarString('localhost')] + conf['ldap_base'] = scalarstring.DoubleQuotedScalarString( 'ou=users,dc=thisbox') with open(EJABBERD_CONFIG, 'w') as file_handle: - ruamel.yaml.round_trip_dump(conf, file_handle) + yaml.dump(conf, file_handle) upgrade_config(arguments.domainname) @@ -129,7 +131,7 @@ def upgrade_config(domain): print('Warning: Unable to get ejabberd version.') with open(EJABBERD_CONFIG, 'r') as file_handle: - conf = ruamel.yaml.round_trip_load(file_handle, preserve_quotes=True) + conf = yaml.load(file_handle) # Check if `iqdisc` is present and remove it if 'mod_mam' in conf['modules'] and \ @@ -154,7 +156,7 @@ def upgrade_config(domain): cert_dir = pathlib.Path('/etc/ejabberd/letsencrypt') / domain cert_file = str(cert_dir / 'ejabberd.pem') - cert_file = ruamel.yaml.scalarstring.DoubleQuotedScalarString(cert_file) + cert_file = scalarstring.DoubleQuotedScalarString(cert_file) conf['s2s_certfile'] = cert_file for listen_port in conf['listen']: if 'certfile' in listen_port: @@ -162,7 +164,7 @@ def upgrade_config(domain): # Write changes back to the file with open(EJABBERD_CONFIG, 'w') as file_handle: - ruamel.yaml.round_trip_dump(conf, file_handle) + yaml.dump(conf, file_handle) def subcommand_pre_change_hostname(arguments): @@ -225,22 +227,21 @@ def subcommand_add_domain(arguments): # Add updated domainname to ejabberd hosts list. with open(EJABBERD_CONFIG, 'r') as file_handle: - conf = ruamel.yaml.round_trip_load(file_handle, preserve_quotes=True) + conf = yaml.load(file_handle) - conf['hosts'].append( - ruamel.yaml.scalarstring.DoubleQuotedScalarString(domainname)) + conf['hosts'].append(scalarstring.DoubleQuotedScalarString(domainname)) conf['hosts'] = list(set(conf['hosts'])) with open(EJABBERD_CONFIG, 'w') as file_handle: - ruamel.yaml.round_trip_dump(conf, file_handle) + yaml.dump(conf, file_handle) def subcommand_mam(argument): """Enable, disable, or get status of Message Archive Management (MAM).""" with open(EJABBERD_CONFIG, 'r') as file_handle: - conf = ruamel.yaml.round_trip_load(file_handle, preserve_quotes=True) + conf = yaml.load(file_handle) if 'modules' not in conf: print('Found no "modules" entry in ejabberd configuration file.') @@ -278,7 +279,7 @@ def subcommand_mam(argument): return with open(EJABBERD_CONFIG, 'w') as file_handle: - ruamel.yaml.round_trip_dump(conf, file_handle) + yaml.dump(conf, file_handle) if action_utils.service_is_running('ejabberd'): subprocess.call(['ejabberdctl', 'reload_config']) diff --git a/actions/gitweb b/actions/gitweb index 023b2c269..4393d48f8 100755 --- a/actions/gitweb +++ b/actions/gitweb @@ -12,6 +12,7 @@ import os import re import shutil import subprocess +import sys import time from plinth import action_utils @@ -23,6 +24,7 @@ logger = logging.getLogger(__name__) class ValidateRepoName(argparse.Action): """Validate a repository name and add .git extension if necessary.""" + def __call__(self, parser, namespace, values, option_string=None): RepositoryValidator()(values) if not values.endswith('.git'): @@ -32,6 +34,7 @@ class ValidateRepoName(argparse.Action): class ValidateRepoUrl(argparse.Action): """Validate a repository URL.""" + def __call__(self, parser, namespace, values, option_string=None): RepositoryValidator(input_should_be='url')(values) setattr(namespace, self.dest, values) @@ -86,6 +89,18 @@ def parse_arguments(): subparser.add_argument('--newname', required=True, action=ValidateRepoName, help='New name of the repository') + subparser = subparsers.add_parser( + 'set-default-branch', help='Set default branch of the repository') + subparser.add_argument('--name', required=True, action=ValidateRepoName, + help='Name of the repository') + subparser.add_argument('--branch', required=True, + help='Name of the branch') + + subparser = subparsers.add_parser( + 'get-branches', help='Get all the branches of the repository') + subparser.add_argument('--name', required=True, action=ValidateRepoName, + help='Name of the repository') + subparser = subparsers.add_parser('set-repo-description', help='Set description of the repository') subparser.add_argument('--name', required=True, action=ValidateRepoName, @@ -245,7 +260,7 @@ def _create_repo(arguments): """Create an empty repository.""" repo = arguments.name try: - subprocess.check_call(['git', 'init', '--bare', repo], + subprocess.check_call(['git', 'init', '-q', '--bare', repo], cwd=GIT_REPO_PATH) if not arguments.keep_ownership: subprocess.check_call(['chown', '-R', 'www-data:www-data', repo], @@ -261,6 +276,15 @@ def _create_repo(arguments): raise +def _get_default_branch(repo): + """Get default branch of the repository.""" + repo_path = os.path.join(GIT_REPO_PATH, repo) + + return subprocess.check_output( + ['git', '-C', repo_path, 'symbolic-ref', '--short', + 'HEAD']).decode().strip() + + def _get_repo_description(repo): """Set description of the repository.""" description_file = os.path.join(GIT_REPO_PATH, repo, 'description') @@ -325,6 +349,25 @@ def _set_access_status(repo, status): os.remove(private_file) +def _get_branches(repo): + """Return list of the branches in the repository.""" + output = subprocess.check_output( + ['git', '-C', repo, 'branch', '--format=%(refname:short)'], + cwd=GIT_REPO_PATH) + + return output.decode().strip().split() + + +def subcommand_get_branches(arguments): + """Check whether a branch exists in the repository.""" + repo = arguments.name + + print( + json.dumps( + dict(default_branch=_get_default_branch(repo), + branches=_get_branches(repo)))) + + def subcommand_rename_repo(arguments): """Rename a repository.""" oldpath = os.path.join(GIT_REPO_PATH, arguments.oldname) @@ -332,6 +375,20 @@ def subcommand_rename_repo(arguments): os.rename(oldpath, newpath) +def subcommand_set_default_branch(arguments): + """Set description of the repository.""" + repo = arguments.name + branch = arguments.branch + + if branch not in _get_branches(repo): + sys.exit('No such branch.') + + subprocess.check_call([ + 'git', '-C', repo, 'symbolic-ref', 'HEAD', + "refs/heads/{}".format(branch) + ], cwd=GIT_REPO_PATH) + + def subcommand_set_repo_description(arguments): """Set description of the repository.""" _set_repo_description(arguments.name, arguments.description) @@ -355,10 +412,13 @@ def subcommand_repo_info(arguments): print( json.dumps( - dict(name=arguments.name[:-4], - description=_get_repo_description(arguments.name), - owner=_get_repo_owner(arguments.name), - access=_get_access_status(arguments.name)))) + dict( + name=arguments.name[:-4], + description=_get_repo_description(arguments.name), + owner=_get_repo_owner(arguments.name), + access=_get_access_status(arguments.name), + default_branch=_get_default_branch(arguments.name), + ))) def subcommand_create_repo(arguments): diff --git a/actions/ikiwiki b/actions/ikiwiki index 471297407..6824f85c9 100755 --- a/actions/ikiwiki +++ b/actions/ikiwiki @@ -46,6 +46,11 @@ def parse_arguments(): return parser.parse_args() +def _is_safe_path(basedir, path): + """Return whether a path is safe.""" + return os.path.realpath(path).startswith(basedir) + + def subcommand_setup(_): """Perform first time setup operations.""" setup() @@ -106,6 +111,11 @@ def subcommand_delete(arguments): html_folder = os.path.join(SITE_PATH, arguments.name) wiki_folder = os.path.join(WIKI_PATH, arguments.name) + if not (_is_safe_path(SITE_PATH, html_folder) + and _is_safe_path(WIKI_PATH, wiki_folder)): + print('Error: {0} is not a correct name.'.format(arguments.name)) + exit(1) + try: shutil.rmtree(html_folder) shutil.rmtree(wiki_folder) diff --git a/actions/infinoted b/actions/infinoted index 8542eabfa..ebf92a851 100755 --- a/actions/infinoted +++ b/actions/infinoted @@ -144,7 +144,7 @@ def subcommand_setup(_): except KeyError: subprocess.run(['addgroup', '--system', 'infinoted'], check=True) - # Create infinoted user is needed. + # Create infinoted user if needed. try: pwd.getpwnam('infinoted') except KeyError: diff --git a/actions/matrixsynapse b/actions/matrixsynapse index c1637a638..5dc5b1bb4 100755 --- a/actions/matrixsynapse +++ b/actions/matrixsynapse @@ -5,11 +5,33 @@ Configuration helper for Matrix-Synapse server. """ import argparse +import pathlib import yaml from plinth import action_utils -from plinth.modules.matrixsynapse import CONFIG_FILE_PATH +from plinth.modules.matrixsynapse import (LISTENERS_CONF_PATH, ORIG_CONF_PATH, + REGISTRATION_CONF_PATH, + STATIC_CONF_PATH) + +STATIC_CONFIG = { + 'max_upload_size': + '100M', + 'password_providers': [{ + 'module': 'ldap_auth_provider.LdapAuthProvider', + 'config': { + 'enabled': True, + 'uri': 'ldap://localhost:389', + 'start_tls': False, + 'base': 'ou=users,dc=thisbox', + 'attributes': { + 'uid': 'uid', + 'name': 'uid', + 'mail': '', + }, + }, + }, ], +} def parse_arguments(): @@ -27,41 +49,31 @@ def parse_arguments(): '--domain-name', help='The domain name that will be used by Matrix Synapse') + subparsers.add_parser( + 'move-old-conf', + help='Move old configuration file to backup before reinstall') + subparsers.required = True return parser.parse_args() def subcommand_post_install(_): """Perform post installation configuration.""" - with open(CONFIG_FILE_PATH) as config_file: - config = yaml.load(config_file) + with open(STATIC_CONF_PATH, 'w') as static_conf_file: + yaml.dump(STATIC_CONFIG, static_conf_file) - config['max_upload_size'] = '100M' + # start with listener config from original homeserver.yaml + with open(ORIG_CONF_PATH) as orig_conf_file: + orig_config = yaml.load(orig_conf_file) - for listener in config['listeners']: + listeners = orig_config['listeners'] + for listener in listeners: if listener['port'] == 8448: listener['bind_addresses'] = ['::', '0.0.0.0'] listener.pop('bind_address', None) - # Setup ldap parameters - config['password_providers'] = [{}] - config['password_providers'][0][ - 'module'] = 'ldap_auth_provider.LdapAuthProvider' - ldap_config = { - 'enabled': True, - 'uri': 'ldap://localhost:389', - 'start_tls': False, - 'base': 'ou=users,dc=thisbox', - 'attributes': { - 'uid': 'uid', - 'name': 'uid', - 'mail': '' - } - } - config['password_providers'][0]['config'] = ldap_config - - with open(CONFIG_FILE_PATH, 'w') as config_file: - yaml.dump(config, config_file) + with open(LISTENERS_CONF_PATH, 'w') as listeners_conf_file: + yaml.dump({'listeners': listeners}, listeners_conf_file) def subcommand_setup(arguments): @@ -73,8 +85,17 @@ def subcommand_setup(arguments): def subcommand_public_registration(argument): """Enable/Disable/Status public user registration.""" - with open(CONFIG_FILE_PATH) as config_file: - config = yaml.load(config_file) + try: + with open(REGISTRATION_CONF_PATH) as reg_conf_file: + config = yaml.load(reg_conf_file) + except FileNotFoundError: + # Check if its set in original conffile. + with open(ORIG_CONF_PATH) as orig_conf_file: + orig_config = yaml.load(orig_conf_file) + config = { + 'enable_registration': + orig_config.get('enable_registration', False) + } if argument.command == 'status': if config['enable_registration']: @@ -88,13 +109,21 @@ def subcommand_public_registration(argument): elif argument.command == 'disable': config['enable_registration'] = False - with open(CONFIG_FILE_PATH, 'w') as config_file: - yaml.dump(config, config_file) + with open(REGISTRATION_CONF_PATH, 'w') as reg_conf_file: + yaml.dump(config, reg_conf_file) if action_utils.service_is_running('matrix-synapse'): action_utils.service_restart('matrix-synapse') +def subcommand_move_old_conf(_arguments): + """Move old configuration to backup so it can be restored by reinstall.""" + conf_file = pathlib.Path(ORIG_CONF_PATH) + if conf_file.exists(): + backup_file = conf_file.with_suffix(conf_file.suffix + '.fbx-bak') + conf_file.replace(backup_file) + + def main(): arguments = parse_arguments() sub_command = arguments.subcommand.replace('-', '_') diff --git a/actions/packages b/actions/packages index d7112413c..e98706224 100755 --- a/actions/packages +++ b/actions/packages @@ -40,6 +40,12 @@ def parse_arguments(): subparser.add_argument( '--force-configuration', choices=['new', 'old'], help='force old/new configuration files during install') + subparser.add_argument( + '--reinstall', action='store_true', + help='force re-installation of package even if it is current') + subparser.add_argument( + '--force-missing-configuration', action='store_true', + help='force installation of missing configuration files') subparser.add_argument( 'module', help='name of module for which package is being installed') subparser.add_argument('packages', nargs='+', @@ -94,6 +100,12 @@ def subcommand_install(arguments): elif arguments.force_configuration == 'new': extra_arguments += ['-o', 'Dpkg::Options::=--force-confnew'] + if arguments.reinstall: + extra_arguments.append('--reinstall') + + if arguments.force_missing_configuration: + extra_arguments += ['-o', 'Dpkg::Options::=--force-confmiss'] + subprocess.run(['dpkg', '--configure', '-a']) with _apt_hold(): run_apt_command(['--fix-broken', 'install']) diff --git a/actions/radicale b/actions/radicale index ad54de786..4c745e5d8 100755 --- a/actions/radicale +++ b/actions/radicale @@ -6,21 +6,13 @@ Configuration helper for Radicale. import argparse import os -import shutil -import subprocess -import tempfile import augeas from plinth import action_utils -from plinth.modules import radicale - -COLLECTIONS_PATH = '/var/lib/radicale/collections' -LOG_PATH = '/var/log/radicale' CONFIG_FILE = '/etc/radicale/config' - -DEFAULT_FILE = '/etc/default/radicale' +LOG_PATH = '/var/log/radicale' def parse_arguments(): @@ -28,89 +20,32 @@ def parse_arguments(): parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') - subparsers.add_parser('setup', help='Setup Radicale configuration') - subparsers.add_parser('migrate', help='Migrate config to radicale 2.x') - subparsers.add_parser('fix-collections', - help='Ensure collections path exists') configure = subparsers.add_parser('configure', help='Configure various options') configure.add_argument('--rights_type', help='Set the rights type for radicale') + subparsers.add_parser('fix-paths', help='Ensure paths exists') subparsers.required = True return parser.parse_args() -def subcommand_setup(_): - """Setup Radicale configuration.""" - current_version = radicale.get_package_version() - if not current_version: - print('Warning: Unable to get radicale version.') - - aug = load_augeas() - - if current_version and current_version < radicale.VERSION_2: - aug.set('/files' + DEFAULT_FILE + '/ENABLE_RADICALE', 'yes') - aug.set('/files' + CONFIG_FILE + '/server/hosts', - '127.0.0.1:5232, [::1]:5232') - aug.set('/files' + CONFIG_FILE + '/server/base_prefix', '/radicale/') - aug.set('/files' + CONFIG_FILE + '/well-known/caldav', - '/radicale/%(user)s/caldav/') - aug.set('/files' + CONFIG_FILE + '/well-known/carddav', - '/radicale/%(user)s/carddav/') - aug.set('/files' + CONFIG_FILE + '/auth/type', 'remote_user') - aug.set('/files' + CONFIG_FILE + '/rights/type', 'owner_only') - - aug.save() - - -def subcommand_migrate(_): - """Migrate from radicale 1.x to 2.x.""" - current_version = radicale.get_package_version() - - # Migrate data from radicale 1.x to radicale 2.x format. - if current_version and current_version < radicale.VERSION_2: - with tempfile.TemporaryDirectory() as temp_directory: - export_location = os.path.join(temp_directory, 'radicale-export') - subprocess.run(['radicale', '--export-storage', export_location], - check=True) - collection_root = os.path.join(export_location, 'collection-root') - shutil.copytree(collection_root, - os.path.join(COLLECTIONS_PATH, 'collection-root')) - subprocess.run( - ['chown', '-R', 'radicale:radicale', COLLECTIONS_PATH], - check=True) - - action_utils.webserver_disable('radicale-plinth') - - def subcommand_configure(arguments): """Sets the radicale rights type to a particular value""" - current_version = radicale.get_package_version() - if not current_version: - print('Warning: Unable to get radicale version.') - - if current_version and current_version >= radicale.VERSION_2: - if arguments.rights_type == 'owner_only': - # Radicale 2.x default rights file is equivalent to owner_only. - arguments.rights_type = 'from_file' + if arguments.rights_type == 'owner_only': + # Default rights file is equivalent to owner_only. + arguments.rights_type = 'from_file' aug = load_augeas() aug.set('/files' + CONFIG_FILE + '/rights/type', arguments.rights_type) aug.save() - if current_version and current_version >= radicale.VERSION_2: - action_utils.service_try_restart('uwsgi') - else: - action_utils.service_try_restart('radicale') + action_utils.service_try_restart('uwsgi') -def subcommand_fix_collections(_): - """Fix collections path to work around a bug.""" - # Workaround for bug in radicale's uwsgi script (#919339) - if not os.path.exists(COLLECTIONS_PATH): - os.makedirs(COLLECTIONS_PATH) - +def subcommand_fix_paths(_): + """Fix log path to work around a bug.""" + # Workaround for bug in radicale's uwsgi script (#931201) if not os.path.exists(LOG_PATH): os.makedirs(LOG_PATH) @@ -120,10 +55,6 @@ def load_augeas(): aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) - # shell-script config file lens - aug.set('/augeas/load/Shellvars/lens', 'Shellvars.lns') - aug.set('/augeas/load/Shellvars/incl[last() + 1]', DEFAULT_FILE) - # INI file lens aug.set('/augeas/load/Puppet/lens', 'Puppet.lns') aug.set('/augeas/load/Puppet/incl[last() + 1]', CONFIG_FILE) diff --git a/actions/ssh b/actions/ssh index ab4595bdc..d2aee9319 100755 --- a/actions/ssh +++ b/actions/ssh @@ -26,12 +26,12 @@ def parse_arguments(): get_keys = subparsers.add_parser('get-keys', help='Get SSH authorized keys') - get_keys.add_argument('--username') + get_keys.add_argument('--username', required=True, type=_managed_user) set_keys = subparsers.add_parser('set-keys', help='Set SSH authorized keys') - set_keys.add_argument('--username') - set_keys.add_argument('--keys') + set_keys.add_argument('--username', required=True, type=_managed_user) + set_keys.add_argument('--keys', required=True) subparsers.add_parser('get-password-config', help='Get SSH password auth configuration') @@ -44,6 +44,14 @@ def parse_arguments(): return parser.parse_args() +def _managed_user(username): + """Raise an error if the user is root.""" + if pwd.getpwnam(username).pw_gid == 0: + msg = 'User {} is not managed by FreedomBox'.format(username) + raise argparse.ArgumentTypeError(msg) + return username + + def subcommand_setup(arguments): """Setup Open SSH server. diff --git a/actions/storage b/actions/storage index bf818d3de..9ed372117 100755 --- a/actions/storage +++ b/actions/storage @@ -76,10 +76,31 @@ def subcommand_expand_partition(arguments): file=sys.stderr) sys.exit(4) + if requested_partition['table_type'] == 'gpt': + _move_gpt_second_header(device) + _resize_partition(device, requested_partition, free_space) _resize_file_system(device, requested_partition, free_space) +def _move_gpt_second_header(device): + """Move second header to the end of the disk. + + GPT scheme has two mostly identical partition table headers. One at the + beginning of the disk and one at the end. When an image is written to + larger disk, the second header is not at the end of the disk. Fix that by + moving second partition to end of the disk before attempting partition + resize. + + """ + command = ['sgdisk', '--move-second-header', device] + try: + subprocess.run(command, check=True) + except subprocess.CalledProcessError: + print('Error moving GPT second header to the end') + sys.exit(6) + + def _resize_partition(device, requested_partition, free_space): """Resize the partition table entry.""" command = [ diff --git a/actions/syncthing b/actions/syncthing index 857195499..ce531f191 100755 --- a/actions/syncthing +++ b/actions/syncthing @@ -33,7 +33,7 @@ def subcommand_setup(_): except KeyError: subprocess.run(['addgroup', '--system', 'syncthing'], check=True) - # Create syncthing user is needed. + # Create syncthing user if needed. try: pwd.getpwnam('syncthing') except KeyError: diff --git a/actions/upgrades b/actions/upgrades index f96ba270c..c3c8e9975 100755 --- a/actions/upgrades +++ b/actions/upgrades @@ -13,22 +13,26 @@ import sys from plinth.action_utils import run_apt_command from plinth.modules.apache.components import check_url +from plinth.modules.upgrades import (get_current_release, is_backports_current, + SOURCES_LIST) AUTO_CONF_FILE = '/etc/apt/apt.conf.d/20auto-upgrades' LOG_FILE = '/var/log/unattended-upgrades/unattended-upgrades.log' DPKG_LOG_FILE = '/var/log/unattended-upgrades/unattended-upgrades-dpkg.log' -BUSTER_BACKPORTS_RELEASE_FILE_URL = \ - 'https://deb.debian.org/debian/dists/buster-backports/Release' +BACKPORTS_RELEASE_FILE_URL = \ + 'https://deb.debian.org/debian/dists/{}-backports/Release' + +APT_PREFERENCES_FREEDOMBOX = '''Explanation: This file is managed by FreedomBox, do not edit. +Explanation: Allow carefully selected updates to 'freedombox' from backports. +Package: freedombox +Pin: release a={}-backports +Pin-Priority: 500 +''' # Whenever these preferences needs to change, increment the version number # upgrades app. This ensures that setup is run again and the new contents are # overwritten on the old file. -APT_PREFERENCES = '''Explanation: This file is managed by FreedomBox, do not edit. -Explanation: Allow carefully selected updates to 'freedombox' from backports. -Package: freedombox -Pin: release a=buster-backports -Pin-Priority: 500 - +APT_PREFERENCES_APPS = '''Explanation: This file is managed by FreedomBox, do not edit. Explanation: matrix-synapse 0.99.5 introduces room version 4. Older version Explanation: 0.99.2 in buster won't be able join newly created rooms. Package: matrix-synapse @@ -59,6 +63,16 @@ Explanation: python3-twisted requires matching version of python3-twisted-bin Package: python3-twisted-bin Pin: release a=buster-backports Pin-Priority: 500 + +Explanation: matrix-synapse >= 1.16 requires python3-attr >= 19.1.0~ +Package: python3-attr +Pin: release a=buster-backports +Pin-Priority: 500 + +Explanation: matrix-synapse >= 1.19 requires python3-canonicaljson >= 1.2.0 +Package: python3-canonicaljson +Pin: release a=buster-backports +Pin-Priority: 500 ''' @@ -75,8 +89,12 @@ def parse_arguments(): subparsers.add_parser('get-log', help='Print the automatic upgrades log') subparsers.add_parser('setup', help='Setup apt preferences') - subparsers.add_parser('setup-repositories', - help='Setup software repositories for FreedomBox') + setup_repositories = subparsers.add_parser( + 'setup-repositories', + help='Setup software repositories for FreedomBox') + setup_repositories.add_argument('--develop', required=False, default=False, + action='store_true', + help='Development mode') subparsers.required = True return parser.parse_args() @@ -162,37 +180,37 @@ def _get_protocol(): return 'http' -def _is_release_file_available(protocol): +def _is_release_file_available(protocol, dist): """Return whether the release for backports is available.""" wrapper = None if protocol == 'tor+http': wrapper = 'torsocks' - result = check_url(BUSTER_BACKPORTS_RELEASE_FILE_URL, wrapper=wrapper) + result = check_url(BACKPORTS_RELEASE_FILE_URL.format(dist), + wrapper=wrapper) return result == 'passed' -def _add_buster_backports_sources(sources_list, protocol): - """Add buster backports sources to freedombox repositories list.""" +def _add_backports_sources(sources_list, protocol, dist): + """Add backports sources to freedombox repositories list.""" sources = '''# This file is managed by FreedomBox, do not edit. # Allow carefully selected updates to 'freedombox' from backports. -deb {protocol}://deb.debian.org/debian buster-backports main -deb-src {protocol}://deb.debian.org/debian buster-backports main +deb {protocol}://deb.debian.org/debian {dist}-backports main +deb-src {protocol}://deb.debian.org/debian {dist}-backports main ''' - sources = sources.format(protocol=protocol) + sources = sources.format(protocol=protocol, dist=dist) with open(sources_list, 'w') as file_handle: file_handle.write(sources) -def _check_and_backports_sources(): - """Add buster backports sources after checking if it is available.""" +def _check_and_backports_sources(develop=False): + """Add backports sources after checking if it is available.""" old_sources_list = '/etc/apt/sources.list.d/freedombox.list' if os.path.exists(old_sources_list): os.remove(old_sources_list) - sources_list = '/etc/apt/sources.list.d/freedombox2.list' - if os.path.exists(sources_list): + if is_backports_current(): print('Repositories list up-to-date. Skipping update.') return @@ -211,9 +229,8 @@ def _check_and_backports_sources(): 'backports.') return - release = subprocess.check_output(['lsb_release', '--release', - '--short']).decode().strip() - if release in ['testing', 'unstable']: + release, dist = get_current_release() + if release == 'unstable' or (release == 'testing' and not develop): print(f'System release is {release}. Skip enabling backports.') return @@ -221,12 +238,14 @@ def _check_and_backports_sources(): if protocol == 'tor+http': print('Package download over Tor is enabled.') - if not _is_release_file_available(protocol): - print('Release file for Buster backports is not available yet.') + if not _is_release_file_available(protocol, dist): + print(f'Release file for {dist}-backports is not available yet.') return - print('Buster backports is now available. Adding to sources.') - _add_buster_backports_sources(sources_list, protocol) + print(f'{dist}-backports is now available. Adding to sources.') + _add_backports_sources(SOURCES_LIST, protocol, dist) + # In case of dist upgrade, rewrite the preferences file. + _add_apt_preferences() def _add_apt_preferences(): @@ -240,8 +259,16 @@ def _add_apt_preferences(): # Don't try to remove 50freedombox3.pref as this file is shipped with the # Debian package and is removed using maintainer scripts. - with open(base_path / '50freedombox4.pref', 'w') as file_handle: - file_handle.write(APT_PREFERENCES) + _, dist = get_current_release() + if dist == 'sid': + print(f'System distribution is {dist}. Skip setting apt preferences ' + 'for backports.') + else: + print(f'Setting apt preferences for {dist}-backports.') + with open(base_path / '50freedombox4.pref', 'w') as file_handle: + file_handle.write(APT_PREFERENCES_FREEDOMBOX.format(dist)) + with open(base_path / '51freedombox-apps.pref', 'w') as file_handle: + file_handle.write(APT_PREFERENCES_APPS) def subcommand_setup(_): @@ -249,14 +276,14 @@ def subcommand_setup(_): _add_apt_preferences() -def subcommand_setup_repositories(_): +def subcommand_setup_repositories(arguments): """Setup software repositories needed for FreedomBox. Repositories list for now only contains the backports. If the file exists, assume that it contains backports. """ - _check_and_backports_sources() + _check_and_backports_sources(arguments.develop) def main(): diff --git a/container b/container index 2829b819d..b82276da2 100755 --- a/container +++ b/container @@ -112,23 +112,29 @@ in /run/systemd/nspawn. All machinectl commands should work. """ import argparse +import datetime import ipaddress import itertools import json import logging import os import pathlib +import re import subprocess import sys import tempfile import time import urllib.parse +from urllib.request import urlopen + URLS = { 'stable': 'https://ftp.freedombox.org/pub/freedombox/hardware/' 'amd64/stable/freedombox-stable-free_buster_all-amd64.img.xz', 'testing': 'https://ftp.freedombox.org/pub/freedombox/hardware/' - 'amd64/testing/freedombox-testing-free_latest_all-amd64.img.xz', + 'amd64/testing/freedombox-testing-free_dev_all-amd64.img.xz', + 'unstable': 'https://ftp.freedombox.org/pub/freedombox/hardware/' + 'amd64/nightly/freedombox-unstable-free_dev_all-amd64.img.xz', } TRUSTED_KEYS = ['013D86D8BA32EAB4A6691BF85D4153D6FE188FC8'] @@ -172,33 +178,42 @@ def parse_arguments(): parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') + distributions = list(URLS.keys()) + # Up subparser = subparsers.add_parser('up', help='Bring up the container') subparser.add_argument( - '--distribution', choices=['stable', 'testing'], default='testing', + '--distribution', choices=distributions, default='testing', help='Distribution of the image to download and setup') subparser.add_argument('--image-size', default='8G', help='Disk image size to resize to after download') # ssh subparser = subparsers.add_parser('ssh', help='SSH into the container') - subparser.add_argument('--distribution', choices=['stable', 'testing'], + subparser.add_argument('--distribution', choices=distributions, default='testing', help='Distribution of the container to SSH into') # Stop subparser = subparsers.add_parser('stop', help='Stop the container') - subparser.add_argument('--distribution', choices=['stable', 'testing'], + subparser.add_argument('--distribution', choices=distributions, default='testing', help='Distribution of the container to stop') # Destroy subparser = subparsers.add_parser('destroy', help='Destroy the container image') - subparser.add_argument('--distribution', choices=['stable', 'testing'], + subparser.add_argument('--distribution', choices=distributions, default='testing', help='Distribution of the image to delete') + # Update + subparser = subparsers.add_parser( + 'update', help='Update the container image to the latest version') + subparser.add_argument('--distribution', choices=distributions, + default='testing', + help='Distribution of the image to update') + return parser.parse_args() @@ -269,11 +284,14 @@ def _get_systemd_nspawn_version(): systemd_version = float(process.stdout.decode().split()[1]) -def _download_file(url, target_file): +def _download_file(url, target_file, force=False): """Download a file from remote URL.""" - if target_file.exists(): + if target_file.exists() and not force: return + if force: + os.remove(target_file) + partial_file = target_file.with_suffix(target_file.suffix + '.partial') logger.info('Downloading %s', target_file) @@ -362,17 +380,17 @@ def _get_overlay_folder(distribution): return folder.resolve() -def _download_disk_image(distribution): +def _download_disk_image(distribution, force=False): """Download and unpack FreedomBox disk image.""" work_directory.mkdir(exist_ok=True) url = URLS[distribution] target_file = _get_compressed_image_path(distribution) - _download_file(url, target_file) + _download_file(url, target_file, force=force) signature_file = target_file.with_suffix(target_file.suffix + '.sig') - _download_file(url + '.sig', signature_file) + _download_file(url + '.sig', signature_file, force=force) _verify_signature(target_file, signature_file) @@ -401,6 +419,8 @@ def _resize_disk_image(image_file, new_size): ['sudo', 'kpartx', '-avs', str(image_file)], stdout=subprocess.PIPE, check=True) partition = '/dev/mapper/' + process.stdout.decode().split()[2] + subprocess.run(['sudo', 'btrfstune', '-uf', partition], check=True) + with tempfile.TemporaryDirectory( dir=work_directory.resolve()) as mount_point: subprocess.run(['sudo', 'mount', partition, mount_point], check=True) @@ -432,6 +452,18 @@ def _runc(image_file, command, **kwargs): **kwargs) +def _get_interface_name(distribution): + """Return the name of the interface.""" + interface = f've-fbx-{distribution}' + process = subprocess.run(['systemd-nspawn', '--version'], + stdout=subprocess.PIPE, check=True) + version = process.stdout.decode().splitlines()[0].split()[1] + if int(float(version)) < 245: + return interface[:14] + + return interface + + def _setup_nm_connection(distribution): """Create a network manager conn. on host for DHCP/DNS with container.""" connection_name = f'fbx-{distribution}-shared' @@ -446,7 +478,7 @@ def _setup_nm_connection(distribution): properties = { 'connection.id': connection_name, 'connection.type': '802-3-ethernet', - 'connection.interface-name': f've-fbx-{distribution}', + 'connection.interface-name': _get_interface_name(distribution), 'connection.autoconnect': 'yes', 'ipv4.method': 'shared', } @@ -738,7 +770,7 @@ def _get_ssh_command(ip_address, distribution): """Exec an SSH command.""" public_key = work_directory / 'ssh' / 'id_ed25519' if ipaddress.ip_address(ip_address).is_link_local: - ip_address = f'{ip_address}%ve-fbx-{distribution}' + ip_address = f'{ip_address}%' + _get_interface_name(distribution) return [ 'ssh', '-i', @@ -761,6 +793,25 @@ def _wait_for(method): sys.exit(1) +def _get_latest_image_timestamp(distribution): + """Get the timestamp of the latest available image.""" + url = URLS[distribution] + response = urlopen(url[0:url.rindex('/')]) + page_contents = response.read().decode() + str_time = re.findall(r'\d{2}-[A-Z][a-z]{2}-\d{4} \d{2}:\d{2}', + page_contents)[0] + return datetime.datetime.strptime(str_time, '%d-%b-%Y %H:%M').timestamp() + + +def _is_update_required(distribution): + """Compare local image timestamp against the latest image timestamp.""" + filename = URLS[distribution].split('/')[-1] + local_image_timestamp = os.path.getmtime(work_directory / filename) + one_day = datetime.timedelta(days=1).total_seconds() + latest_image_timestamp = _get_latest_image_timestamp(distribution) + return latest_image_timestamp - local_image_timestamp > one_day + + def subcommand_up(arguments): """Download, setup and bring up the container.""" machine_name = f'fbx-{arguments.distribution}' @@ -797,6 +848,15 @@ def subcommand_destroy(arguments): _destroy(arguments.distribution) +def subcommand_update(arguments): + """Update the disk image.""" + if _is_update_required(arguments.distribution): + logger.info("Updating...") + _download_disk_image(arguments.distribution, force=True) + else: + logger.info("Already using the latest image") + + def main(): """Parse arguments and perform operations.""" logging.basicConfig(level='INFO', format='> %(message)s') diff --git a/debian/changelog b/debian/changelog index 3e86bec82..223521224 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,264 @@ +plinth (20.14) unstable; urgency=high + + [ Fioddor Superconcentrado ] + * Translated using Weblate (Spanish) + * Translated using Weblate (Spanish) + * sudo user needed for container + * Branch-out + * Specify machine + * Fix typo + * post-processor: Solve 1908 fixing the wiki links fix + * Translated using Weblate (Spanish) + * Translated using Weblate (Spanish) + * jsxc, sharing: Add 'Learn more...' link for help pages + * wireguard: Add 'Learn more...' link for help page + * doc: wikiparser: Resolve URLs for locally available pages + * HACKING.md: Instructions for container-related troubleshooting + * i18n: Mark strings missed for translation + * snapshots: Clarify description for disabling yearly snapshots + + [ Doma Gergő ] + * Translated using Weblate (Hungarian) + * Translated using Weblate (Hungarian) + + [ Sunil Mohan Adapa ] + * upgrades: Minor isort fix + * upgrades: Remove unused context variable + * security: Don't show report button as part of backports notice + * upgrades: security: Don't with the technical term 'backports' in UI + * matrixsynapse: Allow upgrade to version 1.17 + * backups: Make app available by default + * samba: cosmetic: Minor yapf fixes + * container: unstable: Handle interface naming for systemd < 245 + * storage: Fix expanding partitions on GPT partition tables + * matrixsynapse: Rename Riot to Element + * ejabberd, mumble, wireguard: Update Apple app links + * menu: Update documentation to clarify that icons can be files + * frontpage: Fix documentation related to renamed parameter + * bepasty: Make description a private variable + * bepasty: Expand app description + * bepasty: Tighten permissions on the uwsgi socket + * infinoted, syncthing: Fix minor typo in a comment + * bepasty: Add diagnostics tests on app URL + * bepasty: Minor fixes + * bepasty: tests: functional: Add a password before removing all + * bepasty: Resize SVG to 512x512 for consistency with other icons + * bepasty: Add "Snippet" in category/short description + * bepasty: Update UI strings for permissions + * bepasty: Require at least one permission on a password + * bepasty: Simplify configuration file handling + * js: Don't show running status on buttons pulled to right + * diagnostics: Prevent showing running status on diagnostics menu item + * help, networks: Clarify i18n different contexts for "Manual" + * radicale: Stop service during backup and restore + * radicale: tests: functional: Add test for backup/restore + * doc: Recompile when parser script changes + * doc: wikiparser: Handle processing instructions + * doc: wikiparser: Fix attachment URLs in regular links + * doc: wikiparser: When processing single pages, ignore header/footer + * doc: wikiparser: Generate colspec for tables + * doc: wikiparser: Handle table of contents macro without parenthesis + * doc: wikiparser: Handle more paragraph breakers + * doc: wikiparser: Parse content inside a comment + * doc: wikiparser: Allow empty lines between list items + * doc: wikiparser: Fix parsing URLs, simplify plain text parsing + * doc: wikiparser: Resolve relative URLs + * doc: wikiparser: Preserve spaces during parsing and generation + * doc: wikiparser: Handle existing # in links, don't append again + * doc: wikiparser: Assign text to URLs that don't provide them + * doc: wikiparser: Handle wiki links starting with a / + * doc: wikiparser: Allow lists to started with just spaces + * doc: wikiparser: Strip spaces from attachment's text + * doc: wikiparser: Place anchors inside paragraphs + * doc: wikiparser: Sort imagedata properties + * doc: wikiparser: Retain the text for icons + * doc: wikiparser: Set icon dimensions to old values (temporarily) + * doc: wikiparser: Handle empty table cells + * doc: wikiparser: Fix some flake8 warnings + * doc: wikiparser: Improve links relative to included files + * doc: wikiparser: Fix issue with parsing inline code blocks + * doc: wikiparser: Handle markup inside italic/bold markup + * doc: wikiparser: Format text inside admonitions properly + * doc: Drop post processor as it is not needed anymore + * doc: wikiparser: Incorporate post processing fixes + * doc: Simplify make file by eliminating targets for intermediates + * doc: wikiparser: Add note about some incorrect links + * doc: Update the test script for wikiparser + * manual: Fetch latest images + * doc: Fetch latest manual + * firewall: Use service files for showing port forwarding info + * firewall: Show port forwarding info in tabular format + * kvstore: Allow module to be imported before Django init + * networks: Expose API to get/set network meta info + * firewall: Show port forwarding info contextually + * doc: wikiparser: Fix a minor flake8 issue + * doc: wikiparser: Fix issue with some URL containing dup. lang part + * doc: wikiparser: Make it easier to run with a #! at the top + * doc: wikiparser: Reduce build verbosity + * upgrades: Fix issue with checking if backports is current + * upgrades: Separate concepts for backports enabled vs. requested + * upgrades, security: Use consistent terminology 'activate' + * backports: When upgrading from older version, assumed requested + * package: Add ability to reinstall a package + * matrixsynapse: Perform a one time conversion to new config format + * doc: manual: Fetch latest manual, remove non-existent images/pages + * doc: wikiparser: Use icons from the icons directory + * doc: wikiparser: Show icons with full size + * doc: manual: Replace manual icons to drop CC 2.5 license + * deluge: Use older icon to drop CC 2.0 license + + [ Joseph Nuthalapati ] + * searx: Add functional test for app availability + * container: Add unstable distribution + * functional-tests: Fix instructions for running functional tests + * functional-tests: Use latest version of splinter + * framework: Remove module init() functions + * wireguard: Remove hardcoded Windows client version + * functional-tests: splinter 0.14.0 is in PyPI + * apps: Remove Coquelicot + * matrix-synapse: Upgrade to 1.19 + * container: Use builds with build-deps included + + [ James Valleroy ] + * ci: Allow fuse to be installed + * tests: functional: Strip trailing / from FREEDOMBOX_URL + * ejabberd: Use new ruamel.yaml API and allow duplicate keys + * locale: Update translation strings + * doc: Fetch latest manual + * debian: Add gbp dch config + * debian: Fix use of wildcard path in copyright + * debian: Split copyright paragraph to avoid lintian error + * radicale: Remove code to handle 1.x + * doc: Fetch latest manual + * bepasty: New app for file upload and sharing + * bepasty: Add public access config form + * bepasty: Fetch manual page + * locale: Update translation strings + * doc: Add moinmoin wiki parser + * wikiparser: Fix spaces, multi-line, languages, icons + * doc: Use Makefile to fetch raw wiki files + * doc: Add icons used in manual + * manual: Add raw wiki files of included pages + * manual: Remove checked-in xml files + * wikiparser: Don't render Admonition with style comment + * test-wikiparser: Remove fixes.xslt step + * debian: Add unit tests to autopkgtest + * apache: Disable mod_status (CVE-2020-25073) + * debian: Don't show first wizard secret on command line + * debian: Remove unused vars from postinst + * matrixsynapse: Use conf.d snippets + * upgrades: Change backports activation message wording + * upgrades: Display correct backports info for unstable + * upgrades: Add first boot step to configure backports + * upgrades: Use kvstore and then file to determine if backports are enabled + * debian: Temporarily revert source package rename + * locale: Update translation strings + * doc: Fetch latest manual + + [ Veiko Aasa ] + * samba: Hide common system partitions + * ikiwiki: Validate a path when deleting wiki or blog + * ssh: Disallow managing keys for the root user + * debian: Add newline to end of /var/lib/plinth/firstboot-wizard-secret + * functional-tests: snapshot: Skip if filesystem doesn't support snapshots + * container: Randomize btrfs partition UUID + * gitweb: Fix enable auth webserver component on app init + * gitweb: Add ability to change default branch + + [ Павел Протасов ] + * Translated using Weblate (Russian) + + [ Michael Breidenbach ] + * Translated using Weblate (German) + * Translated using Weblate (Swedish) + * Translated using Weblate (German) + * Translated using Weblate (Swedish) + * Translated using Weblate (German) + * Translated using Weblate (Swedish) + + [ ikmaak ] + * Translated using Weblate (Dutch) + * Translated using Weblate (Dutch) + + [ Burak Yavuz ] + * Translated using Weblate (Turkish) + * Translated using Weblate (Turkish) + * Translated using Weblate (Turkish) + * Translated using Weblate (Turkish) + + [ Xosé M ] + * Translated using Weblate (Galician) + + [ Jens Molgaard ] + * Translated using Weblate (Danish) + + [ Nikita Epifanov ] + * Translated using Weblate (Russian) + * Translated using Weblate (Russian) + + [ Dietmar ] + * Translated using Weblate (German) + + [ Johannes Keyser ] + * Translated using Weblate (German) + + [ Diego Roversi ] + * Translated using Weblate (Italian) + + [ Artem ] + * Translated using Weblate (Russian) + + [ Ralf Barkow ] + * Translated using Weblate (German) + + [ Reg Me ] + * Translated using Weblate (Dutch) + * Translated using Weblate (Dutch) + + [ Q.-A. Nick ] + * upgrades, security: Update the messages describing backports + + -- James Valleroy Tue, 15 Sep 2020 17:03:43 -0400 + +freedombox (20.13) unstable; urgency=medium + + [ Sunil Mohan Adapa ] + * Rename source package from plinth to freedombox. + + [ Veiko Aasa ] + * minidlna: Do not expose statistics over public web + + [ Benjamin Ortiz ] + * backups: Allow remote repository usernames to start with numbers + + [ James Valleroy ] + * upgrades: Update apt cache before manual update + * upgrades: Parameterize backports dist name + * upgrades: Use current release codename when enabling backports + * upgrades: Use codename to pin freedombox from backports + * security: Move backports notice to security page + * upgrades: Add button to activate backports + * upgrades: Use only sources file to determine if backports enabled + * upgrades: Check that backports is for current release + * upgrades: Rewrite apt prefs file when activating backports + * upgrades: Enable backports for testing only in development mode + * upgrades: Show dist of backports to be activated + * upgrades: Split apt preferences into 2 files + * upgrades: Refactor use of lsb_release + * locale: Update translation strings + * doc: Fetch latest manual + + [ Allan Nordhøy ] + * Translated using Weblate (Norwegian Bokmål) + + [ Tang Zongxun ] + * Translated using Weblate (Chinese (Simplified)) + + [ Doma Gergő ] + * Translated using Weblate (Hungarian) + + -- Federico Ceratto Sat, 18 Jul 2020 12:14:08 +0100 + plinth (20.12.1~bpo10+1) buster-backports; urgency=high * Rebuild for buster-backports. diff --git a/debian/control b/debian/control index daf96a30e..c3c10670d 100644 --- a/debian/control +++ b/debian/control @@ -72,6 +72,8 @@ Depends: e2fsprogs, fonts-fork-awesome, fonts-lato, +# sgdisk is used in storage app to expand GPT disks + gdisk, gettext, gir1.2-glib-2.0, gir1.2-nm-1.0, diff --git a/debian/copyright b/debian/copyright index 30063f136..3491ea7f6 100644 --- a/debian/copyright +++ b/debian/copyright @@ -2,8 +2,10 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Source: https://salsa.debian.org/freedombox-team/freedombox Files: * - static/themes/default/icons/coquelicot.svg - static/themes/default/icons/jsxc.png +Copyright: 2011-2020 FreedomBox Authors +License: AGPL-3+ + +Files: static/themes/default/icons/jsxc.png static/themes/default/icons/jsxc.svg static/themes/default/icons/mldonkey.svg Copyright: 2011-2019 FreedomBox Authors @@ -36,6 +38,11 @@ Copyright: Marie Van den Broeck (https://thenounproject.com/marie49/) Comment: https://thenounproject.com/icon/162372/ License: CC-BY-SA-3.0 +Files: static/themes/default/icons/bepasty.svg +Copyright: (c) 2014 by the Bepasty Team, see the AUTHORS file. +Comment: https://github.com/bepasty/bepasty-server/blob/master/src/bepasty/static/app/bepasty.svg +License: BSD-2-clause + Files: static/themes/default/icons/cockpit.svg Copyright: Cockpit Authors (https://github.com/cockpit-project/cockpit/blob/master/AUTHORS) Comment: https://github.com/cockpit-project/cockpit/blob/master/src/branding/default/logo.svg @@ -48,15 +55,11 @@ Comment: Video Call by Kmg Design from the Noun Project https://thenounproject.c License: CC-BY-3.0-US Files: static/themes/default/icons/deluge.png + static/themes/default/icons/deluge.svg Copyright: 2007 Andrew Wedderburn -Comment: https://upload.wikimedia.org/wikipedia/commons/thumb/8/85//Deluge-Logo.svg/2000px-Deluge-Logo.svg.png +Comment: https://commons.wikimedia.org/wiki/File:Deluge-Logo.svg License: GPL-2+ -Files: static/themes/default/icons/deluge.svg -Copyright: Jakub Steiner, Tuomas Kuosmanen -Comment: https://git.deluge-torrent.org/deluge/tree/deluge/ui/data/icons/hicolor/scalable/apps/deluge.svg -License: CC-BY-SA-2.0 - Files: static/themes/default/icons/diaspora.png static/themes/default/icons/diaspora.svg static/themes/default/icons/ejabberd.png @@ -66,7 +69,12 @@ Files: static/themes/default/icons/diaspora.png static/themes/default/icons/privoxy.png static/themes/default/icons/privoxy.svg static/themes/default/icons/radicale.svg - static/themes/default/img/network-* + static/themes/default/img/network-connection.svg + static/themes/default/img/network-connection-vertical.svg + static/themes/default/img/network-ethernet.svg + static/themes/default/img/network-internet.svg + static/themes/default/img/network-spacing.svg + static/themes/default/img/network-wireless.svg Copyright: None Comment: Placed into public domain by authors (or) Do not meet the threshold of originality @@ -77,6 +85,11 @@ Comment: Placed into public domain by authors (or) https://github.com/resiprocate/resiprocate/blob/master/resip/stack/doc/reSIProcate-logo.svg License: public-domain +Files: doc/manual/en/images/icons/* +Copyright: 2020 Adwaita Icon Theme Authors, GNOME Project +Comment: https://github.com/GNOME/adwaita-icon-theme/ http://www.gnome.org +License: LGPL-3 or CC-BY-SA-3.0-US + Files: static/themes/default/icons/f-droid.png static/themes/default/icons/f-droid.svg Copyright: 2012 William Theaker @@ -971,6 +984,27 @@ License: Apache-2.0 On Debian systems, the full text of the Apache Software License version 2 can be found in the file `/usr/share/common-licenses/Apache-2.0'. +License: BSD-2-clause + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + . + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + License: BSD-3-clause Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions @@ -1889,16 +1923,8 @@ License: CC-BY-3.0-US . Creative Commons may be contacted at https://creativecommons.org/. -License: CC-BY-SA-2.0 - Creative Commons Attribution-ShareAlike 2.0 - . - CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL - SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT - RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. - CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND - DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. - . - License +License: CC-BY-SA-3.0-US + Creative Commons Attribution-ShareAlike 3.0 United States . THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY @@ -1906,20 +1932,30 @@ License: CC-BY-SA-2.0 AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. . BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE - BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS - CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND - CONDITIONS. + BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE + CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE + IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. . 1. Definitions . a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with - a number of other contributions, constituting separate and independent works in + one or more other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. . - b. "Derivative Work" means a work based upon the Work or upon the Work and + b. "Creative Commons Compatible License" means a license that is listed at + https://creativecommons.org/compatiblelicenses that has been approved by + Creative Commons as being essentially equivalent to this License, including, at + a minimum, because that license: (i) contains terms that have the same purpose, + meaning and effect as the License Elements of this License; and, (ii) + explicitly permits the relicensing of derivatives of works made available under + that license under this License or either a Creative Commons unported license + or a Creative Commons jurisdiction license with the same License Elements as + this License. + . + c. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may @@ -1930,23 +1966,24 @@ License: CC-BY-SA-2.0 timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. . - c. "Licensor" means the individual or entity that offers the Work under the - terms of this License. + d. "License Elements" means the following high-level license attributes as + selected by Licensor and indicated in the title of this License: Attribution, + ShareAlike. . - d. "Original Author" means the individual or entity who created the Work. + e. "Licensor" means the individual, individuals, entity or entities that offers + the Work under the terms of this License. . - e. "Work" means the copyrightable work of authorship offered under the terms of + f. "Original Author" means the individual, individuals, entity or entities who + created the Work. + . + g. "Work" means the copyrightable work of authorship offered under the terms of this License. . - f. "You" means an individual or entity exercising rights under this License who + h. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. . - g. "License Elements" means the following high-level license attributes as - selected by Licensor and indicated in the title of this License: Attribution, - ShareAlike. - . 2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other @@ -1960,7 +1997,12 @@ License: CC-BY-SA-2.0 a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; . - b. to create and reproduce Derivative Works; + b. to create and reproduce Derivative Works provided that any such Derivative + Work, including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made to the + original Work. For example, a translation could be marked "The original work + was translated from English to Spanish," or a modification could indicate "The + original work has been modified."; . c. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work @@ -1969,15 +2011,16 @@ License: CC-BY-SA-2.0 d. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works. . - e. For the avoidance of doubt, where the work is a musical composition: + e. For the avoidance of doubt, where the Work is a musical composition: . i. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive - right to collect, whether individually or via a performance rights society - (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public - digital performance (e.g. webcast) of the Work. + right to collect, whether individually or, in the event that Licensor is a + member of a performance rights society (e.g. ASCAP, BMI, SESAC), via that + society, royalties for the public performance or public digital performance + (e.g. webcast) of the Work. . ii. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive - right to collect, whether individually or via a music rights society or + right to collect, whether individually or via a music rights agency or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or @@ -1996,7 +2039,7 @@ License: CC-BY-SA-2.0 media and formats. All rights not expressly granted by Licensor are hereby reserved. . - 4. Restrictions.The license granted in Section 3 above is expressly made + 4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: . a. You may distribute, publicly display, publicly perform, or publicly @@ -2004,68 +2047,93 @@ License: CC-BY-SA-2.0 include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose - any terms on the Work that alter or restrict the terms of this License or the - recipients' exercise of the rights granted hereunder. You may not sublicense - the Work. You must keep intact all notices that refer to this License and to - the disclaimer of warranties. You may not distribute, publicly display, - publicly perform, or publicly digitally perform the Work with any technological - measures that control access or use of the Work in a manner inconsistent with - the terms of this License Agreement. The above applies to the Work as - incorporated in a Collective Work, but this does not require the Collective - Work apart from the Work itself to be made subject to the terms of this - License. If You create a Collective Work, upon notice from any Licensor You - must, to the extent practicable, remove from the Collective Work any reference - to such Licensor or the Original Author, as requested. If You create a - Derivative Work, upon notice from any Licensor You must, to the extent - practicable, remove from the Derivative Work any reference to such Licensor or - the Original Author, as requested. + any terms on the Work that restrict the terms of this License or the ability of + a recipient of the Work to exercise of the rights granted to that recipient + under the terms of the License. You may not sublicense the Work. You must keep + intact all notices that refer to this License and to the disclaimer of + warranties. When You distribute, publicly display, publicly perform, or + publicly digitally perform the Work, You may not impose any technological + measures on the Work that restrict the ability of a recipient of the Work from + You to exercise of the rights granted to that recipient under the terms of the + License. This Section 4(a) applies to the Work as incorporated in a Collective + Work, but this does not require the Collective Work apart from the Work itself + to be made subject to the terms of this License. If You create a Collective + Work, upon notice from any Licensor You must, to the extent practicable, remove + from the Collective Work any credit as required by Section 4(c), as requested. + If You create a Derivative Work, upon notice from any Licensor You must, to the + extent practicable, remove from the Derivative Work any credit as required by + Section 4(c), as requested. . b. You may distribute, publicly display, publicly perform, or publicly - digitally perform a Derivative Work only under the terms of this License, a - later version of this License with the same License Elements as this License, - or a Creative Commons iCommons license that contains the same License Elements - as this License (e.g. Attribution-ShareAlike 2.0 Japan). You must include a - copy of, or the Uniform Resource Identifier for, this License or other license - specified in the previous sentence with every copy or phonorecord of each - Derivative Work You distribute, publicly display, publicly perform, or publicly - digitally perform. You may not offer or impose any terms on the Derivative - Works that alter or restrict the terms of this License or the recipients' - exercise of the rights granted hereunder, and You must keep intact all notices - that refer to this License and to the disclaimer of warranties. You may not - distribute, publicly display, publicly perform, or publicly digitally perform - the Derivative Work with any technological measures that control access or use - of the Work in a manner inconsistent with the terms of this License Agreement. - The above applies to the Derivative Work as incorporated in a Collective Work, - but this does not require the Collective Work apart from the Derivative Work - itself to be made subject to the terms of this License. + digitally perform a Derivative Work only under: (i) the terms of this License; + (ii) a later version of this License with the same License Elements as this + License; (iii) either the Creative Commons (Unported) license or a Creative + Commons jurisdiction license (either this or a later license version) that + contains the same License Elements as this License (e.g. Attribution-ShareAlike + 3.0 (Unported)); (iv) a Creative Commons Compatible License. If you license the + Derivative Work under one of the licenses mentioned in (iv), you must comply + with the terms of that license. If you license the Derivative Work under the + terms of any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable + License"), you must comply with the terms of the Applicable License generally + and with the following provisions: (I) You must include a copy of, or the + Uniform Resource Identifier for, the Applicable License with every copy or + phonorecord of each Derivative Work You distribute, publicly display, publicly + perform, or publicly digitally perform; (II) You may not offer or impose any + terms on the Derivative Works that restrict the terms of the Applicable License + or the ability of a recipient of the Work to exercise the rights granted to + that recipient under the terms of the Applicable License; (III) You must keep + intact all notices that refer to the Applicable License and to the disclaimer + of warranties; and, (IV) when You distribute, publicly display, publicly + perform, or publicly digitally perform the Work, You may not impose any + technological measures on the Derivative Work that restrict the ability of a + recipient of the Derivative Work from You to exercise the rights granted to + that recipient under the terms of the Applicable License. This Section 4(b) + applies to the Derivative Work as incorporated in a Collective Work, but this + does not require the Collective Work apart from the Derivative Work itself to + be made subject to the terms of the Applicable License. . - c. If you distribute, publicly display, publicly perform, or publicly digitally - perform the Work or any Derivative Works or Collective Works, You must keep - intact all copyright notices for the Work and give the Original Author credit - reasonable to the medium or means You are utilizing by conveying the name (or - pseudonym if applicable) of the Original Author if supplied; the title of the - Work if supplied; to the extent reasonably practicable, the Uniform Resource - Identifier, if any, that Licensor specifies to be associated with the Work, - unless such URI does not refer to the copyright notice or licensing information - for the Work; and in the case of a Derivative Work, a credit identifying the - use of the Work in the Derivative Work (e.g., "French translation of the Work - by Original Author," or "Screenplay based on original Work by Original - Author"). Such credit may be implemented in any reasonable manner; provided, - however, that in the case of a Derivative Work or Collective Work, at a minimum - such credit will appear where any other comparable authorship credit appears - and in a manner at least as prominent as such other comparable authorship - credit. + c. If You distribute, publicly display, publicly perform, or publicly digitally + perform the Work (as defined in Section 1 above) or any Derivative Works (as + defined in Section 1 above) or Collective Works (as defined in Section 1 + above), You must, unless a request has been made pursuant to Section 4(a), keep + intact all copyright notices for the Work and provide, reasonable to the medium + or means You are utilizing: (i) the name of the Original Author (or pseudonym, + if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor + designate another party or parties (e.g. a sponsor institute, publishing + entity, journal) for attribution ("Attribution Parties") in Licensor's + copyright notice, terms of service or by other reasonable means, the name of + such party or parties; the title of the Work if supplied; to the extent + reasonably practicable, the Uniform Resource Identifier, if any, that Licensor + specifies to be associated with the Work, unless such URI does not refer to the + copyright notice or licensing information for the Work; and, consistent with + Section 3(b) in the case of a Derivative Work, a credit identifying the use of + the Work in the Derivative Work (e.g., "French translation of the Work by + Original Author," or "Screenplay based on original Work by Original Author"). + The credit required by this Section 4(c) may be implemented in any reasonable + manner; provided, however, that in the case of a Derivative Work or Collective + Work, at a minimum such credit will appear, if a credit for all contributing + authors of the Derivative Work or Collective Work appears, then as part of + these credits and in a manner at least as prominent as the credits for the + other contributing authors. For the avoidance of doubt, You may only use the + credit required by this Section for the purpose of attribution in the manner + set out above and, by exercising Your rights under this License, You may not + implicitly or explicitly assert or imply any connection with, sponsorship or + endorsement by the Original Author, Licensor and/or Attribution Parties, as + appropriate, of You or Your use of the Work, without the separate, express + prior written permission of the Original Author, Licensor and/or Attribution + Parties. . 5. Representations, Warranties and Disclaimer . - UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK - AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE - MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT - LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR - PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, - OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME - JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH - EXCLUSION MAY NOT APPLY TO YOU. + UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS + THE WORK AS-IS AND ONLY TO THE EXTENT OF ANY RIGHTS HELD IN THE LICENSED WORK + BY THE LICENSOR. THE LICENSOR MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY + KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, + WITHOUT LIMITATION, WARRANTIES OF TITLE, MARKETABILITY, MERCHANTIBILITY, + FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR + OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT + DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED + WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. . 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, @@ -2093,9 +2161,10 @@ License: CC-BY-SA-2.0 . 8. Miscellaneous . - a. Each time You distribute or publicly digitally perform the Work or a - Collective Work, the Licensor offers to the recipient a license to the Work on - the same terms and conditions as the license granted to You under this License. + a. Each time You distribute or publicly digitally perform the Work (as defined + in Section 1 above) or a Collective Work (as defined in Section 1 above), the + Licensor offers to the recipient a license to the Work on the same terms and + conditions as the license granted to You under this License. . b. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same @@ -2118,6 +2187,8 @@ License: CC-BY-SA-2.0 You. This License may not be modified without the mutual written agreement of the Licensor and You. . + Creative Commons Notice + . Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including @@ -2127,12 +2198,13 @@ License: CC-BY-SA-2.0 hereunder, it shall have all rights and obligations of Licensor. . Except for the limited purpose of indicating to the public that the Work is - licensed under the CCPL, neither party will use the trademark "Creative - Commons" or any related trademark or logo of Creative Commons without the prior - written consent of Creative Commons. Any permitted use will be in compliance - with Creative Commons' then-current trademark usage guidelines, as may be - published on its website or otherwise made available upon request from time to - time. + licensed under the CCPL, Creative Commons does not authorize the use by either + party of the trademark "Creative Commons" or any related trademark or logo of + Creative Commons without the prior written consent of Creative Commons. Any + permitted use will be in compliance with Creative Commons' then-current + trademark usage guidelines, as may be published on its website or otherwise + made available upon request from time to time. For the avoidance of doubt, this + trademark restriction does not form part of this License. . Creative Commons may be contacted at https://creativecommons.org/. @@ -2616,6 +2688,22 @@ License: LGPL-2.1+ On Debian systems, the complete text of the Lesser GNU General Public License version 2.1 can be found in "/usr/share/common-licenses/LGPL-2.1". +License: LGPL-3 + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; version 3. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see + . + On Debian systems, the complete text of the Lesser GNU General + Public License version 3 can be found in "/usr/share/common-licenses/LGPL-3". + License: LGPL-3+ This package is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published diff --git a/debian/freedombox.maintscript b/debian/freedombox.maintscript index aea3d40da..d9b3a7b5e 100644 --- a/debian/freedombox.maintscript +++ b/debian/freedombox.maintscript @@ -12,3 +12,4 @@ rm_conffile /etc/plinth/modules-enabled/repro 20.1~ rm_conffile /etc/apt/preferences.d/50freedombox3.pref 20.5~ rm_conffile /etc/plinth/plinth.config 20.12~ rm_conffile /etc/plinth/custom-shortcuts.json 20.12~ +rm_conffile /etc/plinth/modules-enabled/coquelicot 20.14~ diff --git a/debian/freedombox.postinst b/debian/freedombox.postinst index acd097800..c824606f7 100755 --- a/debian/freedombox.postinst +++ b/debian/freedombox.postinst @@ -5,9 +5,6 @@ set -e # Source debconf library. . /usr/share/debconf/confmodule -daemonuser=plinth -daemongroup=plinth - # Due to a change in sudo, now it runs PAM modules even on password-less # invocations. This leads to plinth not being able to run root privileges. This # is because of our own restrictions in /etc/security/access.conf. Since Plinth @@ -29,7 +26,7 @@ case "$1" in if [ ! -e '/var/lib/freedombox/is-freedombox-disk-image' ]; then umask 377 - cat /dev/urandom | base64 | head -c16 > /var/lib/plinth/firstboot-wizard-secret + base64 < /dev/urandom | head -c 16 | sed -e 's+$+\n+' > /var/lib/plinth/firstboot-wizard-secret chown plinth:plinth /var/lib/plinth/firstboot-wizard-secret db_subst plinth/firstboot_wizard_secret secret $(cat /var/lib/plinth/firstboot-wizard-secret) db_input high plinth/firstboot_wizard_secret || true diff --git a/debian/gbp.conf b/debian/gbp.conf new file mode 100644 index 000000000..9746d42be --- /dev/null +++ b/debian/gbp.conf @@ -0,0 +1,3 @@ +[dch] +git-log = --no-merges +multimaint-merge = True diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides deleted file mode 100644 index c36403a49..000000000 --- a/debian/source/lintian-overrides +++ /dev/null @@ -1 +0,0 @@ -plinth source: source-contains-unsafe-symlink static/themes/default/lato/Lato-Regular.ttf diff --git a/debian/tests/control b/debian/tests/control index 837bb7779..7f40e398d 100644 --- a/debian/tests/control +++ b/debian/tests/control @@ -9,3 +9,9 @@ # Test-Command: plinth --list-modules 2> /dev/null Restrictions: needs-root + +# +# Run unit and integration tests on installed files. +# +Test-Command: PYTHONPATH='/usr/lib/python3/dist-packages/plinth/' py.test-3 -p no:cacheprovider +Depends: git, python3-pytest, python3-pytest-django, @ diff --git a/doc/Makefile b/doc/Makefile index 710f24d21..94c0ee0e6 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -7,7 +7,7 @@ MANUAL_LANGUAGES=en es MANUAL_URL="https://wiki.debian.org/{lang-fragment}FreedomBox/Manual?action=show&mimetype=text%2Fdocbook" MANUAL_URL_RAW="https://wiki.debian.org/{lang-fragment}FreedomBox/Manual?action=raw" -MANUAL_PAGE_URL="https://wiki.debian.org/{lang-fragment}FreedomBox/Manual/{page}?action=show&mimetype=text%2Fdocbook" +MANUAL_PAGE_URL_RAW="https://wiki.debian.org/{page}?action=raw" DESTDIR= INSTALL_DIR=$(DESTDIR)/usr/share/freedombox @@ -67,34 +67,36 @@ fetch: $(fetch-main-list) $(fetch-pages-list) fetch-main-%: lang = $* fetch-main-%: lang-fragment = $(subst en/,,$*/) $(fetch-main-list): fetch-main-%: + MANUAL_URL_RAW_LANG=$(subst {lang-fragment},$(lang-fragment),$(MANUAL_URL_RAW)) ; \ + wget --quiet --user-agent=Firefox \ + -O manual/$(lang)/freedombox-manual.raw.wiki $${MANUAL_URL_RAW_LANG} MANUAL_URL_LANG=$(subst {lang-fragment},$(lang-fragment),$(MANUAL_URL)) ; \ - wget --quiet -O - $${MANUAL_URL_LANG} | \ + wget --quiet --user-agent=Firefox -O - $${MANUAL_URL_LANG} | \ xmllint --format --output manual/$(lang)/freedombox-manual.raw.xml - mkdir -p manual/$(lang)/images/ xsltproc $(SCRIPTS_DIR)/fetch-images.xslt manual/$(lang)/freedombox-manual.raw.xml | \ sort -u | \ awk 'NF {print "wget --quiet -O manual/$(lang)/images/" $$1 " " $$2}' | \ sh + rm manual/$(lang)/freedombox-manual.raw.xml fetch-pages-%: lang = $* fetch-pages-%: lang-fragment = $(subst en/,,$*/) $(fetch-pages-list): fetch-pages-%: MANUAL_URL_LANG=$(subst {lang-fragment},$(lang-fragment),$(MANUAL_URL_RAW)) ; \ - MANUAL_PAGE_URL_LANG=$(subst {lang-fragment},$(lang-fragment),$(MANUAL_PAGE_URL)) ; \ - PAGES=$$(wget --quiet -U Firefox -O - $${MANUAL_URL_LANG} | \ - sed -n -e "s|.*FreedomBox/Manual/\([a-zA-Z0-9_-]*\).*|\1|p" | sort -u | \ - grep -v -e GettingHelp -e Developer -e QuickStart) ; \ + PAGES=$$(wget --quiet --user-agent=Firefox -O - $${MANUAL_URL_LANG} | \ + sed -n -e "s|.*<]*>(.*)<\/body\s*>.*/$$1/si' $< > $@ +$(manual-pages-part-html): %.part.html: %.xml + xsltproc /usr/share/xml/docbook/stylesheet/docbook-xsl/xhtml5/docbook.xsl $< | \ + perl -pe 'BEGIN {undef $$/} s/.*]*>(.*)<\/body\s*>.*/$$1/si' > $@ + @rm -f $(dir $@)docbook.css -$(manual-xmls): %.xml: %.raw.xml $(SCRIPTS_DIR)/fixes.xslt - xsltproc --output $@ $(SCRIPTS_DIR)/fixes.xslt $< - -$(manual-pages-xml): %.xml: %.raw.xml $(SCRIPTS_DIR)/manual-page-fixes.xslt - xsltproc --output $@ $(SCRIPTS_DIR)/manual-page-fixes.xslt $< - $(SCRIPTS_DIR)/post-processor remove-footer $@ - $(SCRIPTS_DIR)/post-processor fix-wiki-urls $@ - -$(manual-pages-html): %.html: %.xml - xsltproc --output $@ /usr/share/xml/docbook/stylesheet/docbook-xsl/xhtml5/docbook.xsl $< - rm -f $(dir $@)docbook.css +$(manual-xmls) $(manual-pages-xml): %.xml: %.raw.wiki $(SCRIPTS_DIR)/wikiparser.py + $(SCRIPTS_DIR)/wikiparser.py $< | xmllint --format - > $@ %.1: %.xml xmlto man $< .PHONY: clean clean: - rm -f $(manual-pages-html) $(manual-pages-part-html) $(manual-pages-xml) $(manual-xmls) + rm -f $(manual-pages-part-html) $(manual-pages-xml) $(manual-xmls) rm -f $(OUTPUTS) diff --git a/doc/manual/en/A20-OLinuXino-Lime2.raw.wiki b/doc/manual/en/A20-OLinuXino-Lime2.raw.wiki new file mode 100644 index 000000000..94a440f71 --- /dev/null +++ b/doc/manual/en/A20-OLinuXino-Lime2.raw.wiki @@ -0,0 +1,76 @@ +== A20 OLinuXino Lime2 == + +{{attachment:a20-olinuxino-lime2.jpg|A20 OLinuXino Lime2|width=640,height=432}} + +Olimex's [[https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-LIME2/open-source-hardware|A20 OLinuXino Lime2]] is a fully 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. It uses the Allwinner A20 Dual Core ARM processor. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Similar Hardware === + +The following similar hardware will also work well with !FreedomBox. + + * Olimex's [[https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-LIME2-4GB/open-source-hardware|A20 OLinuXino Lime2 4GB]]. This hardware merely has extra 4GB NAND storage that is not used by !FreedomBox. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] are available for this device. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. These SD card images are meant for use with the on-board SD card slot and won't work when used with a separate SD card reader connected via USB. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: 45 EUR (A20 OLinuXino Lime2) + * Price: 55 EUR (A20 OLinuXino Lime2 4GB) + * [[https://www.olimex.com/Products/OLinuXino/A20/open-source-hardware|Olimex Store]] + +=== Hardware === + + * Open Source Hardware (OSHW): [[https://github.com/OLIMEX/OLINUXINO/tree/master/HARDWARE|Yes]] + * CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core + * RAM: 1 GiB DDR3 + * Storage: 4 GB NAND flash built-in (only on 4GB model), 1x microSD slot + * Architecture: armhf + * Ethernet: 10/100/1000, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: 1x port + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + * Boot Firmware: [[https://linux-sunxi.org/BROM|BROM]] (GPLV2+) + +=== Known Issues === + + * Revision C hardware has [[DebianBug:845128|poor performance when receiving Ethernet data in Gigabit mode]]. To workaround the problem, you can switch to 100 Mbps mode instead of Gigabit mode. Login to your !FreedomBox as root (or plugin the SD card into another computer) and create the file /etc/NetworkManager/dispatcher.d/20-fix-ethernet-problem with the following contents: + {{{ +#!/bin/bash + +set -e # Exit with code on error + +IFACE="$1" +ACTION="$2" + +if [[ "$IFACE" != "eth0" ]]; then + exit 0 +fi + +case ${ACTION} in + up) + logger "Setting up $IFACE in 100Mbps mode" + mii-tool eth0 -A 100BaseTx-FD + ;; + *) + ;; +esac +}}} + * Revision G2 hardware has [[DebianBug:927397|poor performance when transmitting Ethernet data in Gigabit mode]]. Download and use the [[https://ftp.freedombox.org/pub/freedombox/pioneer/|Pioneer Edition image]] to fix the issue. It contains a slightly [[https://salsa.debian.org/freedombox-team/u-boot/commit/2cb18893ef|modified u-boot]]. The above workaround to put the Ethernet into 100 Mbps mode also fixes this issue. + * Revision K hardware is [[https://salsa.debian.org/freedombox-team/freedom-maker/issues/148|not working properly]]. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/A20-OLinuXino-MICRO.raw.wiki b/doc/manual/en/A20-OLinuXino-MICRO.raw.wiki new file mode 100644 index 000000000..dfc8d6343 --- /dev/null +++ b/doc/manual/en/A20-OLinuXino-MICRO.raw.wiki @@ -0,0 +1,54 @@ +== A20 OLinuXino MICRO == + +{{attachment:a20-olinuxino-micro.jpg|A20 OLinuXino MICRO|width=640,height=359}} + +Olimex's [[https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-MICRO/open-source-hardware|A20 OLinuXino MICRO]] is a fully 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. It uses the Allwinner A20 Dual Core ARM processor. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Similar Hardware === + +The following similar hardware will also work well with !FreedomBox. + + * Olimex's [[https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-MICRO-4GB/open-source-hardware|A20 OLinuXino MICRO 4GB]]. This hardware merely has extra 4GB NAND storage that is not used by !FreedomBox. + +=== Download === + +!FreedomBox MicroSD card [[FreedomBox/Download|images]] are available for this device. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox MicroSD card and boot the device. These MicroSD card images are meant for use with the on-board MicroSD card slot and won't work on the SD card slot or when using a separate MicroSD card reader connected via USB. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: 50 EUR (A20 OLinuXino MICRO) + * Price: 63 EUR (A20 OLinuXino MICRO 4GB) + * [[https://www.olimex.com/Products/OLinuXino/A20/open-source-hardware|Olimex Store]] + +=== Hardware === + + * Open Source Hardware (OSHW): [[https://github.com/OLIMEX/OLINUXINO/tree/master/HARDWARE|Yes]] + * CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core + * RAM: 1 GiB DDR3 + * Storage: 4 GB NAND flash built-in (only on 4GB model), 1x microSD slot + * Architecture: armhf + * Ethernet: 10/100, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: 1x port + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + * Boot Firmware: [[https://linux-sunxi.org/BROM|BROM]] (GPLV2+) + +=== Known Issues === + + * Not visible on local network + * When booting the 'stable' image (made on 2017-06-18) the board does not automatically get an IP address from the router's DHCP server over ethernet. Booting the 'testing' image (2018-06) the board does get an IP address. Tested on MICRO hardware revision J. see also: [[https://www.olimex.com/forum/index.php?topic=5839.msg24167#msg24167]] + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/APU.raw.wiki b/doc/manual/en/APU.raw.wiki new file mode 100644 index 000000000..f0ea04232 --- /dev/null +++ b/doc/manual/en/APU.raw.wiki @@ -0,0 +1,75 @@ +== APU == + +{{attachment:apu1d.jpg|PC Engines APU 1D|width=632,height=319}} + +[[http://www.pcengines.ch/apu1d.htm|PC Engines APU 1D]] is a single board computer with 3 Gigabit ethernet ports, a powerful AMD APU and Coreboot firmware. !FreedomBox images built for AMD64 machines are tested to work well for it. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Similar Hardware === + +Although untested, the following similar hardware is also likely to work well with !FreedomBox. + + * Using amd64 image: + * [[http://www.pcengines.ch/apu1c.htm|apu1c]] + * [[http://www.pcengines.ch/apu1c4.htm|apu1c4]] + * [[http://www.pcengines.ch/apu1d4.htm|apu1d4]] + * [[http://www.pcengines.ch/apu2b2.htm|apu2b2]] + * [[http://www.pcengines.ch/apu2b4.htm|apu2b4]] + * [[http://www.pcengines.ch/apu2c0.htm|apu2c0]] + * [[http://www.pcengines.ch/apu2c2.htm|apu2c2]] + * [[http://www.pcengines.ch/apu2c4.htm|apu2c4]] + * [[http://www.pcengines.ch/apu3a2.htm|apu3a2]] + * [[http://www.pcengines.ch/apu3a4.htm|apu3a4]] + * [[http://www.pcengines.ch/apu3b2.htm|apu3b2]] + * [[http://www.pcengines.ch/apu3b4.htm|apu3b4]] + + * Using i386 image: + * [[http://www.pcengines.ch/alix1d.htm|alix1d]] + * [[http://www.pcengines.ch/alix1e.htm|alix1e]] + * [[http://www.pcengines.ch/alix2d2.htm|alix2d2]] + * [[http://www.pcengines.ch/alix2d3.htm|alix2d3]] + * [[http://www.pcengines.ch/alix2d13.htm|alix2d13]] + * [[http://www.pcengines.ch/alix3d2.htm|alix3d2]] + * [[http://www.pcengines.ch/alix3d3.htm|alix3d3]] + * [[http://www.pcengines.ch/alix6f2.htm|alix6f2]] + +=== Download === + +!FreedomBox disk [[FreedomBox/Download|images]] for this hardware are available. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card, USB disk, SSD or hard drive and boot into !FreedomBox. Pick the image meant for all amd64 machines. + +An alternative to downloading these images is to [[InstallingDebianOn/Alix3d2|install Debian]] on the APU and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Networking === + +The first network port, the left most one in the above picture, is configured by !FreedomBox to be an upstream Internet link and the remaining 2 ports are configured for local computers to connect to. + +=== Availability === + + * Price: 110 - 170 USD (depending on the board and supplier) + * [[http://www.pcengines.ch/order.htm|PC Engines]] + * [[http://www.pcengines.ch/order.htm|Full list of suppliers]] + +=== Hardware === + + * Open Hardware: No + * CPU: [[http://www.amd.com/en-gb/products/embedded/processors/g-series|AMD G series T40E]] + * RAM: 2 GB DDR3-1066 DRAM + * Storage: SD card, External USB + * Architecture: amd64 + * Ethernet: 3 Gigabit Ethernet ports + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: 1 m-SATA and 1 SATA + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + * Boot firmware: [[http://www.pcengines.ch/apu1d.htm|Coreboot]] + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Apache_userdir.raw.wiki b/doc/manual/en/Apache_userdir.raw.wiki new file mode 100644 index 000000000..4d9c88f85 --- /dev/null +++ b/doc/manual/en/Apache_userdir.raw.wiki @@ -0,0 +1,48 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Apache_userdir|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== User Websites == + +=== What is User websites? === + +User websites is a module of the Apache webserver enabled to allow users defined in the !FreedomBox system to expose a set of static files on the !FreedomBox filesystem as a website to the local network and/or the internet according to the network and firewall setup. + +||||'''Application basics'''|| +||Category|| File sharing || +||Available since version || 0.9.4|| +||Upstream project website || https://httpd.apache.org/docs/2.4/mod/mod_userdir.html|| +||Upstream end user documentation || https://httpd.apache.org/docs/2.4/howto/public_html.html|| + +=== Screenshot === + +/* Add when/if an interface is made for FreedomBox */ + +=== Using User websites === + +The module is always enabled and offers no configuration from the !FreedomBox web interface. There is no configuration or status page shown for this module in the !FreedomBox web interface. + +To serve documents, place the files in the designated directory in a !FreedomBox user's home directory in the filesystem. + +This directory is: '''public_html''' + +Thus the absolute path for the directory of a user named fbx with home directory in /home/fbx will be '''/home/fbx/public_html'''. +User websites will serve documents placed in this directory when requests for documents with the URI path "~fbx" are received. For the the example.org domain thus a request for the document example.org/~fbx/index.html will transfer the file in /home/fbx/public_html/index.html. + + +=== Using SFTP to create public_html and upload documents === + +/* To be written */ + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Apache_userdir.raw.xml b/doc/manual/en/Apache_userdir.raw.xml deleted file mode 100644 index c824c9c0f..000000000 --- a/doc/manual/en/Apache_userdir.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Apache_userdir82020-05-30 17:51:15SunilMohanAdapaUpdate the title to emphasize app name over its generic name72020-05-23 19:43:05JamesValleroyadd TableOfContents62020-02-26 22:51:55JamesValleroyrephrase52020-02-26 22:50:33JamesValleroyPlinth -> FreedomBox42020-02-26 22:49:27JamesValleroysimply wording32019-02-27 00:08:57JamesValleroyremove wiki links22019-02-17 21:44:22MikkelKirkgaardNielsenrefer to ourselves as User websites, add basics table from new template12019-02-13 23:15:52MikkelKirkgaardNielsenadd draft page
User Websites
What is User websites?User websites is a module of the Apache webserver enabled to allow users defined in the FreedomBox system to expose a set of static files on the FreedomBox filesystem as a website to the local network and/or the internet according to the network and firewall setup. Application basicsCategory File sharing Available since version 0.9.4Upstream project website Upstream end user documentation
ScreenshotAdd when/if an interface is made for FreedomBox
Using User websitesThe module is always enabled and offers no configuration from the FreedomBox web interface. There is no configuration or status page shown for this module in the FreedomBox web interface. To serve documents, place the files in the designated directory in a FreedomBox user's home directory in the filesystem. This directory is: public_html Thus the absolute path for the directory of a user named fbx with home directory in /home/fbx will be /home/fbx/public_html. User websites will serve documents placed in this directory when requests for documents with the URI path "~fbx" are received. For the the example.org domain thus a request for the document example.org/~fbx/index.html will transfer the file in /home/fbx/public_html/index.html.
Using SFTP to create public_html and upload documentsTo be written Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Backups.raw.wiki b/doc/manual/en/Backups.raw.wiki new file mode 100644 index 000000000..2a14e5f61 --- /dev/null +++ b/doc/manual/en/Backups.raw.wiki @@ -0,0 +1,100 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Backups|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Backups == + +!FreedomBox includes the ability to backup and restore data, preferences, configuration and secrets from most of the applications. The Backups feature is built using Borg backup software. Borg is a deduplicating and compressing backup program. It is designed for efficient and secure backups. This backups feature can be used to selectively backup and restore data on an app-by-app basis. Backed up data can be stored on the !FreedomBox machine itself or on a remote server. Any remote server providing SSH access can be used as a backup storage repository for !FreedomBox backups. Data stored remotely may be encrypted and in such cases remote server cannot access your decrypted data. + + +=== Status of Backups Feature === + +|| '''App/Feature''' || '''Support in Version''' || '''Notes''' || +|| Avahi || - || no backup needed || +|| Backups || - || no backup needed || +|| Bind || 0.41 || || +|| Cockpit || - || no backup needed || +|| Datetime || 0.41 || || +|| Deluge || 0.41 || does not include downloaded/seeding files || +|| Diagnostics || - || no backup needed || +|| Dynamic DNS || 0.39 || || +|| ejabberd || 0.39 || includes all data and configuration || +|| Firewall || - || no backup needed || +|| ikiwiki || 0.39 || includes all wikis/blogs and their content || +|| infinoted || 0.39 || includes all data and keys || +|| JSXC || - || no backup needed || +|| Let's Encrypt || 0.42 || || +|| Matrix Synapse || 0.39 || includes media and uploads || +|| !MediaWiki || 0.39 || includes wiki pages and uploaded files || +|| Minetest || 0.39 || || +|| MLDonkey || 19.0 || || +|| Monkeysphere || 0.42 || || +|| Mumble || 0.40 || || +|| Names || - || no backup needed || +|| Networks || No || No plans currently to implement backup || +|| OpenVPN || 0.48 || includes all user and server keys || +|| Pagekite || 0.40 || || +|| Power || - || no backup needed || +|| Privoxy || - || no backup needed || +|| Quassel || 0.40 || includes users and logs || +|| Radicale || 0.39 || includes calendar and cards data for all users || +|| Roundcube || - || no backup needed || +|| SearX || - || no backup needed || +|| Secure Shell (SSH) Server || 0.41 || includes host keys || +|| Security || 0.41 || || +|| Shadowsocks || 0.40 || only secrets || +|| Sharing || 0.40 || does not include the data in the shared folders || +|| Snapshot || 0.41 || only configuration, does not include snapshot data || +|| Storage || - || no backup needed || +|| Syncthing || 0.48 || does not include data in the shared folders || +|| Tahoe-LAFS || 0.42 || includes all data and configuration || +|| Tiny Tiny RSS || 19.2 || includes database containing feeds, stories, etc. || +|| Tor || 0.42 || includes configuration and secrets such as onion service keys || +|| Transmission || 0.40 || does not include downloaded/seeding files || +|| Upgrades || 0.42 || || +|| Users || No || No plans currently to implement backup || + +=== How to install and use Backups === + +'''Step 1''' + +{{attachment:Backups_Step1_v49.png|Backups: Step 1|width=800}} + +'''Step 2''' + +{{attachment:Backups_Step2_v49.png|Backups: Step 2|width=800}} + +'''Step 3''' + +{{attachment:Backups_Step3_v49.png|Backups: Step 3|width=800}} + +'''Step 4''' + +{{attachment:Backups_Step4_v49.png|Backups: Step 4|width=800}} + +'''Step 5''' + +{{attachment:Backups_Step5_v49.png|Backups: Step 5|width=800}} + +'''Step 6''' + +{{attachment:Backups_Step6_v49.png|Backups: Step 6|width=800}} + +'''Step 7''' + +{{attachment:Backups_Step7_v49.png|Backups: Step 7|width=800}} + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Backups.raw.xml b/doc/manual/en/Backups.raw.xml deleted file mode 100644 index cfc20a6d3..000000000 --- a/doc/manual/en/Backups.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Backups322020-05-23 20:39:02JamesValleroyadd TableOfContents312019-11-11 17:07:05JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service302019-02-26 23:33:42SunilMohanAdapaUpdate information about tt-rss292019-02-23 00:11:05JamesValleroyadd mldonkey282019-02-04 01:16:41SunilMohanAdapaAdd FreedomBox footer272019-01-31 01:30:48SunilMohanAdapaMinor formatting262019-01-31 01:29:18SunilMohanAdapaMake manual friendly, consolidate feature data, update description252019-01-30 17:45:57SunilMohanAdapaMinor release update242019-01-23 00:43:21SunilMohanAdapaUpdate information about syncthing232019-01-18 22:26:06SunilMohanAdapaUpdate OpenVPN information222018-10-30 05:04:32SunilMohanAdapaUpdate information about Tahoe-LAFS212018-10-29 23:50:51SunilMohanAdapaUpdate information about users and letsencrypt202018-10-26 05:36:32SunilMohanAdapaUpdate information about Monkeysphere192018-10-23 23:30:58SunilMohanAdapaUpdate information about upgrades182018-10-23 22:21:23SunilMohanAdapaAdd information about Tor172018-10-22 17:17:31SunilMohanAdapaUpdate information about newly merged changes162018-10-19 17:12:53SunilMohanAdapaAdd information about SSH152018-10-19 15:38:54SunilMohanAdapaUpdate information on recent progress142018-10-15 23:09:09SunilMohanAdapaUpdate status of datetime and deluge132018-10-09 03:22:17SunilMohanAdapaUpdate information about release of version 0.40122018-10-04 11:34:24JamesValleroyremove links to "FreedomBox" page112018-10-04 04:47:13SunilMohanAdapaMinor formatting102018-10-04 04:46:50SunilMohanAdapaUpdate list of supported applications92018-10-02 15:43:29DannyHaidar82018-10-02 15:41:49DannyHaidar72018-10-02 15:38:00DannyHaidar62018-10-01 17:38:55DannyHaidar52018-10-01 16:50:33DannyHaidar42018-10-01 16:49:00DannyHaidar32018-10-01 16:39:47DannyHaidar22018-10-01 16:37:48DannyHaidar12018-10-01 16:36:42DannyHaidar
BackupsFreedomBox includes the ability to backup and restore data, preferences, configuration and secrets from most of the applications. The Backups feature is built using Borg backup software. Borg is a deduplicating and compressing backup program. It is designed for efficient and secure backups. This backups feature can be used to selectively backup and restore data on an app-by-app basis. Backed up data can be stored on the FreedomBox machine itself or on a remote server. Any remote server providing SSH access can be used as a backup storage repository for FreedomBox backups. Data stored remotely may be encrypted and in such cases remote server cannot access your decrypted data.
Status of Backups Feature App/Feature Support in Version Notes Avahi - no backup needed Backups - no backup needed Bind 0.41 Cockpit - no backup needed Coquelicot 0.40 includes uploaded files Datetime 0.41 Deluge 0.41 does not include downloaded/seeding files Diagnostics - no backup needed Dynamic DNS 0.39 ejabberd 0.39 includes all data and configuration Firewall - no backup needed ikiwiki 0.39 includes all wikis/blogs and their content infinoted 0.39 includes all data and keys JSXC - no backup needed Let's Encrypt 0.42 Matrix Synapse 0.39 includes media and uploads MediaWiki 0.39 includes wiki pages and uploaded files Minetest 0.39 MLDonkey 19.0 Monkeysphere 0.42 Mumble 0.40 Names - no backup needed Networks No No plans currently to implement backup OpenVPN 0.48 includes all user and server keys Pagekite 0.40 Power - no backup needed Privoxy - no backup needed Quassel 0.40 includes users and logs Radicale 0.39 includes calendar and cards data for all users repro 0.39 includes all users, data and keys Roundcube - no backup needed SearX - no backup needed Secure Shell (SSH) Server 0.41 includes host keys Security 0.41 Shadowsocks 0.40 only secrets Sharing 0.40 does not include the data in the shared folders Snapshot 0.41 only configuration, does not include snapshot data Storage - no backup needed Syncthing 0.48 does not include data in the shared folders Tahoe-LAFS 0.42 includes all data and configuration Tiny Tiny RSS 19.2 includes database containing feeds, stories, etc. Tor 0.42 includes configuration and secrets such as onion service keys Transmission 0.40 does not include downloaded/seeding files Upgrades 0.42 Users No No plans currently to implement backup
How to install and use BackupsStep 1 Backups: Step 1 Step 2 Backups: Step 2 Step 3 Backups: Step 3 Step 4 Backups: Step 4 Step 5 Backups: Step 5 Step 6 Backups: Step 6 Step 7 Backups: Step 7 Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/BananaPro.raw.wiki b/doc/manual/en/BananaPro.raw.wiki new file mode 100644 index 000000000..b1800a66e --- /dev/null +++ b/doc/manual/en/BananaPro.raw.wiki @@ -0,0 +1,37 @@ +== Banana Pro == + +{{attachment:banana-pro.jpg|Banana Pro|width=640}} + +[[http://www.lemaker.org|LeMaker]] Banana Pro is an updated version of its predecessor Banana Pi. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] for this hardware are available. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot into !FreedomBox. Pick the image meant for Banana Pro. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Hardware === + + * Open Source Hardware (OSHW): No + * CPU: Allwinner A20, Dual-core ARM Cortex A7 processor + * RAM: 3 variants - 1 GB + * Storage: SD card + * Architecture: armhf + * Ethernet: 10/100/1000 Mbps + * Battery: No + * !WiFi: WiFi 802.11 b/g/n 2.4GHz (not tested with !FreedomBox) + * SATA: SATA 2.0 (2.5 inch SSD or HDD recommended) + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Unknown + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/BeagleBone.raw.wiki b/doc/manual/en/BeagleBone.raw.wiki new file mode 100644 index 000000000..6484da94d --- /dev/null +++ b/doc/manual/en/BeagleBone.raw.wiki @@ -0,0 +1,46 @@ +== Beagle Bone Black == + +{{attachment:beagleboard.jpg|Beagle Bone Black|width=632,height=421}} + +[[https://beagleboard.org/black|Beagle Bone Black]] (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. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] are available for this device. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. + +Note: This image is for !BeagleBone Black (Revision C.1) only. It will not work on the !BeagleBone Green, and also not on the Revisions A&B. If you have such a device and would like to help getting !FreedomBox to run on it, contact us! + +An alternative to downloading these images is to [[InstallingDebianOn/TI/BeagleBone|install Debian]] on the !BeagleBone and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: ~ 59 USD (50 EUR) + * [[http://dk.mouser.com/access/?pn=595-BB-BBLK-000|Mouser Electronics]] + * [[https://beagleboard.org/black|Full list of suppliers]] + +=== Hardware === + + * Open Source Hardware (OSHW): [[http://elinux.org/Beagleboard:BeagleBoneBlack|Yes]] + * CPU: [[http://www.ti.com/product/am3358|AM335x 1GHz ARM Cortex-A8]] + * RAM: 512MB DDR3L 800 Mhz + * Storage: Onboard 4GB, 8bit Embedded MMC and microSD + * Architecture: armhf + * Ethernet: 10/100, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: None + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +Beagle Bone Black image is licensed under a Creative Commons Attribution-!ShareAlike 3.0 Unported License by [[http://elinux.org/File:REV_A5A.jpg|Circuitco]]. diff --git a/doc/manual/en/Bind.raw.wiki b/doc/manual/en/Bind.raw.wiki new file mode 100644 index 000000000..f9719d8ef --- /dev/null +++ b/doc/manual/en/Bind.raw.wiki @@ -0,0 +1,23 @@ +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: - English - [[es/FreedomBox/Manual/Bind|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== BIND (Domain Name Server) == + +BIND enables you to publish your Domain Name System (DNS) information on the Internet, and to resolve DNS queries for your user devices on your network. + +Currently, on !FreedomBox, BIND is only used to resolve DNS queries for other machines on local network. It is also incompatible with sharing Internet connection from !FreedomBox. + +Note: This service is available only on networks configured as "internal" zone. It is not available when connected via OpenVPN. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Bind.raw.xml b/doc/manual/en/Bind.raw.xml deleted file mode 100644 index 5b4d3f4c8..000000000 --- a/doc/manual/en/Bind.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Bind72020-05-30 18:19:00SunilMohanAdapaUpdate the title to emphasize app name over its generic name62020-05-26 14:03:37fioddorCorrección.52020-05-26 14:03:05fioddorLinks to translations42020-05-26 13:36:27fioddorTOC and BEGIN_INCLUDE32020-05-26 04:53:53SunilMohanAdapaMinor formatting22020-05-26 04:53:30SunilMohanAdapaAdd note about not being available on OpenVPN12017-01-21 17:35:14JamesValleroycreate page for bindTranslation(s): - English - Español
BIND (Domain Name Server)BIND enables you to publish your Domain Name System (DNS) information on the Internet, and to resolve DNS queries for your user devices on your network. Currently, on FreedomBox, BIND is only used to resolve DNS queries for other machines on local network. It is also incompatible with sharing Internet connection from FreedomBox. Note: This service is available only on networks configured as "internal" zone. It is not available when connected via OpenVPN. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Cockpit.raw.wiki b/doc/manual/en/Cockpit.raw.wiki new file mode 100644 index 000000000..5d284d1f1 --- /dev/null +++ b/doc/manual/en/Cockpit.raw.wiki @@ -0,0 +1,130 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[FreedomBox/Manual/Cockpit|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Cockpit (Server Administration) == + +Cockpit is a server manager that makes it easy to administer GNU/Linux servers via a web browser. On a !FreedomBox, controls are available for many advanced functions that are not usually required. A web based terminal for console operations is also available. + +It can be accessed by any user on your !FreedomBox belonging to the admin group. Cockpit is only usable when you have proper domain name setup for your !FreedomBox and you use that domain name to access Cockpit. See the Troubleshooting section for more information. + +{{{#!wiki caution +Use cockpit only if you are an administrator of GNU/Linux systems with advanced skills. !FreedomBox tries to coexist with changes to system by system administrators and system administration tools like Cockpit. However, improper changes to the system might causes failures in !FreedomBox functions. +}}} + +=== Using Cockpit === + +Install Cockpit like any other application on !FreedomBox. Make sure that Cockpit is enabled after that. + +{{attachment:cockpit-enable.png}} + +Ensure that the user account on !FreedomBox that will used for Cockpit is part of the administrators group. + +{{attachment:cockpit-admin-user.png}} + +Launch the Cockpit web interface. Login using the configured user account. + +{{attachment:cockpit-login.png}} + +Start using cockpit. + +{{attachment:cockpit-system.png}} + +Cockpit is usable on mobile interfaces too. + +{{attachment:cockpit-mobile.png}} + +=== Features === + +The following features of Cockpit may be useful for advanced !FreedomBox users. + +==== System Dashboard ==== + +Cockpit has a system dashboard that + * Shows detailed hardware information + * Shows basic performance metrics of a system + * Allows changing system time and timezone + * Allows changing hostname. Please use !FreedomBox UI to do this + * Shows SSH server fingerprints + +{{attachment:cockpit-system.png}} + + +==== Viewing System Logs ==== + +Cockpit allows querying system logs and examining them in full detail. + +{{attachment:cockpit-logs.png}} + +==== Managing Storage ==== + +Cockpit allows following advanced storage functions: + + * View full disk information + * Editing disk partitions + * RAID management + +{{attachment:cockpit-storage1.png}} + +{{attachment:cockpit-storage2.png}} + +==== Networking ==== + +Cockpit and !FreedomBox both rely on !NetworkManager to configure the network. However, Cockpit offers some advanced configuration not available on !FreedomBox: + + * Route configuration + * Configure Bonds, Bridges, VLANs + +{{attachment:cockpit-network1.png}} + +{{attachment:cockpit-network2.png}} + +{{attachment:cockpit-network3.png}} + +==== Services ==== + +Cockpit allows management of services and periodic jobs (similar to cron). + +{{attachment:cockpit-services1.png}} + +{{attachment:cockpit-services2.png}} + +==== Web Terminal ==== + +Cockpit offers a web based terminal that can be used perform manual system administration tasks. + +{{attachment:cockpit-terminal.png}} + +=== Troubleshooting === + +Cockpit requires a domain name to be properly setup on your !FreedomBox and will only work when you access it using a URL with that domain name. Cockpit will not work when using IP address in the URL. Using ''freedombox.local'' as the domain name also does not work. For example, the following URLs will not work: + +{{{ +https://192.168.0.10/_cockpit/ +https://freedombox.local/_cockpit/ +}}} + +Starting with !FreedomBox version 19.15, using ''.local'' domain works. You can access Cockpit using the URL https://freedombox.local/_cockpit/. The ''.local'' domain is based on your hostname. If your hostname is ''mybox'', your ''.local'' domain name will be ''mybox.local'' and the Cockpit URL will be https://mybox.local/_cockpit/. + +To properly access Cockpit, use the domain name [[FreedomBox/Manual/Configure|configured]] for your !FreedomBox.Cockpit will also work well when using a [[FreedomBox/Manual/Tor|Tor Onion Service]]. The following URLs will work: + +{{{ +https://mybox.freedombox.rocks/_cockpit/ +https://exampletorhs.onion/_cockpit/ +}}} + +The reason for this behaviour is that Cockpit uses !WebSockets to connect to the backend server. Cross site requests for !WebSockets must be prevented for security reasons. To implement this, Cockpit maintains a list of all domains from which requests are allowed. !FreedomBox automatically configures this list whenever you add or remove a domain. However, since we can't rely on IP addresses, they are not added by !FreedomBox to this domain list. You can see the current list of allowed domains, as managed by !FreedomBox, in ''/etc/cockpit/cockpit.conf''. You may edit this, but do so only if you understand web security consequences of this. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Cockpit.raw.xml b/doc/manual/en/Cockpit.raw.xml deleted file mode 100644 index 63013850f..000000000 --- a/doc/manual/en/Cockpit.raw.xml +++ /dev/null @@ -1,3 +0,0 @@ -
FreedomBox/Manual/Cockpit72020-05-23 20:39:42JamesValleroyadd TableOfContents62019-11-14 18:04:05fioddorwiki link to wiki page52019-11-11 16:57:11JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service42019-08-20 18:22:51SunilMohanAdapaUpdate information about .local domain and fix URLs32019-07-19 00:08:47SunilMohanAdapaAdd informatio about Cockpit needing a proper domain name22019-01-10 21:41:56SunilMohanAdapaWrite manual page for Cockpit12018-03-02 12:57:48JosephNuthalapatiCreate stub for Cockpit
Cockpit (Server Administration)Cockpit is a server manager that makes it easy to administer GNU/Linux servers via a web browser. On a FreedomBox, controls are available for many advanced functions that are not usually required. A web based terminal for console operations is also available. It can be accessed by any user on your FreedomBox belonging to the admin group. Cockpit is only usable when you have proper domain name setup for your FreedomBox and you use that domain name to access Cockpit. See the Troubleshooting section for more information. Use cockpit only if you are an administrator of GNU/Linux systems with advanced skills. FreedomBox tries to coexist with changes to system by system administrators and system administration tools like Cockpit. However, improper changes to the system might causes failures in FreedomBox functions.
Using CockpitInstall Cockpit like any other application on FreedomBox. Make sure that Cockpit is enabled after that. cockpit-enable.png Ensure that the user account on FreedomBox that will used for Cockpit is part of the administrators group. cockpit-admin-user.png Launch the Cockpit web interface. Login using the configured user account. cockpit-login.png Start using cockpit. cockpit-system.png Cockpit is usable on mobile interfaces too. cockpit-mobile.png
FeaturesThe following features of Cockpit may be useful for advanced FreedomBox users.
System DashboardCockpit has a system dashboard that Shows detailed hardware information Shows basic performance metrics of a system Allows changing system time and timezone Allows changing hostname. Please use FreedomBox UI to do this Shows SSH server fingerprints cockpit-system.png
Viewing System LogsCockpit allows querying system logs and examining them in full detail. cockpit-logs.png
Managing StorageCockpit allows following advanced storage functions: View full disk information Editing disk partitions RAID management cockpit-storage1.png cockpit-storage2.png
NetworkingCockpit and FreedomBox both rely on NetworkManager to configure the network. However, Cockpit offers some advanced configuration not available on FreedomBox: Route configuration Configure Bonds, Bridges, VLANs cockpit-network1.png cockpit-network2.png cockpit-network3.png
ServicesCockpit allows management of services and periodic jobs (similar to cron). cockpit-services1.png cockpit-services2.png
Web TerminalCockpit offers a web based terminal that can be used perform manual system administration tasks. cockpit-terminal.png
TroubleshootingCockpit requires a domain name to be properly setup on your FreedomBox and will only work when you access it using a URL with that domain name. Cockpit will not work when using IP address in the URL. Using freedombox.local as the domain name also does not work. For example, the following URLs will not work: Starting with FreedomBox version 19.15, using .local domain works. You can access Cockpit using the URL . The .local domain is based on your hostname. If your hostname is mybox, your .local domain name will be mybox.local and the Cockpit URL will be . To properly access Cockpit, use the domain name configured for your FreedomBox.Cockpit will also work well when using a Tor Onion Service. The following URLs will work: The reason for this behaviour is that Cockpit uses WebSockets to connect to the backend server. Cross site requests for WebSockets must be prevented for security reasons. To implement this, Cockpit maintains a list of all domains from which requests are allowed. FreedomBox automatically configures this list whenever you add or remove a domain. However, since we can't rely on IP addresses, they are not added by FreedomBox to this domain list. You can see the current list of allowed domains, as managed by FreedomBox, in /etc/cockpit/cockpit.conf. You may edit this, but do so only if you understand web security consequences of this. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Configure.raw.wiki b/doc/manual/en/Configure.raw.wiki new file mode 100644 index 000000000..40b2523e4 --- /dev/null +++ b/doc/manual/en/Configure.raw.wiki @@ -0,0 +1,39 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Configure|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Configure == + +Configure has some general configuration options: + +=== Hostname === + . Hostname is the local name by which other devices on the local network can reach your !FreedomBox. The default hostname is ''freedombox''. + +=== Domain Name === + . Domain name is the global name by which other devices on the Internet can reach your !FreedomBox. The value set here is used by the [[FreedomBox/Manual/ejabberd|Chat Server (XMPP)]], [[FreedomBox/Manual/MatrixSynapse|Matrix Synapse]], [[FreedomBox/Manual/LetsEncrypt|Certificates (Let's Encrypt)]], and [[FreedomBox/Manual/Monkeysphere|Monkeysphere]]. + +=== Webserver Home Page === + . This is an advanced option that allows you to set something other than !FreedomBox Service as the home page to be served on the domain name of the !FreedomBox. For example, if your !FreedomBox's domain name is https://myfreedombox.rocks and you set !MediaWiki as the home page, visiting https://myfreedombox.rocks will take you to https://myfreedombox.rocks/mediawiki/ instead of the usual https://myfreedombox.rocks/plinth/. You can set any web application, Ikiwiki wikis and blogs or Apache's default index.html page as the web server home page. + +{{{#!wiki caution + +Once some other app is set as the home page, you can only navigate to the !FreedomBox Service by typing https://myfreedombox.rocks/plinth/ into the browser. <
> +''/freedombox'' can also be used as an alias to ''/plinth'' +}}} + + + . ''Tip:'' Bookmark the URL of !FreedomBox Service before setting the home page to some other app. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Configure.raw.xml b/doc/manual/en/Configure.raw.xml deleted file mode 100644 index 7f64b46bb..000000000 --- a/doc/manual/en/Configure.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Configure112020-05-23 19:47:01JamesValleroymove TableOfContents above BEGIN_INCLUDE102020-05-23 17:08:24JamesValleroyremove references to (Plinth)92019-02-28 10:25:01JosephNuthalapatiRename default app to webserver home page82018-10-09 09:54:01JosephNuthalapatiImprove formatting72018-07-25 08:38:53JosephNuthalapatiRemove /home as an alias to /freedombox62018-07-24 17:51:28SunilMohanAdapaRename FreedomBox Plinth to FreedomBox Service (Plinth)52018-07-24 16:12:49JosephNuthalapatiAdd tip about bookmarking FreedomBox Plinth42018-07-24 13:52:47JosephNuthalapatiAdd wiki entry about Default App32016-12-31 04:11:43JamesValleroymention how domain name is used22016-12-31 04:07:26JamesValleroyfix outline12016-08-21 16:35:55DrahtseilCreated Configure
ConfigureConfigure has some general configuration options:
HostnameHostname is the local name by which other devices on the local network can reach your FreedomBox. The default hostname is freedombox.
Domain NameDomain name is the global name by which other devices on the Internet can reach your FreedomBox. The value set here is used by the Chat Server (XMPP), Matrix Synapse, Certificates (Let's Encrypt), and Monkeysphere.
Webserver Home PageThis is an advanced option that allows you to set something other than FreedomBox Service as the home page to be served on the domain name of the FreedomBox. For example, if your FreedomBox's domain name is and you set MediaWiki as the home page, visiting will take you to instead of the usual . You can set any web application, Ikiwiki wikis and blogs or Apache's default index.html page as the web server home page. Once some other app is set as the home page, you can only navigate to the FreedomBox Service by typing into the browser. /freedombox can also be used as an alias to /plinth Tip: Bookmark the URL of FreedomBox Service before setting the home page to some other app. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Contribute.raw.wiki b/doc/manual/en/Contribute.raw.wiki new file mode 100644 index 000000000..9e91a1f75 --- /dev/null +++ b/doc/manual/en/Contribute.raw.wiki @@ -0,0 +1,112 @@ +# language en +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Contribute|Español]] -~ +---- + +<> + +## BEGIN_INCLUDE + += Get Involved = + +From code, design and translation to spreading the word and donation, here are a number of ways to contribute to !FreedomBox. + +== Quick Links == + +[[https://docs.freedombox.org/|FreedomBox Developer Manual]] <
> +[[FreedomBox/ProgressCalls|Progress calls]] <
> +[[FreedomBox/TODO|TODO page]] <
> +[[https://www.freedomboxfoundation.org/donate/|Donation page]] <
> + +== Welcome to newcomers == + +As a new contributor, you are more than welcome to introduce yourself to others on the !FreedomBox [[https://discuss.freedombox.org/c/development|discussion forum]], [[http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss|mailing list]] or on the [[irc://irc.debian.org/freedombox|#freedombox IRC]] channel. In addition to make useful contacts, you can start reporting bugs and translate (see below) the wiki website and the !FreedomBox web interface. + +== Development priorities == + +Upcoming priorities are discussed on an regular basis. You find the progress of the !FreedomBox Service with its priorities here: [[https://salsa.debian.org/groups/freedombox-team/-/boards|issues board]] and [[https://salsa.debian.org/groups/freedombox-team/-/milestones|milestones]]. + +Please check next [[FreedomBox/ProgressCalls|progress calls]] to keep yourself on track and meet members of the release team. A [[FreedomBox/TODO|TODO page]] aggregates the complete list of the items to work on for !FreedomBox. + +== Contributions needed == + +=== Add an Application === + +If you are a developer and wish to see an application available in !FreedomBox, you can contribute by adding the application to !FreedomBox. See the [[https://docs.freedombox.org/|FreedomBox Developer Manual]]. + +=== Bugs === + +List of bugs, feature requests and improvements are tracked on the !FreedomBox [[https://salsa.debian.org/freedombox-team/freedombox/issues/|issue tracker]]. In addition to that, see [[FreedomBox/Contribute/Bugs|list of bugs]] to help out the Debian package we depend on. Also see the !FreedomBox [[https://qa.debian.org/developer.php?login=freedombox-pkg-team%40lists.alioth.debian.org&comaint=yes|packaging team's dashboard]] for status of various packages that we use. + +=== Code === + +If you are a developer, you can contribute code to one of the sub-projects of !FreedomBox. Step-by-step process of [[/Code|contributing code]] to !FreedomBox is available. + + * [[FreedomBox/Plinth|FreedomBox Service]]: a web interface to administer the functions of !FreedomBox. + * [[FreedomBox/Maker|Freedom Maker]]: a script to build !FreedomBox disk images for use on various hardware devices or virtual machines. + +You can pickup a task from one of the [[FreedomBox/TODO|TODO]] lists. The individual page project pages contain information availabily of the code, how to build and TODO lists. + +=== Design === + +==== User Experience Design ==== + +If you are a user experience designer, you can help !FreedomBox with the following items: + + * UI experience for the !FreedomBox Service web interface + * Web design for [[https://freedombox.org|freedombox.org]], [[https://freedomboxfoundation.org|freedomboxfoundation.org]] and the [[FreedomBox|wiki]] pages + * Logo and branding (we currently have [[https://salsa.debian.org/freedombox-team/freedombox/tree/master/static/themes/default|an identity manual and logos]]) + * Possible designs for custom !FreedomBox cases on single board computers + * [[../Design|User experience design]] + +==== Technical Design ==== + +!FreedomBox needs your technical expertise to devise implementation plans for upcoming features. You can contribute to the discussion on various technical design and implementation aspects of !FreedomBox. See !FreedomBox discussion forum's [[https://discuss.freedombox.org/c/development|development category]]. + +=== Donate === + +The [[https://freedomboxfoundation.org|FreedomBox Foundation]] is a 501(c)(3) federal nonprofit corporation with recognition from the IRS. !FreedomBox project is run by volunteers. You can help the project financially by donating via !PayPal, Bitcoin or by mailing a check. Please see the [[https://www.freedomboxfoundation.org/donate/|donation page]] for details on how to donate. + +=== Document: User Manual, Website and Wiki === + +!FreedomBox needs better documentation for users and contributors. !FreedomBox manual is prepared by aggregating various pages on the wiki and exporting to various formats. The manual is then used in !FreedomBox Service and elsewhere. + +If you wish to contribute to the !FreedomBox [[FreedomBox|wiki]] (and consequently the !FreedomBox manual), you can create a wiki account and start editing. + +For contributing to the website please start a discussion on the !FreedomBox discussion forum's [[https://discuss.freedombox.org/c/development|development category]]. + +=== Quality Assurance === + + * !FreedomBox already runs on many platforms and it is not possible for developers to test all possible platforms. If you have one of the supported hardware you can help with testing !FreedomBox on the platform. + + * When an application is made available on !FreedomBox, not all of its functionality is tested in the real world by developer doing the work. Deploying the application and testing it will help ensure high quality applications in !FreedomBox. + +See the [[FreedomBox/QualityAssurance|quality assurance]] page for a basic list of test cases to check for and information on reporting bugs. + +=== Localization === + +All text visible to users of !FreedomBox needs to be localized to various languages. This translation work includes: + + * [[FreedomBox/Plinth|Web Interface]] for !FreedomBox + * !FreedomBox documentation + * !FreedomBox [[FreedomBox|wiki]], [[https://freedombox.org|website]] and [[https://freedomboxfoundation.org|foundation website]]. + * [[https://docs.djangoproject.com/en/dev/internals/contributing/localizing/|Django web framework]] that !FreedomBox uses. + * Individual applications that !FreedomBox exposes to users. + +You can contribute to the localization effort using the web-based tool at [[https://hosted.weblate.org/projects/freedombox/|Weblate]] or directly to the source tree via [[https://salsa.debian.org/freedombox-team/freedombox/tree/master/plinth/locale|Salsa]]. + +If you wish to see !FreedomBox available for one of your languages, please start a discussion on the !FreedomBox discussion forum's [[https://discuss.freedombox.org/c/development|development category]] to work with others translating for that language. + +For more information, please visit the !FreedomBox [[FreedomBox/Translate|translators]] page. + +=== Spread the Word === + +Speak to your family, friends, local community or at global conferences about +the importance of !FreedomBox. To be a successful project we need many more +participants, be it users or contributors. Write about your efforts at the [[https://www.freedomboxfoundation.org/appearances/index.en.html|talks page]] and on the [[FreedomBox/TalksAndPresentations|wiki]]. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Coquelicot.raw.xml b/doc/manual/en/Coquelicot.raw.xml deleted file mode 100644 index cef011759..000000000 --- a/doc/manual/en/Coquelicot.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Coquelicot112020-05-30 17:57:45SunilMohanAdapaUpdate the title to emphasize app name over its generic name102020-05-23 19:51:30JamesValleroyadd TableOfContents92020-05-23 17:03:10JamesValleroyrename plinth -> freedombox82020-04-12 16:01:36JamesValleroyadd links back to top level pages72019-09-11 09:45:09fioddorCategory Deduplicated62018-12-30 19:59:56DrahtseilBasic priniciple52018-03-05 09:15:01JosephNuthalapaticoquelicot: Fix broken links42018-02-26 17:14:51JamesValleroyincluded in 0.2432018-02-12 23:48:10JamesValleroybump version22018-02-12 23:47:14JamesValleroyreplace fancy quote characters with plain quote characters12018-02-10 03:14:55JosephNuthalapatiCreate new page for Coquelicot
Coquelicot (File Sharing)
About CoquelicotCoquelicot is a "one-click" file sharing web application with a focus on protecting users' privacy. The basic principle is simple: users can upload a file to the server, in return they get a unique URL which can be shared with others in order to download the file. A download password can be defined. After the upload you get a unique link that can be shared to your partners in order to Read more about Coquelicot at the Coquelicot README Available since: version 0.24.0
When to use CoquelicotCoquelicot is best used to quickly share a single file. If you want to share a folder, for a single use, compress the folder and share it over Coquelicot which must be kept synchronized between computers, use Syncthing instead Coquelicot can only provide a reasonable degree of privacy. If anonymity is required, you should consider using the desktop application Onionshare instead. Since Coquelicot fully uploads the file to the server, your FreedomBox will incur both upload and download bandwidth costs. For very large files, consider sharing them using BitTorrent by creating a private torrent file. If anonymity is required, use Onionshare. It is P2P and doesn't require a server.
Coquelicot on FreedomBoxWith Coquelicot installed, you can upload files to your FreedomBox server and privately share them. Post installation, the Coquelicot page offers two settings. Upload Password: Coquelicot on FreedomBox is currently configured to use simple password authentication for ease of use. Remember that it's one global password for this Coquelicot instance and not your user password for FreedomBox. You need not remember this password. You can set a new one from the FreedomBox interface anytime. Maximum File Size: You can alter the maximum size of the file that can be transferred through Coquelicot using this setting. The size is in Mebibytes. The maximum file size is only limited by the disk size of your FreedomBox.
PrivacySomeone monitoring your network traffic might find out that some file is being transferred through your FreedomBox and also possibly its size, but will not know the file name. Coquelicot encrypts files on the server and also fills the file contents with 0s when deleting them. This eliminates the risk of file contents being revealed in the event of your FreedomBox being confiscated or stolen. The real risk to mitigate here is a third-party also downloading your file along with the intended recipient.
Sharing over instant messengersSome instant messengers which have previews for websites might download your file in order to show a preview in the conversation. If you set the option of one-time download on a file, you might notice that the one download will be used up by the instant messenger. If sharing over such messengers, please use a download password in combination with a one-time download option.
Sharing download links privatelyIt is recommended to share your file download links and download passwords over encrypted channels. You can simply avoid all the above problems with instant messenger previews by using instant messengers that support encrypted conversations like Riot with Matrix Synapse or XMPP (ejabberd server on FreedomBox) with clients that support end-to-end encryption. Send the download link and the download password in two separate messages (helps if your messenger supports perfect forward secrecy like XMPP with OTR). You can also share your links over PGP-encrypted email using Thunderbird. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Coturn.raw.wiki b/doc/manual/en/Coturn.raw.wiki new file mode 100644 index 000000000..8747ffaaa --- /dev/null +++ b/doc/manual/en/Coturn.raw.wiki @@ -0,0 +1,67 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Coturn|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Coturn (VoIP Helper) == +|| {{attachment:Coturn-icon_en_V01.png|Coturn icon}} || + +'''Available since''': version 20.8 + +Coturn is a server to facilitate audio/video calls and conferences by providing an implementation of TURN and STUN protocols. WebRTC, SIP and other communication servers can use it to establish a call between parties who are otherwise unable connect to each other. + +It is not meant to be used directly by users. Servers such as Matrix Synapse need to be configured with the details provided on the Coturn app page. Apart from Matrix Synapse, Jitsi, Ejabberd, Nextcloud Talk, etc. can use Coturn server for audio/video calls and conferences. There is no need for the servers to be running on the same machine as !FreedomBox and external servers can use Coturn running on !FreedomBox. + +Coturn is configured in !FreedomBox as an advanced app. This means that you need to check "Show advanced apps and features" in "General Configuration" to see Coturn icon in the "Apps" section. + +=== How it works === + +When making an audio/video call, it is best to route the media streams between two peers directly. This will give the best possible latency (better signal quality) and avoid depending on a centralized server (privacy). It scales well because a simple chat server can host thousands of calls without involving the server in any way other than to setup the call. However, this approach does not work most of the time to due to how networks are configured. Most peers on the network do not have a unique IP address allocated to them. They work hidden behind a network device that performs "Network Address Translation" (NAT) for them. This means that the two peers have no way of reaching each other. + +To address this problem, a simple technique known as STUN was introduced. With the help of a third party STUN server, the peers can trick the NAT devices, to carry the traffic between the two peers. Unfortunately, this trick only works about 80% of the time. So, if STUN fails, peers have no choice but to route their traffic through an intermediary server called TURN server. All the mechanism of trying out STUN first and then falling back to TURN is described in a protocol known as ICE. + +On !FreedomBox, Coturn provides both STUN and TURN servers. Both services are provided over TCP as well as UDP. They are provided on unencrypted as well as encrypted channels (with have a higher chance of success). Since STUN servers are very inexpensive and don't consume a lot of server resources, there is no authentication needed to use them. TURN servers on the other hand need authentication. This authentication is highly simplified and does not require maintaining a database of users. A server such as matrix-synapse which is about to setup an audio/video call between two peers will generate a username and password using a shared secret. When the peers use the TURN server, they will be validated using these credentials because the TURN server also knows the same secret. + +In summary, a communication server needs to know the URLs of the STUN/TURN servers along with a shared authentication secret for TURN. After that, during audio/video call setup, they will correctly guide the peers to use STUN/TURN servers. Coturn app in !FreedomBox provides exactly this information. This information can be used to configure a communication server irrespective of whether it is running on the same !FreedomBox or on another server. + +=== Configuring Matrix Synapse === + +Matrix Synapse server in !FreedomBox can be configured to use Coturn TURN/STUN server. In future, when you install Matrix Synapse, !FreedomBox will automatically install Coturn and configure its parameters into Matrix Synapse. To configure Matrix Synapse, edit the file ''/etc/matrix-synapse/homeserver.yaml'' with the following lines: + +{{{ +turn_uris: [ "stun:myfreedombox.example.org:3478?transport=udp", "stun:myfreedombox.example.org:3478?transport=tcp", "turn:myfreedombox.example.org:3478?transport=udp", "turn:myfreedombox.example.org:3478?transport=tcp" ] +turn_shared_secret: "my-freedombox-provided-secret" +turn_user_lifetime: 86400000 +turn_allow_guests: True +}}} + +The value for the `turn_shared_secret` is provided as `static-auth-secret` in `/etc/coturn/freedombox.conf` file. + +And then restart matrix-synapse server by disabling and re-enabling the matrix-synapse app. + +=== Port Forwarding === + +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 Coturn: + * UDP 3478 + * TCP 3478 + * UDP 3479 + * TCP 3479 + * UDP 5349 + * TCP 5349 + * UDP 5350 + * TCP 5350 + * UDP 49152-50175 + * TCP 49152-50175 + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Coturn.raw.xml b/doc/manual/en/Coturn.raw.xml deleted file mode 100644 index 59341536a..000000000 --- a/doc/manual/en/Coturn.raw.xml +++ /dev/null @@ -1,4 +0,0 @@ -
FreedomBox/Manual/Coturn102020-05-30 18:10:51SunilMohanAdapaUpdate the title to emphasize app name over its generic name92020-05-23 19:57:40JamesValleroyadd TableOfContents82020-05-18 23:24:50JamesValleroyremove duplicate word "server"72020-05-18 23:23:07JamesValleroyspelling "known"62020-05-18 23:22:26JamesValleroyadd common acronym (NAT)52020-05-18 23:21:45JamesValleroyspelling42020-05-10 10:33:22fioddorStress the benefits of direct streaming.32020-05-08 19:15:06Drahtseiltiny typo in synapes corrected22020-05-06 06:04:11SunilMohanAdapaUpdate title, include footer12020-05-06 05:59:44SunilMohanAdapaAdd manual page for new app Coturn
Coturn (VoIP Helper)Coturn is a server to facilitate audio/video calls and conferences by providing an implementation of TURN and STUN protocols. WebRTC, SIP and other communication servers can use it to establish a call between parties who are otherwise unable connect to each other. It is not meant to be used directly by users. Servers such as Matrix Synapse need to be configured with the details provided on the Coturn app page. Apart from Matrix Synapse, Jitsi, Ejabberd, Nextcloud Talk, etc. can use Coturn server for audio/video calls and conferences. There is no need for the servers to be running on the same machine as FreedomBox and external servers can use Coturn running on FreedomBox. Coturn is available in FreedomBox since version 20.8 as an advanced app. This means that you need to check "Show advanced apps and features" in "General Configuration" to see Coturn icon in the "Apps" section.
How it worksWhen making an audio/video call, it is best to route the media streams between two peers directly. This will give the best possible latency (better signal quality) and avoid depending on a centralized server (privacy). It scales well because a simple chat server can host thousands of calls without involving the server in any way other than to setup the call. However, this approach does not work most of the time to due to how networks are configured. Most peers on the network do not have a unique IP address allocated to them. They work hidden behind a network device that performs "Network Address Translation" (NAT) for them. This means that the two peers have no way of reaching each other. To address this problem, a simple technique known as STUN was introduced. With the help of a third party STUN server, the peers can trick the NAT devices, to carry the traffic between the two peers. Unfortunately, this trick only works about 80% of the time. So, if STUN fails, peers have no choice but to route their traffic through an intermediary server called TURN server. All the mechanism of trying out STUN first and then falling back to TURN is described in a protocol known as ICE. On FreedomBox, Coturn provides both STUN and TURN servers. Both services are provided over TCP as well as UDP. They are provided on unencrypted as well as encrypted channels (with have a higher chance of success). Since STUN servers are very inexpensive and don't consume a lot of server resources, there is no authentication needed to use them. TURN servers on the other hand need authentication. This authentication is highly simplified and does not require maintaining a database of users. A server such as matrix-synapse which is about to setup an audio/video call between two peers will generate a username and password using a shared secret. When the peers use the TURN server, they will be validated using these credentials because the TURN server also knows the same secret. In summary, a communication server needs to know the URLs of the STUN/TURN servers along with a shared authentication secret for TURN. After that, during audio/video call setup, they will correctly guide the peers to use STUN/TURN servers. Coturn app in FreedomBox provides exactly this information. This information can be used to configure a communication server irrespective of whether it is running on the same FreedomBox or on another server.
Configuring Matrix SynapseMatrix Synapse server in FreedomBox can be configured to use Coturn TURN/STUN server. In future, when you install Matrix Synapse, FreedomBox will automatically install Coturn and configure its parameters into Matrix Synapse. To configure Matrix Synapse, edit the file /etc/matrix-synapse/homeserver.yaml with the following lines: And then restart matrix-synapse server by disabling and re-enabling the matrix-synapse app. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Cubieboard2.raw.wiki b/doc/manual/en/Cubieboard2.raw.wiki new file mode 100644 index 000000000..aad8164d0 --- /dev/null +++ b/doc/manual/en/Cubieboard2.raw.wiki @@ -0,0 +1,40 @@ +== Cubieboard 2 == + +{{attachment:cubieboard2.jpg|Cubieboard 2|width=640,height=426}} + +The Cubieboard 2 is a single board computer based on the Allwinner A20 processor. It doesn't require any non-free firmware to run !FreedomBox, and Wifi capability can be added via a USB adaptor if needed. This board is available in two versions, one with on-board flash and a microSD slot, and a version with two microSD card slots. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] are available for this device. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. + +=== Availability === + + * [[http://cubieboard.org/buy|Full list of suppliers]] + +=== Hardware === + + * CPU: ARM Cortex A7 Dual-Core + * RAM: 1GB DDR3 @960M + * Storage: 4GB internal NAND flash, up to 64GB on uSD slot + * Architecture: armhf + * Ethernet: 10/100, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: Yes + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + + +Cubieboard 2 image is licensed under a Creative Commons Attribution-!ShareAlike 2.0 Generic License by [[https://www.flickr.com/photos/120586634@N05/14673300334/in/photolist-pMbdDm-omCuYN-o5kVMu-dy9jTD-dy99Kz|Flickr]]. diff --git a/doc/manual/en/Cubietruck.raw.wiki b/doc/manual/en/Cubietruck.raw.wiki new file mode 100644 index 000000000..cd7c259fc --- /dev/null +++ b/doc/manual/en/Cubietruck.raw.wiki @@ -0,0 +1,56 @@ +== Cubietruck == + +=== FreedomBox Danube Edition === + +{{attachment:freedombox-danube.jpg|FreedomBox Danube Edition|width=640,height=561}} + +[[http://projectdanube.org|FreedomBox Danube Edition]] is a custom casing around Cubietruck and an SSD-hard drive. + +=== Cubietruck / Cubieboard3 === + +[[http://cubieboard.org/model/|Cubietruck]] (Cubieboard3) is a single board computer with very good performance compared to many other boards. !FreedomBox images are built for this device. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] are provided for this hardware. These SD card images are meant for use with the on-board SD card slot and do not work when used with a separate SD card reader connected via USB. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the Cubietruck and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + +Cubietruck / Cubieboard3 + + * Price: 89 USD + * [[http://cubieboard.org/buy/|List of suppliers]] + +=== Hardware === + + * Open Hardware: No + * CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core + * RAM: 2 GiB DDR3 @ 480 MHz + * Storage: 8 GB NAND flash built-in, 1x microSD slot + * Architecture: armhf + * Ethernet: 10/100/1000, RJ45 + * !WiFi: Broadcom BCM4329/BCM40181 (no free !WiFi drivers + firmware available) + * SATA: 1x 2.0 port + +=== Non-Free Status === + + * Non-free blobs required: ? + * !WiFi: no free !WiFi drivers + firmware available + +=== Known Issues === + + * The on-board !WiFi does not work with free software. A separate [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] is recommended. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +[[http://projectdanube.org/|FreedomBox Danube Edition]] image is copyright Markus Sabadello, used here with permission. diff --git a/doc/manual/en/DateTime.raw.wiki b/doc/manual/en/DateTime.raw.wiki new file mode 100644 index 000000000..0f68e8ca5 --- /dev/null +++ b/doc/manual/en/DateTime.raw.wiki @@ -0,0 +1,26 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/DateTime|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Date & Time == + +This network time server is a program that maintains the system time in synchronization with servers on the Internet. + +You can select your time zone by picking a big city nearby (they are sorted by ''Continent/City'') or select directly the zone with respect to GMT (Greenwich Mean Time). + +{{attachment:DateTime.png}} + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/DateTime.raw.xml b/doc/manual/en/DateTime.raw.xml deleted file mode 100644 index 9bc19c4f2..000000000 --- a/doc/manual/en/DateTime.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/DateTime52020-05-23 20:41:22JamesValleroyRevert to revision 3.42020-05-23 20:40:09JamesValleroyadd TableOfContents32020-03-30 00:08:09JamesValleroytoo many #s in front of END_INCLUDE22017-03-31 20:20:57DrahtseilScreenshot DateTime12016-08-21 09:26:45DrahtseilCreated Date & Time
Date & TimeThis network time server is a program that maintains the system time in synchronization with servers on the Internet. You can select your time zone by picking a big city nearby (they are sorted by Continent/City) or select directly the zone with respect to GMT (Greenwich Mean Time). DateTime.png Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Debian.raw.wiki b/doc/manual/en/Debian.raw.wiki new file mode 100644 index 000000000..6e1192ec4 --- /dev/null +++ b/doc/manual/en/Debian.raw.wiki @@ -0,0 +1,87 @@ +#language en +#pragma section-numbers 2 +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[de/FreedomBox/Hardware/Debian|Deutsch]] - English - [[es/FreedomBox/Hardware/Debian|Español]]-~ + +## BEGIN_INCLUDE + +== Debian == + +##{{attachment:debian.png|Debian|width=425,height=546}} + +!FreedomBox is a [[DebianPureBlends|pure blend]] of Debian. This means that all the work on !FreedomBox is available in Debian as packages. It also means that any machine running Debian can be turned into a !FreedomBox. + +This page describes the process of installing !FreedomBox on a Debian system. Currently, !FreedomBox works in Debian Stable (Buster), Testing (Bullseye), and Unstable (Sid). + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this approach. + +{{{#!wiki caution +'''Use a fresh Debian installation''' + +Installing !FreedomBox changes your Debian system in many important ways. This includes installing a firewall and regenerating server certificates. It is hence recommended that you install !FreedomBox on a fresh Debian installation instead of an existing setup. +}}} + +{{{#!wiki caution +'''Console/GUI logins for non-admin users will be disabled''' + +After !FreedomBox is fully setup, your system will no longer allow users not belonging to the ''admin'' group to log in to the system via console, secure shell (SSH) or graphical login. This behaviour can be disabled from the [[FreedomBox/Manual/Security|Security]] page. Use the administrator account created during !FreedomBox first boot for console logins and add further user accounts to ''admin'' group, if necessary. +}}} + +=== Installing on Debian 10.0 (Buster) or newer === + +Check the Troubleshooting section below, for any tips or workarounds that might help during the install. + + 1. [[InstallingDebianOn|Install Debian]] 10.0 (Buster), or Unstable (Sid) on your hardware. + + 1. Update your package list. + + {{{ +$ sudo apt-get update + }}} + + 1. Install `freedombox` package. + + {{{ +$ sudo DEBIAN_FRONTEND=noninteractive apt-get install freedombox + }}} + + * The "DEBIAN_FRONTEND=noninteractive" will avoid several configuration prompts that would otherwise appear during the install. + + 1. During the installation, you will be provided a secret key that needs to be entered during the initial configuration process. Note this down. The secret can also be read at a later time from the file `/var/lib/plinth/firstboot-wizard-secret`. + + 1. You can start [[FreedomBox/Manual/QuickStart|using]] !FreedomBox. During initial wizard, you will need to enter the secret noted above. + +=== Tips and Troubleshooting === + + 1. !FreedomBox uses !NetworkManager to manage network configuration. If you have configured your network interfaces using Debian installer or by editing `/etc/network/interfaces`, !FreedomBox will not manage those interfaces. (See [[https://bugs.debian.org/797614|bug #797614]].) To let !FreedomBox/NetworkManager manage your network interfaces, edit the `/etc/network/interfaces` manually and ensure that it contains only the following: + + {{{ +auto lo +iface lo inet loopback +}}} + + If you have already completed the setup process without doing this step, you will need to clear out the `/etc/network/interfaces` file keeping only the above lines. Then perform a reboot. On Debian 9 (Stretch), after this network connections configured by the `setup` step above will configure your network. Network interfaces will then be in the `internal` or `external` firewall zone. This is essential for the !FreedomBox's web interface to be reachable from other machines in the network. You can tweak network manager connections with the `nmtui` command if you wish. + + 1. !FreedomBox will use an automatically configured IP address by default. You can assign a static IP address if necessary. Network configuration changes can be done using !FreedomBox web interface or by using the `nmtui` or `nmcli` commands. `nmcli` can be used as follows: + + {{{ + nmcli con mod "Ethernet connection 1" \ + ipv4.addresses A.A.A.A/X \ + ipv4.gateway G.G.G.G \ + ipv4.dns N.N.N.N \ + ipv4.dns-search somedomain.com \ + ipv4.method "manual" \ + ipv4.ignore-auto-dns yes \ + ipv6.method ignore +}}} + + ...with the block capitals and somedomain.com replaced with your actual address, mask description, gateway and dns server details. + + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +See the [[https://www.debian.org/logos/|Debian logo]] page for information on its copyright. diff --git a/doc/manual/en/Deluge.raw.wiki b/doc/manual/en/Deluge.raw.wiki new file mode 100644 index 000000000..52df0e3cf --- /dev/null +++ b/doc/manual/en/Deluge.raw.wiki @@ -0,0 +1,49 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Deluge|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Deluge (BitTorrent Web Client) == +|| {{attachment:Deluge-icon_en_V01.png|Deluge icon}} || + +'''Available since''': version 0.5 + +=== What is Deluge? === + +!BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two !BitTorrent web clients available in !FreedomBox: [[FreedomBox/Manual/Transmission|Transmission]] and Deluge. They have similar features, but you may prefer one over the other. + +Deluge is a lightweight !BitTorrent client that is highly configurable. Additional functionality can be added by installing plugins. + +=== Screenshot === + +{{attachment:deluge.png|Deluge Web UI|width=800}} + +=== Initial Setup === + +After installing Deluge, it can be accessed by pointing your browser to {{{https:///deluge}}}. You will need to enter a password to login: + +{{attachment:deluge_login.png|Deluge Login}} + +The initial password is "deluge". The first time that you login, Deluge will ask if you wish to change the password. You should change it to something that is harder to guess. + +Next you will be shown the connection manager. Click on the first entry (Offline - 127.0.0.1:58846). Then click "Start Daemon" to start the Deluge service that will run in the background. + +{{attachment:deluge_connection_manager.png|Deluge Connection Manager (Offline)}} + +Now it should say "Online". Click "Connect" to complete the setup. + +{{attachment:deluge_connection_manager_2.png|Deluge Connection Manager (Online)}} + +At this point, you are ready to begin using Deluge. You can make further changes in the Preferences, or add a torrent file or URL. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Deluge.raw.xml b/doc/manual/en/Deluge.raw.xml deleted file mode 100644 index a85e389da..000000000 --- a/doc/manual/en/Deluge.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Deluge132020-05-30 17:53:48SunilMohanAdapaUpdate the title to emphasize app name over its generic name122020-05-23 19:48:36JamesValleroyadd TableOfContents112016-12-31 01:32:15JamesValleroyadd initial setup directions102016-12-30 19:20:00JamesValleroyreword92016-12-30 19:14:16JamesValleroyadd intro paragraph82016-12-30 19:00:50JamesValleroyno space in "BitTorrent"72016-12-26 18:07:46JamesValleroyadd screenshot62016-09-01 19:05:24Drahtseiladapted title to Plinth wording52016-04-10 07:26:48PhilippeBaretAdded bottom navigation link42015-12-15 20:41:02PhilippeBaretCorrection32015-12-15 20:40:16PhilippeBaretCorrection22015-12-15 18:16:28PhilippeBaretAdded Deluge definition12015-12-15 16:59:01PhilippeBaretCreated new Deluge page for manual
Deluge (BitTorrent Web Client)
What is Deluge?BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two BitTorrent web clients available in FreedomBox: Transmission and Deluge. They have similar features, but you may prefer one over the other. Deluge is a lightweight BitTorrent client that is highly configurable. Additional functionality can be added by installing plugins.
ScreenshotDeluge Web UI
Initial SetupAfter installing Deluge, it can be accessed by pointing your browser to https://<your freedombox>/deluge. You will need to enter a password to login: Deluge Login The initial password is "deluge". The first time that you login, Deluge will ask if you wish to change the password. You should change it to something that is harder to guess. Next you will be shown the connection manager. Click on the first entry (Offline - 127.0.0.1:58846). Then click "Start Daemon" to start the Deluge service that will run in the background. Deluge Connection Manager (Offline) Now it should say "Online". Click "Connect" to complete the setup. Deluge Connection Manager (Online) At this point, you are ready to begin using Deluge. You can make further changes in the Preferences, or add a torrent file or URL. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Developer.raw.wiki b/doc/manual/en/Developer.raw.wiki new file mode 100644 index 000000000..6be14f482 --- /dev/null +++ b/doc/manual/en/Developer.raw.wiki @@ -0,0 +1,13 @@ +## BEGIN_INCLUDE + +The !FreedomBox Developer Manual provides a step by step tutorial for writing apps for !FreedomBox and an API reference. It is available from [[https://docs.freedombox.org|docs.freedombox.org]]. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Diagnostics.raw.wiki b/doc/manual/en/Diagnostics.raw.wiki new file mode 100644 index 000000000..86af0d4a5 --- /dev/null +++ b/doc/manual/en/Diagnostics.raw.wiki @@ -0,0 +1,23 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Diagnostics|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Diagnostics == + +The system diagnostic test will run a number of checks on your system to confirm that applications and services are working as expected. + +Just click ''Run Diagnostics''. This may take some minutes. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Diagnostics.raw.xml b/doc/manual/en/Diagnostics.raw.xml deleted file mode 100644 index de0b139c1..000000000 --- a/doc/manual/en/Diagnostics.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Diagnostics12016-08-21 09:43:52DrahtseilCreated Diagnostics
DiagnosticsThe system diagnostic test will run a number of checks on your system to confirm that applications and services are working as expected. Just click Run Diagnostics. This may take some minutes. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Download.raw.wiki b/doc/manual/en/Download.raw.wiki new file mode 100644 index 000000000..45ce73ac7 --- /dev/null +++ b/doc/manual/en/Download.raw.wiki @@ -0,0 +1,261 @@ +# language en +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[de/FreedomBox/Download|Deutsch]] - English - [[es/FreedomBox/Download|Español]] - [[fr/FreedomBox/Telecharger|Français]] -~ +---- +<> + +## BEGIN_INCLUDE + += Download and Install = + +Welcome to the !FreedomBox download page. + + '''Note''': If you purchased a !FreedomBox kit, this section is not meant for you, so you can just skip it entirely. (Unless you specifically want to build an alternative software image). + +You may either install !FreedomBox on one of the supported inexpensive [[FreedomBox/Hardware|hardware]] devices, on any [[FreedomBox/Hardware/Debian|Debian]] operating system, or deploy it on a virtual machine. + +Installing on a machine running a Debian system is easy because !FreedomBox is available as a package. We do recommend to install !FreedomBox on a supported single board computer (SBC). The board will be dedicated for !FreedomBox use from home, this will prevent a lot of risks, such as accidental misconfiguration by the user. In case of trouble deciding which hardware is best for you or during the installation, please use the [[FreedomBox/Support|support page]] or read the [[FreedomBox/QuestionsAndAnswers|Questions and Answers]] page based on posts on the [[https://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss|Freedombox-discuss]] mailing list archives. + +== Downloading on Debian == + +If you are installing on an existing Debian installation, you don't need to download these images. Instead, read the [[FreedomBox/Hardware/Debian|instructions]] on setting up !FreedomBox on Debian. + +== Downloading for SBC or Virtual Machine == + +=== Prepare your device === + +Read the hardware specific instructions on how to prepare your device at the [[FreedomBox/Hardware|Hardware]] section. On the web, there is a lot of documentation about setting your device up and flashing USB or SD Cards to boot your hardware. + +=== Downloading Images === + +Recent images for supported targets are available here: + + * Official Images: https://freedombox.org/download/ + + * Official Images: https://ftp.freedombox.org/pub/freedombox/ + +=== Verifying the Downloaded Images === + +It is important to verify the images you have downloaded to ensure that the file has not been corrupted during the transmission and that it is indeed the image built by !FreedomBox developers. + +'''Note:''' Testing and nightly images are automatically signed by the !FreedomBox CI server. + + * First open a terminal and import the public keys of the !FreedomBox developers who built the images: + {{{ +$ gpg --recv-keys BCBEBD57A11F70B23782BC5736C361440C9BC971 + +$ gpg --recv-keys 7D6ADB750F91085589484BE677C0C75E7B650808 + +# This is the FreedomBox CI server's key +$ gpg --recv-keys 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8 +}}} + If this command shows an error such as ''new key but contains no user ID - skipped'', then use a different keyserver to download the keys: + {{{ +$ gpg --keyserver keys.gnupg.net --recv-keys BCBEBD57A11F70B23782BC5736C361440C9BC971 +$ gpg --keyserver keys.gnupg.net --recv-keys 7D6ADB750F91085589484BE677C0C75E7B650808 +$ gpg --keyserver keys.gnupg.net --recv-keys 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8 + }}} + Or + {{{ +$ gpg --keyserver keyserver.ubuntu.com --recv-keys BCBEBD57A11F70B23782BC5736C361440C9BC971 +$ gpg --keyserver keyserver.ubuntu.com --recv-keys 7D6ADB750F91085589484BE677C0C75E7B650808 +$ gpg --keyserver keyserver.ubuntu.com --recv-keys 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8 + }}} + * Next, verify the fingerprint of the public keys: + {{{ +$ gpg --fingerprint BCBEBD57A11F70B23782BC5736C361440C9BC971 +pub 4096R/0C9BC971 2011-11-12 + Key fingerprint = BCBE BD57 A11F 70B2 3782 BC57 36C3 6144 0C9B C971 +uid Sunil Mohan Adapa +sub 4096R/4C1D4B57 2011-11-12 + +$ gpg --fingerprint 7D6ADB750F91085589484BE677C0C75E7B650808 +pub 4096R/7B650808 2015-06-07 [expires: 2020-06-05] + Key fingerprint = 7D6A DB75 0F91 0855 8948 4BE6 77C0 C75E 7B65 0808 +uid James Valleroy +uid James Valleroy +sub 4096R/25D22BF4 2015-06-07 [expires: 2020-06-05] +sub 4096R/DDA11207 2015-07-03 [expires: 2020-07-01] +sub 2048R/2A624357 2015-12-22 + +$ gpg --fingerprint 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8 +pub rsa4096 2018-06-06 [SC] + 013D 86D8 BA32 EAB4 A669 1BF8 5D41 53D6 FE18 8FC8 +uid [ unknown] FreedomBox CI (Continuous Integration server) +sub rsa4096 2018-06-06 [E] +}}} + * Finally, verify your downloaded image with its signature file `.sig`. For example: + {{{ +$ gpg --verify freedombox-stable-free_buster_cubietruck-armhf.img.xz.sig +gpg: assuming signed data in 'freedombox-stable-free_buster_cubietruck-armhf.img.xz' +gpg: Signature made Sat 09 May 2020 11:54:01 AM EDT +gpg: using RSA key 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8 +gpg: Good signature from "FreedomBox CI (Continuous Integration server) " [undefined] +gpg: WARNING: This key is not certified with a trusted signature! +gpg: There is no indication that the signature belongs to the owner. +Primary key fingerprint: 013D 86D8 BA32 EAB4 A669 1BF8 5D41 53D6 FE18 8FC8 +}}} + +=== Installation === + +After the download you can use the image to boot your chosen [[FreedomBox/Hardware|hardware]] (including virtual machines). You'll need to copy the image to the memory card or USB stick as follows: + + 1. Figure out which device your card actually is. + + 1. Unplug your card. + + 1. Run `dmesg -w` to show and follow the kernel messages. + + 1. Plug your card in. You will see messages such as following: + {{{ +[33299.023096] usb 4-6: new high-speed USB device number 12 using ehci-pci +[33299.157160] usb 4-6: New USB device found, idVendor=058f, idProduct=6361 +[33299.157162] usb 4-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3 +[33299.157164] usb 4-6: Product: Mass Storage Device +[33299.157165] usb 4-6: Manufacturer: Generic +[33299.157167] usb 4-6: SerialNumber: XXXXXXXXXXXX +[33299.157452] usb-storage 4-6:1.0: USB Mass Storage device detected +[33299.157683] scsi host13: usb-storage 4-6:1.0 +[33300.155626] scsi 13:0:0:0: Direct-Access Generic- Compact Flash 1.01 PQ: 0 ANSI: 0 +[33300.156223] scsi 13:0:0:1: Direct-Access Multiple Flash Reader 1.05 PQ: 0 ANSI: 0 +[33300.157059] sd 13:0:0:0: Attached scsi generic sg4 type 0 +[33300.157462] sd 13:0:0:1: Attached scsi generic sg5 type 0 +[33300.462115] sd 13:0:0:1: [sdg] 30367744 512-byte logical blocks: (15.5 GB/14.4 GiB) +[33300.464144] sd 13:0:0:1: [sdg] Write Protect is off +[33300.464159] sd 13:0:0:1: [sdg] Mode Sense: 03 00 00 00 +[33300.465896] sd 13:0:0:1: [sdg] No Caching mode page found +[33300.465912] sd 13:0:0:1: [sdg] Assuming drive cache: write through +[33300.470489] sd 13:0:0:0: [sdf] Attached SCSI removable disk +[33300.479493] sdg: sdg1 +[33300.483566] sd 13:0:0:1: [sdg] Attached SCSI removable disk +}}} + + 1. In the above case, the disk that is newly inserted is available as ''/dev/sdg''. Very carefully note this and use it in the copying step below. + + 1. Decompress the downloaded image using tar: + {{{ +$ xz -d freedombox-stable-free_buster_cubietruck-armhf.img.xz +}}} + + The above command is an example for the ''cubietruck'' stable image. Your downloaded file name will be different. + + 1. Copy the image to your card. Double check to make sure you don't + write to your computer's main storage (such as /dev/sda). Also + make sure that you don't run this step as root to avoid potentially + overriding data on your hard drive due to a mistake in identifying the device or errors while typing the command. USB disks and SD cards inserted into the system should typically be write accessible to normal users. If you don't have permission to write to your SD card as a user, you may need to run this command as root. In this case triple check everything before you run the command. Another safety precaution is to unplug all external disks except the SD card before running the command. + + For example, if your SD card is ''/dev/sdg'' as noted in the first step + above, then to copy the image, run: + {{{ +$ dd bs=1M if=freedombox-stable-free_buster_cubietruck-armhf.img of=/dev/sdg conv=fdatasync status=progress +}}} + +An alternative to copy to SD card command + {{{ +$ cat freedombox-stable-free_buster_cubietruck-armhf.img > /dev/sdg ; sync +}}} + +On MS Windows you will need a tool like ''etcher''. +On MacOS (OSX) you can use programs like ''balenaetcher'' and ''rosaimagewriter''. + + The above command is an example for the ''cubietruck'' stable image. Your image file name will be different. + + When picking a device, use the drive-letter destination, like ''/dev/sdg'', not a numbered destination, like ''/dev/sdg1''. The device + without a number refers to the entire device, while the device with + a number refers to a specific partition. We want to use the whole + device. Downloaded images contain complete information about how many partitions there should be, their sizes and types. You don't have to format your SD card or create partitions. All the data on the SD card will be wiped off during the write process. + + 1. Use the image by inserting the SD card or USB disk into the target device and booting from it. Your device should also be prepared (see the [[FreedomBox/Hardware|Hardware]] section). + + 1. Read (the rest of) the [[FreedomBox/Manual|Manual]] for instructions on how to use applications in !FreedomBox. + +=== Troubleshooting === + + * Can't boot off your MicroSD card (and/or disk utilities like GPartEd report a missing/corrupt partition table). + You likely forgot or failed to extract the .img file with `xz -d` before writing it to your device (e.g. ''/dev/sdg''). + +== Obtaining Source Code == + +!FreedomBox is fully [[https://www.gnu.org/philosophy/free-sw.html|free software]] and you can obtain the source code to study, modify and distribute improvements. + +=== From within FreedomBox === + +!FreedomBox is made up of several software programs and you can obtain the source code to any of them. These instructions are similar to obtaining and [[https://www.debian.org/doc/manuals/maint-guide/build.en.html|building]] [[https://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.en.html|source code]] [[https://wiki.debian.org/BuildingTutorial|for Debian]] since !FreedomBox is a pure blend of Debian. Using this process you can obtain the source code to the exact version of the package you are currently using in !FreedomBox. + + 1. To see the list of software packages installed on your !FreedomBox, run the following in a terminal: + {{{ +dpkg -l +}}} + 1. To obtain the source code for any of those programs, then run: + {{{ +apt source +}}} + This requires that the [[SourcesList|apt sources list]] contains information about the source code repositories. These are present by default on all !FreedomBox images. If you have installed !FreedomBox using a package from Debian, you need to ensure that source repositories are added in the file. + 1. To build the package from source code, first install its dependencies + {{{ +apt build-dep +}}} + Switch to the source directory created by the ''apt source'' command: + {{{ +cd +}}} + Then build the package + {{{ + dpkg-buildpackage -rfakeroot -uc +}}} + 1. Install the package: + {{{ + dpkg -i ../.deb +}}} + +=== Other Ways to Obtain Source Code === + + 1. Source code for any of the packages can be browsed and searched using the web interface at [[https://sources.debian.org/|sources.debian.org]]. For example, see the [[https://sources.debian.org/src/plinth/|plinth]] package. + + 1. Source code and pre-built binary package for any version of a package including historic versions can be obtained from [[https://snapshot.debian.org/|snapshot.debian.org]]. For example, see the [[https://snapshot.debian.org/package/plinth/|plinth]] package. + + 1. You can also obtain the links to upstream project homepage, upstream version control, Debian's version control, changelog, etc. from the Debian tracker page for a project at [[https://tracker.debian.org/|tracker.debian.org]]. For example, see the tracker page for [[https://tracker.debian.org/pkg/plinth|plinth]] package. + + 1. You can build and install a package from its Debian's version control repository. For example, + {{{ + git clone https://salsa.debian.org/freedombox-team/freedombox.git + cd freedombox + apt build-dep . + dpkg-buildpackage -rfakeroot -uc + dpkg -i ../freedombox*.deb +}}} + +=== Building Disk Images === + +You can also build !FreedomBox disk images for various hardware platforms using the freedom-maker tool. This is also available as a Debian package and source code for it may be obtained using the above methods. [[https://salsa.debian.org/freedombox-team/freedom-maker/blob/master/README.md|Build instructions]] for creating disk images are available as part of the source code for freedom-maker package. + +!FreedomBox disk images are built and uploaded to official servers using automated Continuous Integration infrastructure. This infrastructure is available as [[https://salsa.debian.org/freedombox-team/infrastructure|source code]] too and provides accurate information on how !FreedomBox images are built. + +==== U-boot on Pioneer Edition Images ==== + +There is one minor exception to the u-boot package present on the hardware sold as !FreedomBox Home Server Kits Pioneer Edition. It contains a small but important fix that is not part of Debian sources. The fork of the Debian u-boot source repository along with the minor change done by the !FreedomBox is available as a [[https://salsa.debian.org/freedombox-team/u-boot|separate repository]]. We expect this change to be available in upstream u-boot eventually and this repository will not be needed. This package can be built on a Debian armhf machine as follows (cross compiling is also possible, simply follow instructions for cross compiling Debian packages): + +{{{ +apt install git git-buildpackage +git clone https://salsa.debian.org/freedombox-team/u-boot.git +cd u-boot +pbuilder create --distribution=buster +gbp buildpackage --git-pbuilder +}}} + +The u-boot Debian package will be available in ''u-boot-sunxi*.deb''. This package will contain + +{{{ +mkdir temp +dpkg -x u-boot-suxi*.deb temp +unxz +dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of= seek=8 bs=1k conv=notrunc +}}} + +The resulting image will have the modified u-boot in it. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/DynamicDNS.raw.wiki b/doc/manual/en/DynamicDNS.raw.wiki new file mode 100644 index 000000000..f476c0909 --- /dev/null +++ b/doc/manual/en/DynamicDNS.raw.wiki @@ -0,0 +1,89 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/DynamicDNS|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Dynamic DNS Client == + +=== What is Dynamic DNS? === + +In order to reach a server on the Internet, the server needs to have permanent address also known as the static IP address. Many Internet service providers don't provide home users with a static IP address or they charge more providing a static IP address. Instead they provide the home user with an IP address that changes every time the user connects to the Internet. Clients wishing to contact the server will have difficulty reaching the server. + +Dynamic DNS service providers assist in working around a problem. First they provide you with a domain name, such as 'myhost.example.org'. Then they associate your IP address, whenever it changes, with this domain name. Then anyone intending to reach the server will be to contact the server using the domain name 'myhost.example.org' which always points to the latest IP address of the server. + +For this to work, every time you connect to the Internet, you will have to tell your Dynamic DNS provider what your current IP address is. Hence you need special software on your server to perform this operation. The Dynamic DNS function in !FreedomBox will allow users without a static public IP address to push the current public IP address to a Dynamic DNS Server. This allows you to expose services on !FreedomBox, such as ownCloud, to the Internet. + +=== GnuDIP vs. Update URL === + +There are two main mechanism to notify the Dynamic DNS server of your new IP address; using the ''GnuDIP'' protocol and using the ''Update URL'' mechanism. + +If a service provided using update URL is not properly secured using HTTPS, your credentials may be visible to an adversary. Once an adversary gains your credentials, they will be able to replay your request your server and hijack your domain. + +On the other hand, the GnuDIP protocol will only transport a salted MD5 value of your password, in a way that is secure against replay attacks. + +=== Using the GnuDIP protocol === + + 1. Register an account with any Dynamic DNS service provider. A free service provided by the !FreedomBox community is available at https://gnudip.datasystems24.net . + + 1. In !FreedomBox UI, enable the Dynamic DNS Service. + + 1. Select ''GnuDIP'' as ''Service type'', enter your Dynamic DNS service provider address (for example, gnudip.datasystems24.net) into ''GnuDIP Server Address'' field. + + {{attachment:DynamicDNS-Settings.png|Dynamic DNS Settings|width=800}} + + 1. Fill ''Domain Name'', ''Username'', ''Password'' information given by your provider into the corresponding fields. + +=== Using an Update URL === + +This feature is implemented because the most popular Dynamic DNS providers are using Update URLs mechanism. + + 1. Register an account with a Dynamic DNS service provider providing their service using Update URL mechanism. Some example providers are listed in the configuration page itself. + + 1. In !FreedomBox UI, enable the Dynamic DNS service. + + 1. Select ''other Update URL'' as ''Service type'', enter the update URL given by your provider into ''Update URL'' field. + + 1. If you browse the update URL with your Internet browser and a warning message about untrusted certificate appears, then enable ''accept all SSL certificates''. WARNING: your credentials may be readable here because man-in-the-middle attacks are possible! Consider choosing a better service provider instead. + + 1. If you browse the update URL with your Internet browser and the username/password box appears, enable ''use HTTP basic authentication'' checkbox and provide the ''Username'' and ''Password''. + + 1. If the update URL contains your current IP address, replace the IP address with the string ''''. + +=== Checking If It Works === + + 1. Make sure that external services you have enabled such as /jwchat, /roundcube and /ikiwiki are available on your domain address. + + 1. Go to the ''Status'' page, make sure that the NAT type is detected correctly. If your !FreedomBox is behind a NAT device, this should be detected over there (Text: ''Behind NAT''). If your !FreedomBox has a public IP address assigned, the text should be "Direct connection to the Internet". + + 1. Check that the last update status is not ''failed''. + +=== Recap: How to create a DNS name with GnuDIP === +/* to delete or to replace the old text */ + 1. Access to [[https://gnudip.datasystems24.net|GnuIP login page]] (answer Yes to all pop ups) + 1. Click on "Self Register" + 1. Fill the registration form (Username and domain will form the public IP address [username.domain]) + 1. Take note of the username/hostname and password that will be used on the !FreedomBox app. + 1. Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login). + 1. Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices). + 1. Leave the GnuDIP interface and open the Dynamic DNS Client app page in your !FreedomBox. + 1. Click on "Set Up" in the top menu. + 1. Activate Dynamic DNS + 1. Choose GnuDIP service. + 1. Add server address (gnudip.datasystems24.net) + 1. Add your fresh domain name (username.domain, ie [username].freedombox.rocks) + 1. Add your fresh username (the one used in your new IP address) and password + 1. Add your GnuDIP password + 1. Fill the option with http://myip.datasystems24.de (try this url in your browser, you will figure out immediately) + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/DynamicDNS.raw.xml b/doc/manual/en/DynamicDNS.raw.xml deleted file mode 100644 index 59f39f86e..000000000 --- a/doc/manual/en/DynamicDNS.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/DynamicDNS172020-05-23 20:41:48JamesValleroyadd TableOfContents162019-07-31 13:18:03NikolasNybyfix typo152019-02-26 03:20:16JamesValleroyspelling142018-03-11 03:11:04JosephNuthalapatiFix oversized image132017-03-31 20:35:42Drahtseilupdated screenshot122016-09-09 15:40:08SunilMohanAdapaMinor indentation fix with screenshot112016-09-01 19:18:48Drahtseiladapted title to Plinth wording102016-08-15 18:46:51DrahtseilScreenshot GNU-DIP92016-04-14 14:22:41PhilippeBaretAdded accurate How to create a DNS name with GnuDIP82016-04-10 07:15:47PhilippeBaretAdded bottom navigation link72016-01-11 06:28:36PhilippeBaretCorrection62015-12-15 18:48:25PhilippeBaretAdded definition title to Dynamic DNS page52015-09-13 15:02:37SunilMohanAdapaDemote headings one level for inclusion into manual42015-09-13 13:14:41SunilMohanAdapaMove DynamicDNS page to manual32015-08-13 13:03:13SunilMohanAdapaAdd more introduction and re-organize.22015-08-09 21:38:52DanielSteglich12015-08-09 21:23:48DanielSteglich
Dynamic DNS Client
What is Dynamic DNS?In order to reach a server on the Internet, the server needs to have permanent address also known as the static IP address. Many Internet service providers don't provide home users with a static IP address or they charge more providing a static IP address. Instead they provide the home user with an IP address that changes every time the user connects to the Internet. Clients wishing to contact the server will have difficulty reaching the server. Dynamic DNS service providers assist in working around a problem. First they provide you with a domain name, such as 'myhost.example.org'. Then they associate your IP address, whenever it changes, with this domain name. Then anyone intending to reach the server will be to contact the server using the domain name 'myhost.example.org' which always points to the latest IP address of the server. For this to work, every time you connect to the Internet, you will have to tell your Dynamic DNS provider what your current IP address is. Hence you need special software on your server to perform this operation. The Dynamic DNS function in FreedomBox will allow users without a static public IP address to push the current public IP address to a Dynamic DNS Server. This allows you to expose services on FreedomBox, such as ownCloud, to the Internet.
GnuDIP vs. Update URLThere are two main mechanism to notify the Dynamic DNS server of your new IP address; using the GnuDIP protocol and using the Update URL mechanism. If a service provided using update URL is not properly secured using HTTPS, your credentials may be visible to an adversary. Once an adversary gains your credentials, they will be able to replay your request your server and hijack your domain. On the other hand, the GnuDIP protocol will only transport a salted MD5 value of your password, in a way that is secure against replay attacks.
Using the GnuDIP protocolRegister an account with any Dynamic DNS service provider. A free service provided by the FreedomBox community is available at . In FreedomBox UI, enable the Dynamic DNS Service. Select GnuDIP as Service type, enter your Dynamic DNS service provider address (for example, gnudip.datasystems24.net) into GnuDIP Server Address field. Dynamic DNS Settings Fill Domain Name, Username, Password information given by your provider into the corresponding fields.
Using an Update URLThis feature is implemented because the most popular Dynamic DNS providers are using Update URLs mechanism. Register an account with a Dynamic DNS service provider providing their service using Update URL mechanism. Some example providers are listed in the configuration page itself. In FreedomBox UI, enable the Dynamic DNS service. Select other Update URL as Service type, enter the update URL given by your provider into Update URL field. If you browse the update URL with your Internet browser and a warning message about untrusted certificate appears, then enable accept all SSL certificates. WARNING: your credentials may be readable here because man-in-the-middle attacks are possible! Consider choosing a better service provider instead. If you browse the update URL with your Internet browser and the username/password box appears, enable use HTTP basic authentication checkbox and provide the Username and Password. If the update URL contains your current IP address, replace the IP address with the string <Ip>.
Checking If It WorksMake sure that external services you have enabled such as /jwchat, /roundcube and /ikiwiki are available on your domain address. Go to the Status page, make sure that the NAT type is detected correctly. If your FreedomBox is behind a NAT device, this should be detected over there (Text: Behind NAT). If your FreedomBox has a public IP address assigned, the text should be "Direct connection to the Internet". Check that the last update status is not failed.
Recap: How to create a DNS name with GnuDIPto delete or to replace the old text Access to GnuIP login page (answer Yes to all pop ups) Click on "Self Register" Fill the registration form (Username and domain will form the public IP address [username.domain]) Take note of the username/hostname and password that will be used on the FreedomBox app. Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login). Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices). Leave the GnuDIP interface and open the Dynamic DNS Client app page in your FreedomBox. Click on "Set Up" in the top menu. Activate Dynamic DNS Choose GnuDIP service. Add server address (gnudip.datasystems24.net) Add your fresh domain name (username.domain, ie [username].freedombox.rocks) Add your fresh username (the one used in your new IP address) and password Add your GnuDIP password Fill the option with (try this url in your browser, you will figure out immediately) Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Firewall.raw.wiki b/doc/manual/en/Firewall.raw.wiki new file mode 100644 index 000000000..7e4d12abb --- /dev/null +++ b/doc/manual/en/Firewall.raw.wiki @@ -0,0 +1,209 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Firewall|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Firewall == + +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. + +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. + +{{attachment:Firewall.png|Firewall|width=800}} + +Firewall management in !FreedomBox is done using [[https://fedoraproject.org/wiki/FirewallD|FirewallD]]. + +=== Interfaces === + +Each interface is needs to be assigned to one (and only one) zone. If an interface is not assigned any zone, it is automatically assigned `external` zone. Whatever rules are in effect for a zone, those rules start to apply for that interface. For example, if HTTP traffic is allowed in a particular zone, then web requests will be accepted on all the addresses configured for all the interfaces assigned to that zone. + +There are primarily two firewall zones used. The `internal` zone is meant for services that are provided to all machines on the local network. This may include services such as streaming media and simple file sharing. The `external` zone is meant for services that are provided publicly on the Internet. This may include services such as blog, website, email web client etc. + +For details on how network interfaces are configured by default, see the [[FreedomBox/Manual/Networks|Networks]] section. + +=== Opening Custom Ports === + +Cockpit app provides advanced management of firewall. Both !FreedomBox and Cockpit operate over firewalld and are hence compatible with each other. In particular, Cockpit can be used to open custom services or ports on !FreedomBox. This is useful if you are manually running your own services in addition to the services provided by !FreedomBox on the same machine. + +{{attachment:firewalld-cockpit.png}} + +=== FreedomBox Ports/Services === + +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. + +||'''Service'''||'''Port''' ||'''External'''||'''Enabled by default'''||'''Status shown in !FreedomBox'''||'''Managed by !FreedomBox'''|| +|| Minetest || 30000/udp || {*} || {X} || (./) || (./) || +|| XMPP Client || 5222/tcp || {*} || {X} || (./) || (./) || +|| XMPP Server || 5269/tcp || {*} || {X} || (./) || (./) || +|| XMPP Bosh || 5280/tcp || {*} || {X} || (./) || (./) || +|| NTP || 123/udp || {o} || (./) || (./) || (./) || +|| !FreedomBox Web Interface (Plinth) || 443/tcp || {*} || (./) || (./) || {X} || +|| Quassel || 4242/tcp || {*} || {X} || (./) || (./) || +|| SIP || 5060/tcp || {*} || {X} || (./) || (./) || +|| SIP || 5060/udp || {*} || {X} || (./) || (./) || +|| SIP-TLS || 5061/tcp || {*} || {X} || (./) || (./) || +|| SIP-TLS || 5061/udp || {*} || {X} || (./) || (./) || +|| RTP || 1024-65535/udp || {*} || {X} || (./) || (./) || +|| SSH || 22/tcp || {*} || (./) || (./) || {X} || +|| mDNS || 5353/udp || {o} || (./) || (./) || (./) || +|| Tor (Socks) || 9050/tcp || {o} || {X} || (./) || (./) || +|| Obfsproxy || /tcp || {*} || {X} || (./) || (./) || +|| OpenVPN || 1194/udp || {*} || {X} || (./) || (./) || +|| Mumble || 64378/tcp || {*} || {X} || (./) || (./) || +|| Mumble || 64378/udp || {*} || {X} || (./) || (./) || +|| Privoxy || 8118/tcp || {o} || {X} || (./) || (./) || +|| JSXC || 80/tcp || {*} || {X} || {X} || {X} || +|| JSXC || 443/tcp || {*} || {X} || {X} || {X} || +|| DNS || 53/tcp || {o} || {X} || {X} || {X} || +|| DNS || 53/udp || {o} || {X} || {X} || {X} || +|| DHCP || 67/udp || {o} || (./) || {X} || {X} || +|| Bootp || 67/tcp || {o} || {X} || {X} || {X} || +|| Bootp || 67/udp || {o} || {X} || {X} || {X} || +|| Bootp || 68/tcp || {o} || {X} || {X} || {X} || +|| Bootp || 68/udp || {o} || {X} || {X} || {X} || +|| LDAP || 389/tcp || {o} || {X} || {X} || {X} || +|| LDAPS || 636/tcp || {o} || {X} || {X} || {X} || + +=== Manual operation === + +See [[https://fedoraproject.org/wiki/FirewallD|FirewallD]] documentation for more information on the basic concepts and comprehensive documentation. + +==== Enable/disable firewall ==== + +To disable firewall +{{{ +service firewalld stop +}}} + +or with systemd +{{{ +systemctl stop firewalld +}}} + +To re-enable firewall +{{{ +service firewalld start +}}} + +or with systemd +{{{ +systemctl start firewalld +}}} + +==== Modifying services/ports ==== + +You can manually add or remove a service from a zone. + +To see list of services enabled: +{{{ +firewall-cmd --zone= --list-services +}}} + +Example: +{{{ +firewall-cmd --zone=internal --list-services +}}} + +To see list of ports enabled: +{{{ +firewall-cmd --zone= --list-ports +}}} + +Example: +{{{ +firewall-cmd --zone=internal --list-ports +}}} + +To remove a service from a zone: +{{{ +firewall-cmd --zone= --remove-service= +firewall-cmd --permanent --zone= --remove-service= +}}} + +Example: +{{{ +firewall-cmd --zone=internal --remove-service=xmpp-bosh +firewall-cmd --permanent --zone=internal --remove-service=xmpp-bosh +}}} + +To remove a port from a zone: +{{{ +firewall-cmd --zone=internal --remove-port=/ +firewall-cmd --permanent --zone=internal --remove-port=/ +}}} + +Example: +{{{ +firewall-cmd --zone=internal --remove-port=5353/udp +firewall-cmd --permanent --zone=internal --remove-port=5353/udp +}}} + +To add a service to a zone: +{{{ +firewall-cmd --zone= --add-service= +firewall-cmd --permanent --zone= --add-service= +}}} + +Example: +{{{ +firewall-cmd --zone=internal --add-service=xmpp-bosh +firewall-cmd --permanent --zone=internal --add-service=xmpp-bosh +}}} + +To add a port to a zone: +{{{ +firewall-cmd --zone=internal --add-port=/ +firewall-cmd --permanent --zone=internal --add-port=/ +}}} + +Example: +{{{ +firewall-cmd --zone=internal --add-port=5353/udp +firewall-cmd --permanent --zone=internal --add-port=5353/udp +}}} + +==== Modifying the zone of interfaces ==== + +You can manually change the assignment of zones of each interfaces after they have been autuomatically assigned by the first boot process. + +To see current assignment of interfaces to zones: +{{{ +firewall-cmd --list-all-zones +}}} + +To remove an interface from a zone: +{{{ +firewall-cmd --zone= --remove-interface= +firewall-cmd --permanent --zone= --remove-interface= +}}} + +Example: +{{{ +firewall-cmd --zone=external --remove-interface=eth0 +firewall-cmd --permanent --zone=external --remove-interface=eth0 +}}} + +To add an interface to a zone: +{{{ +firewall-cmd --zone= --add-interface= +firewall-cmd --permanent --zone= --add-interface= +}}} + +Example: +{{{ +firewall-cmd --zone=internal --add-interface=eth0 +firewall-cmd --permanent --zone=internal --add-interface=eth0 +}}} + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Firewall.raw.xml b/doc/manual/en/Firewall.raw.xml deleted file mode 100644 index d1a79ff33..000000000 --- a/doc/manual/en/Firewall.raw.xml +++ /dev/null @@ -1,13 +0,0 @@ -
FreedomBox/Manual/Firewall322020-05-24 08:58:20fioddorMinor clarification312020-05-24 04:43:27SunilMohanAdapaAdd advanced firewall operations section referring to Cockpit302020-05-23 20:42:15JamesValleroyadd TableOfContents292020-05-03 18:56:52JamesValleroyremove link to source file, no longer exists282020-05-03 18:56:08JamesValleroyrename plinth -> freedombox272020-04-12 15:56:21JamesValleroyadd links back to top level pages262019-10-21 14:58:15fioddorMinor correction252018-03-11 03:12:12JosephNuthalapatiFix oversized image242017-03-31 20:25:36DrahtseilScreenshot Firewall232017-01-08 02:18:51JamesValleroyadd minetest222017-01-08 02:17:46JamesValleroyfix table spacing212017-01-08 02:16:47JamesValleroyadd repro202017-01-08 02:10:57JamesValleroyadd mumble192017-01-08 02:08:58JamesValleroyadd quassel182017-01-08 01:55:02JamesValleroyreorder to match Plinth Firewall page172017-01-07 21:07:25JamesValleroyupdate managed by plinth162017-01-07 20:54:21JamesValleroyupdate statuses shown in plinth152017-01-07 20:51:16JamesValleroyupdated services enabled by default142017-01-07 20:49:50JamesValleroyfix table spacing132017-01-07 20:47:32JamesValleroyjwchat replaced with jsxc122017-01-07 20:45:27JamesValleroyremove owncloud from ports list112016-01-13 23:19:49JamesValleroyport -> service102015-12-15 00:51:46JamesValleroyfew corrections92015-09-16 11:06:29SunilMohanAdapaUpdate an oudated link82015-09-16 08:18:17SunilMohanAdapaRemove unnecessary automatic links72015-09-13 15:06:40SunilMohanAdapaModify structure for inclusion into manual62015-09-12 11:19:31SunilMohanAdapaMove the firewall page to Manual paths52015-09-12 09:37:40SunilMohanAdapaMove networking related information to Networks page, cleanup42015-02-13 04:53:16SunilMohanAdapaInclude FreedomBox portal in footer32014-05-08 08:02:39SunilMohanAdapaAdd section on internet connection sharing and minor corrections22014-05-08 07:49:29PaulWiselink to the plinth source12014-05-08 07:36:15SunilMohanAdapaNew page documenting firewall operation and default port status
FirewallFirewall 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. 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. Firewall Firewall management in FreedomBox is done using FirewallD.
InterfacesEach interface is needs to be assigned to one (and only one) zone. If an interface is not assigned any zone, it is automatically assigned external zone. Whatever rules are in effect for a zone, those rules start to apply for that interface. For example, if HTTP traffic is allowed in a particular zone, then web requests will be accepted on all the addresses configured for all the interfaces assigned to that zone. There are primarily two firewall zones used. The internal zone is meant for services that are provided to all machines on the local network. This may include services such as streaming media and simple file sharing. The external zone is meant for services that are provided publicly on the Internet. This may include services such as blog, website, email web client etc. For details on how network interfaces are configured by default, see the Networks section.
Opening Custom PortsCockpit app provides advanced management of firewall. Both FreedomBox and Cockpit operate over firewalld and are hence compatible with each other. In particular, Cockpit can be used to open custom services or ports on FreedomBox. This is useful if you are manually running your own services in addition to the services provided by FreedomBox on the same machine. firewalld-cockpit.png
FreedomBox Ports/ServicesThe 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. ServicePort ExternalEnabled by defaultStatus shown in FreedomBoxManaged by FreedomBox Minetest 30000/udp {*} {X} (./) (./) XMPP Client 5222/tcp {*} {X} (./) (./) XMPP Server 5269/tcp {*} {X} (./) (./) XMPP Bosh 5280/tcp {*} {X} (./) (./) NTP 123/udp {o} (./) (./) (./) FreedomBox Web Interface (Plinth) 443/tcp {*} (./) (./) {X} Quassel 4242/tcp {*} {X} (./) (./) SIP 5060/tcp {*} {X} (./) (./) SIP 5060/udp {*} {X} (./) (./) SIP-TLS 5061/tcp {*} {X} (./) (./) SIP-TLS 5061/udp {*} {X} (./) (./) RTP 1024-65535/udp {*} {X} (./) (./) SSH 22/tcp {*} (./) (./) {X} mDNS 5353/udp {o} (./) (./) (./) Tor (Socks) 9050/tcp {o} {X} (./) (./) Obfsproxy <random>/tcp {*} {X} (./) (./) OpenVPN 1194/udp {*} {X} (./) (./) Mumble 64378/tcp {*} {X} (./) (./) Mumble 64378/udp {*} {X} (./) (./) Privoxy 8118/tcp {o} {X} (./) (./) JSXC 80/tcp {*} {X} {X} {X} JSXC 443/tcp {*} {X} {X} {X} DNS 53/tcp {o} {X} {X} {X} DNS 53/udp {o} {X} {X} {X} DHCP 67/udp {o} (./) {X} {X} Bootp 67/tcp {o} {X} {X} {X} Bootp 67/udp {o} {X} {X} {X} Bootp 68/tcp {o} {X} {X} {X} Bootp 68/udp {o} {X} {X} {X} LDAP 389/tcp {o} {X} {X} {X} LDAPS 636/tcp {o} {X} {X} {X}
Manual operationSee FirewallD documentation for more information on the basic concepts and comprehensive documentation.
Enable/disable firewallTo disable firewall or with systemd To re-enable firewall or with systemd
Modifying services/portsYou can manually add or remove a service from a zone. To see list of services enabled: --list-services]]>Example: To see list of ports enabled: --list-ports]]>Example: To remove a service from a zone: --remove-service= -firewall-cmd --permanent --zone= --remove-service=]]>Example: To remove a port from a zone: / -firewall-cmd --permanent --zone=internal --remove-port=/]]>Example: To add a service to a zone: --add-service= -firewall-cmd --permanent --zone= --add-service=]]>Example: To add a port to a zone: / -firewall-cmd --permanent --zone=internal --add-port=/]]>Example:
Modifying the zone of interfacesYou can manually change the assignment of zones of each interfaces after they have been autuomatically assigned by the first boot process. To see current assignment of interfaces to zones: To remove an interface from a zone: --remove-interface= -firewall-cmd --permanent --zone= --remove-interface=]]>Example: To add an interface to a zone: --add-interface= -firewall-cmd --permanent --zone= --add-interface=]]>Example: Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/GettingHelp.raw.wiki b/doc/manual/en/GettingHelp.raw.wiki new file mode 100644 index 000000000..124a78f6e --- /dev/null +++ b/doc/manual/en/GettingHelp.raw.wiki @@ -0,0 +1,43 @@ +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/GettingHelp|Español]] - [[fr/FreedomBox/Manuel/ObtenirAide|Français]]-~ + +## BEGIN_INCLUDE + += Getting Help = + +<> + +The !FreedomBox community provides live help via forum, chat and email. Feel free to join and ask anything you like. If you receive help, please consider to report your solution to the [[FreedomBox/QuestionsAndAnswers|Questions and Answers]] page, so others can benefit in the future. + +== Discussion Forum == + +The easiest way to get support is by using the [[https://discuss.freedombox.org|discussion forum]]. You can browse solutions to known problems or request help from community contributors by asking a question. This is also the best way to provide community contributors with feedback about your !FreedomBox experience. + +To post new content, you will need to register for an account with name and email address (but you can provide pseudonym and non-primary email address). By watching topics and categories or by enabling 'mailing list mode' in your account preferences, you can interact with the forum by just sending and receiving emails similar to a mailing list. + +== IRC #freedombox == + +Providing you are familiar with [[http://www.irchelp.org/|Internet Relay Chat]] (IRC) and [[http://www.irchelp.org/irchelp/clients/|IRC client]], you can get an instant online help from the community on '''irc.debian.org''', channel '''#freedombox'''. Potentially it takes some time before some member is answering you, be patient, a reaction will come later. + +== Matrix == + +You can join our Matrix room '''#freedombox:matrix.org'''. The room is federated with the IRC channel and remembers the chat history. +If you do not yet have a client installed, you can [[https://riot.im/app/#/room/#freedombox:matrix.org|use your web browser to join]]. +For more options, see this [[https://matrix.to/#/#freedombox:matrix.org|matrix client overview page]]. + +== Email == + +!FreedomBox users and contributors can be reached by email via a discussion list. In order to ask a question and get an answer from the community, please register from the [[https://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss|mailing list page]] providing your email adress and creating a password. You can also read [[http://lists.alioth.debian.org/pipermail/freedombox-discuss/|discussions archives]]. This list gathers about 700 readers. + +== Help Back == + +Once you've got your solution, don't forget to add it to the [[FreedomBox/QuestionsAndAnswers|Questions and Answers]] page and tell which features do you use from the box on [[FreedomBox/UserExperience|Use Cases]] page. It could help others to use !FreedomBox in a way they would have not imagined. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/GitWeb.raw.wiki b/doc/manual/en/GitWeb.raw.wiki new file mode 100644 index 000000000..fec1f54f9 --- /dev/null +++ b/doc/manual/en/GitWeb.raw.wiki @@ -0,0 +1,54 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/GitWeb|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== GitWeb (Simple Git Hosting) == +|| {{attachment:Gitweb-icon_en_V01.png|Gitweb icon}} || + +'''Available since''': version 19.19 + +Git is a distributed version-control system for tracking changes in source code during software development. !GitWeb provides a web interface to Git repositories. You can browse history and content of source code, use search to find relevant commits and code. You can also clone repositories and upload code changes with a command-line Git client or with multiple available graphical clients. And you can share your code with people around the world. + +To learn more on how to use Git visit [[https://git-scm.com/docs/gittutorial|Git tutorial]]. + +=== Managing the repositories === + +After installation of !GitWeb, a new repository can be created. It can be marked as ''private'' to limit access. + +=== Access === + +!GitWeb can be accessed after installation e.g. by the web client through {{{https:///gitweb}}}. + + + +=== HTTP basic auth === + +!GitWeb on !FreedomBox currently supports HTTP remotes only. To avoid +having to enter the password each time you pull/push to the repository, you can +edit your remote to include the credentials. + +''Example:'' https://username:password@my.freedombox.rocks/gitweb/myrepo + +Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only.<
> +'''Note:''' If using this method, your password will be stored in plain text in the local repository's {{{.git/config}}} file. For this reason, you should create a !FreedomBox user who has only access to the gitweb and never use an admin account. + + +=== Mirroring === + +Though your repositories are primarily hosted on your own !FreedomBox, you can +configure a repository on another Git hosting system like GitLab as a mirror. + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/GitWeb.raw.xml b/doc/manual/en/GitWeb.raw.xml deleted file mode 100644 index f5923bdba..000000000 --- a/doc/manual/en/GitWeb.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/GitWeb92020-05-30 18:07:40SunilMohanAdapaUpdate the title to emphasize app name over its generic name82020-05-23 19:55:40JamesValleroyadd TableOfContents72020-01-29 06:48:44fioddorInhibit autolink and stress to avoid using admin accounts.62020-01-27 12:42:43VeikoAasa52020-01-27 09:50:21VeikoAasa42019-12-16 23:25:10JamesValleroyadd standard manual page footer32019-12-15 19:38:46DrahtseilCopied description from plinth, managing, access22019-12-14 13:44:36JosephNuthalapatiAdd section: HTTP basic auth12019-12-14 13:14:15JosephNuthalapatiCreate GitWeb page with a stub.
GitWeb (Simple Git Hosting)Git is a distributed version-control system for tracking changes in source code during software development. GitWeb provides a web interface to Git repositories. You can browse history and content of source code, use search to find relevant commits and code. You can also clone repositories and upload code changes with a command-line Git client or with multiple available graphical clients. And you can share your code with people around the world. To learn more on how to use Git visit Git tutorial. Available since version: 19.19
Managing the repositoriesAfter installation of GitWeb, a new repository can be created. It can be marked as private to limit access.
AccessGitWeb can be accessed after installation e.g. by the web client through
HTTP basic authGitWeb on FreedomBox currently supports HTTP remotes only. To avoid having to enter the password each time you pull/push to the repository, you can edit your remote to include the credentials. Example: Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only. Note: If using this method, your password will be stored in plain text in the local repository's .git/config file. For this reason, you should create a FreedomBox user who has only access to the gitweb and never use an admin account.
MirroringThough your repositories are primarily hosted on your own FreedomBox, you can configure a repository on another Git hosting system like GitLab as a mirror. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Hardware.raw.wiki b/doc/manual/en/Hardware.raw.wiki new file mode 100644 index 000000000..6a4ab4600 --- /dev/null +++ b/doc/manual/en/Hardware.raw.wiki @@ -0,0 +1,170 @@ +<> + +## BEGIN_INCLUDE + +!FreedomBox is designed to be the software for a consumer electronics device that is easy to setup, maintain and use. The project does not aim to create a custom hardware device ourselves, but instead we intend to partner with hardware vendors to build !FreedomBox devices and also support existing hardware. Typically, it is run on single board computers because of their small form factor, low power consumption and favourable price. Some users also run it on old/refurbished desktop or laptop computers or even on virtual machines running on their primary computers. + +In addition to supporting various single board computers and other devices, any Debian machine can be turned into a !FreedomBox by installing the `freedombox` package. Debian, the universal operating system, supports a much wider range on hardware. After [[InstallingDebianOn|installing Debian]], see the [[FreedomBox/Hardware/Debian|manual page]] for installing !FreedomBox on Debian. + +== Recommended Hardware == + +On April 22nd, 2019, the !FreedomBox Foundation announced the [[https://freedomboxfoundation.org/buy/|sales]] of the Pioneer Edition !FreedomBox Home Server Kits. This is the recommended pre-installed hardware for all users who don't wish to build their own !FreedomBox by choosing the right components, downloading the image and preparing an SD card with !FreedomBox. + +The kit includes all the hardware needed for launching a !FreedomBox home server on an Olimex A20-OLinuXino-LIME2 board. This product provides the perfect combination of open source hardware and free and open source software. By purchasing this product, you also support the !FreedomBox Foundation's efforts to create and promote its free and open source server software. + +|| [[FreedomBox/Hardware/PioneerEdition|{{attachment:pioneer-edition_thumb.jpg|Pioneer Edition FreedomBox Home Server Kits|width=320,height=257}}]]<
> [[FreedomBox/Hardware/PioneerEdition|Pioneer Edition FreedomBox Home Server Kits]] || + +== Supported Hardware == + +Use these hardware if you are able to download !FreedomBox images and prepare an SD card by following the manual. If you wish for simper setup process, please buy the !FreedomBox kits from recommended hardware instead. Look at the list of known issues with a hardware before buying it. + +|| [[FreedomBox/Hardware/A20-OLinuXino-Lime2|{{attachment:a20-olinuxino-lime2_thumb.jpg|A20 OLinuXino Lime2|width=235,height=159}}]]<
> [[FreedomBox/Hardware/A20-OLinuXino-Lime2|A20 OLinuXino Lime2]] || [[FreedomBox/Hardware/A20-OLinuXino-MICRO|{{attachment:a20-olinuxino-micro_thumb.jpg|A20 OLinuXino MICRO|width=235,height=132}}]]<
> [[FreedomBox/Hardware/A20-OLinuXino-MICRO|A20 OLinuXino MICRO]] || [[FreedomBox/Hardware/APU|{{attachment:apu1d_thumb.jpg|PC Engines APU|width=235,height=157}}]]<
> [[FreedomBox/Hardware/APU|PC Engines APU]] || +|| [[FreedomBox/Hardware/Cubietruck|{{attachment:danube_thumb.png|Cubietruck|width=235,height=206}}]] <
> [[FreedomBox/Hardware/Cubietruck|Cubietruck]] <
> || [[FreedomBox/Hardware/Cubieboard2|{{attachment:cubieboard2_thumb.jpg|Cubieboard 2|width=235,height=156}}]]<
> [[FreedomBox/Hardware/Cubieboard2|Cubieboard2]] || [[FreedomBox/Hardware/BeagleBone|{{attachment:beagleboard_thumb.jpg|BeagleBone Black|width=235,height=157}}]]<
> [[FreedomBox/Hardware/BeagleBone|BeagleBone Black]] || +|| [[FreedomBox/Hardware/pcDuino3|{{attachment:pcduino3s_thumb.jpg|pcDuino3|width=235,height=107}}]] <
> [[FreedomBox/Hardware/pcDuino3|pcDuino3]]|| [[FreedomBox/Hardware/Debian|{{attachment:debian_thumb.png|Debian|width=156,height=201}}]] <
> [[FreedomBox/Hardware/Debian|Debian]]|| [[FreedomBox/Hardware/VirtualBox|{{attachment:virtualbox_thumb.png|VirtualBox|width=235,height=154}}]] <
> [[FreedomBox/Hardware/VirtualBox|VirtualBox]]|| +|| [[FreedomBox/Hardware/PineA64+|{{attachment:pine64-plus_thumb.jpg|Pine A64+|width=235,height=213}}]] <
> [[FreedomBox/Hardware/PineA64+|Pine A64+]] || [[FreedomBox/Hardware/BananaPro|{{attachment:banana-pro_thumb.jpg|Banana Pro|width=235}}]] <
> [[FreedomBox/Hardware/BananaPro|Banana Pro]]|| [[FreedomBox/Hardware/OrangePiZero|{{attachment:orange-pi-zero_thumb.jpg|Orange Pi Zero|width=235}}]] <
> [[FreedomBox/Hardware/OrangePiZero|Orange Pi Zero]] || + +|| [[FreedomBox/Hardware/RockPro64|{{attachment:rockpro64_thumb.jpg|RockPro64|width=235,height=142}}]] <
> [[FreedomBox/Hardware/RockPro64|RockPro64]] || [[FreedomBox/Hardware/Rock64|{{attachment:rock64_thumb.jpg|Rock64|width=235,height=154}}]] <
> [[FreedomBox/Hardware/Rock64|Rock64]]|||| + +=== Hardware Comparison === + +||'''Name'''||'''Speed (GHz)'''||'''Debian arch'''||'''Ram (GB)'''||'''disk (GB)'''||'''battery'''||'''SATA'''||'''Ethernet speed'''||'''[[OpenSourceHardware|OSHW]]'''|| +||APU.1D ||1x2 ||amd64 ||2||-|| - || (./) ||1000x3|| {X} || +||APU.1D4 ||1x2 ||amd64 ||4||-|| - || (./) ||1000x3|| {X} || +||!BeagleBone Black C ||1 ||armhf/omap ||½||4|| - || - ||100 || (./) || +||Cubieboard2 ||1x2 ||armhf/sunxi ||1||4|| (./) || (./) ||100 || {X} || +||Cubieboard2-Dual ||1x2 ||armhf/sunxi ||1||-|| (./) || (./) ||100 || {X} || +||Cubieboard3/Cubietruck ||1x2 ||armhf/sunxi ||2||8|| (./) || (./) ||1000 || {X} || +||OLinuXino A20 LIME ||1x2 ||armhf/sunxi ||½||-|| (./) || (./) ||100 || (./) || +||OLinuXino A20 LIME2 ||1x2 ||armhf/sunxi ||1||-|| (./) || (./) ||1000 || (./) || +||OLinuXino A20 MICRO ||1x2 ||armhf/sunxi ||1||-|| (./) || (./) ||100 || (./) || +||pcDunino3 ||1x2 ||armhf/sunxi ||1||4|| (./) || (./) ||100 || {X} || +||Pine A64+ ||1.2x4||arm64/sunxi ||½,1,2||-||- || - ||1000 || {X} || +||Banana Pro ||1.2x2||armhf/sunxi ||1||-||- || (./) ||1000 || {X} || +||Orange Pi Zero ||?x4 ||armhf/sunxi ||¼,½||-||- || - ||100 || {X} || +||!RockPro64 ||1.4x4+1.8x2||arm64 ||2,4||16,32,64,128|| - || (./) ||1000 || {X} || +||Rock64 ||1.5x4||arm64 ||1,2,4||16,32,64,128|| - || (./) ||1000 || {X} || + +== Additional Hardware == + +=== Also Working Hardware === + +This hardware works but is not recommended because the hardware can't run entirely on [[https://www.gnu.org/philosophy/free-sw.en.html|free software]]: + +|| [[FreedomBox/Hardware/RaspberryPi2|{{attachment:raspberry2_thumb.jpg|Raspberry Pi 2|width=235,height=157}}]] <
> [[FreedomBox/Hardware/RaspberryPi2|Raspberry Pi 2]] || [[FreedomBox/Hardware/RaspberryPi3B|{{attachment:raspberrypi3b_thumb.jpg|Raspberry Pi 3 Model B|width=235,height=155}}]] <
> [[FreedomBox/Hardware/RaspberryPi3B|Raspberry Pi 3 Model B]] || [[FreedomBox/Hardware/RaspberryPi3B+|{{attachment:raspberrypi3bplus_thumb.jpg|Raspberry Pi 3 Model B+|width=235,height=153}}]] <
> [[FreedomBox/Hardware/RaspberryPi3B+|Raspberry Pi 3 Model B+]]|| +|| [[FreedomBox/Hardware/RaspberryPi4B|{{attachment:raspberrypi4b_thumb.jpg|Raspberry Pi 4 B|width=235,height=156}}]] <
> [[FreedomBox/Hardware/RaspberryPi4B|Raspberry Pi 4 B]] || || || + +=== Hardware Supported with Generic Images === + +If you already have hardware that you wish turn into a !FreedomBox, don't let the limited list of supported hardware discourage you. If you are using AMD or Intel architecture machines, you can download the generic images of that specific architecture that image will work on any machine of that architecture. For ARM 32-bit or ARM 64-bit architectures, we have a similar solution. + +Starting with August 2020, we started building generic images that would work for all single board computers based on a solution involving UEFI standards and u-boot firmware. In this approach, a small board specific firmware resides on an SPI flash or an SD card. It is responsible for loading a generic !FreedomBox image that is placed in an SD card, a USB drive, a SATA drive or an NVMe drive. So, for your hardware, find and get a u-boot based firmware from your board manufacturer and place it on an SPI flash or an SD card. Next, ensure that that kernel in !FreedomBox has support for your board and place it on any of the other storage disks. This approach should work well for a lot of boards that are not listed as specifically supported. See firmware section for more details. + +We continue to build images specific to some hardware as we used to earlier. These images have the slight advantage that they are easier to setup because of less step involved. We intend, however, to phase out these images because they can't be booted from all the storage devices and involve development overhead limiting the number of boards we support. + +=== Adding Hardware Support === + +If your hardware is not listed above but you were able to get it working using the above described method of using a generic image, drop us a line and we will list it as supported. Further, take a look at the list of [[CheapServerBoxHardware|targeted hardware]] for boards to support. + +=== Deprecated Hardware === + +This hardware was supported earlier but is no longer supported. If you downloaded an earlier image and are running !FreedomBox on one of these hardware, you will keep getting software updates. However, no new images will be provided for these hardware. It is recommended that you migrate to newer, supported hardware using backup and restore. + + * !DreamPlug + * Raspberry Pi + +''Note'': ''Supported Hardware'' means that !FreedomBox images are built for said hardware and at least one developer has reported the basic functions to be working. + +== Common Hardware Information == + +The following sections document common advice related to hardware and peripherals when using them with !FreedomBox. + +=== Wi-Fi === + +!FreedomBox can use Wi-Fi hardware for two separate purposes. It can be used to provide internet connectivity or it can be used to share internet connectivity already available to !FreedomBox (via Ethernet, 3G/4G or another Wi-Fi interface) with devices on the network. See the [[FreedomBox/Manual/Networks|Networks]] manual page for instructions on how to configure !FreedomBox for these two cases. + +Unfortunately, most built-in Wi-Fi adapters and add-on Wi-Fi adapters require firmware that is not free software. So, !FreedomBox recommends attaching a [[FreedomBox/Hardware/USBWiFi|USB Wi-Fi device]] that does not require non-free firmware. Supported devices automatically show up in the network interface list when configuring networks. + +If you have a Wi-Fi device, either built-in or as an add-on, that requires non-free firmware and you are willing to install non-free firmware to get it working, see the Debian [[WiFi|wiki page]]. Once the firmware is installed and the device shows up, it can be configured and used by !FreedomBox. + +=== Power Supply === + +On single board computers, one can easily encounter situations where the board and its peripherals are not provided sufficient power and malfunction in unpredictable ways. To avoid this, use a power adapter that can supply the minimum current recommended by the hardware manufacturer. When additional peripherals such as USB drives, Wi-Fi devices, SATA drives or NVMe drives are attached, the power requirements increase. A power supply that can provide higher current than needed is preferable but voltage should match the manufacturer recommendation exactly. Keep in mind that some cheap power supplies don't supply the current they promise to. + +=== Firmware === + +Desktops, laptops and virtual machines have software that runs during machine start-up called UEFI/BIOS. This software, sometimes called firmware, can load and hand over control to the operating system (in our case !FreedomBox), when it is present on any of the storage devices. This is not the case with most single board computers. + +Single board computers ship with very small amount of software that is typically limited to booting OS from SD cards or eMMCs. They usually can't boot from USB disks, SATA disks or NVMe disks. To remedy this situation, hardware manufacturers started adding a special storage device called SPI flash which is only a few MiB in size. A special software, which we call firmware here, typically based on free and open source boot loader called u-boot is placed in this SPI flash. When the computer starts up, it starts the boot-loader from SPI flash which will in turn load the operating system. Since the firmware is much more powerful, it has the ability to load the OS from any of the storage media. Examples of single board computers with SPI flash include A20-OLinuXino-Lime2 and !RockPro64. + +This firmware approach can be used even when SPI flash is not available. Say, one wants to boot from a USB drive and the board does not support booting from it. Firmware can be installed on an SD card (a very tiny one is sufficient) and inserted into the board. Then USB disk will contain !FreedomBox as we wish it. When the board starts, it boots the firmware from SD card which in turn boots the operating system from USB drive or any other storage. + +This firmware approach also allows us to use generic download images that work for a large number of hardware boards. While increasing the effort for the user a bit more, it has the advantage of allowing us to support a lot more hardware and allow the OS to be present on any storage media. + +When special firmware is needed for a single board computer, !FreedomBox manual for the board discusses how to to obtain and install the firmware before proceeding with installation of !FreedomBox. + +=== Storage === + +!FreedomBox can run from various storage media supported by your computer. Choosing the storage is about balancing reliability, capacity and speed against cost. A minimum storage capacity of 8GB is recommended for running !FreedomBox. + +==== Secure Digital (SD) Card ==== + +SD cards are common on single board computers. Most single board computers can boot directly from an SD card without any additional tweaks. + +SD cards are typically slowest among the available storage media. Expect your !FreedomBox to perform certain operations slower on these disks. Not all SD cards perform similarly and some perform much better than others. When buying an SD card, pick a card with a speed class of at least 10 (written on the card as a circle around the number 10) or UHS speed class 1 (written on the card as a number 1 inside a bucket). UHS speed class 3 (written on the card as number 3 inside a bucket) or application speed class 1 or above (written as A1 and A2) will perform much better. Finally, users of !FreedomBox have reported cases where SD cards have failed. So, other storage media should be preferred for higher reliability. + +==== Embedded MultiMediaCard (eMMC) ==== + +Many recently released single board computers support eMMC cards. Most single board computers can boot directly from an eMMC without any additional tweaks. + +eMMC is sometimes soldered onto the board and you will need to choose the size of eMMC when buying the board. An example of this is the Olimex's A20-OLinuXino-Lime2 board. Other times, a manufacturer will provide eMMC as pluggable peripheral. With this approach, you can add eMMC after you buy the board or upgrade existing one with higher capacity. Do not detach and reattach such pluggable eMMCs too often. They have a very limited number of wear cycles (< 100). + +eMMC are much faster than SD cards and spinning disk HDDs but are significantly slower than SSDs. They have much better random write speeds which are needed for many !FreedomBox operations. In general, they should be preferred over SD cards. + +!FreedomBox image can be setup on an eMMC in two ways. For a detachable eMMC, there are eMMC to USB converters available. Detach the eMMC from the board, attach it to the USB converter and plug it into your machine and proceed with writing !FreedomBox on it as one would for an SD card. In case the eMMC is not detachable, boot the computer with a media other than the eMMC such as an SD card or USB disk. It could be any operating system. After booting, the eMMC will show up as an additional disk. [[FreedomBox/Download|Download]] and write !FreedomBox image onto it as one would for an SD card. + +==== USB Disk Drive ==== + +Most computers and single board computers have USB ports. These ports accept storage media such as USB flash drives, SSDs or HDDs. + +A USB flash drive can also serve as a storage medium for running !FreedomBox. USB 2.0 flash drives are much slower and comparable to SD cards in their performance. USB 3.0 flash drives yield much better performance. Both USB flash drives and SD cards use similar technology so the read/write cycles and hence the reliability as similarly limited. + +Apart from USB flash drives, solid state drives (SSDs) and hard disk drives (HDDs) can be inserted into USB ports. This is possible either by buying drives with USB interface or by using convertors such as USB to SATA or USB to M.2 interface. Both SSDs and HDDs have much higher reliability compared to SD cards, eMMC or USB flash drives. These should be preferred whenever possible. In addition, SSDs provide excellent performance when connected via USB 3.0 interface. + +When connecting SSDs and HDDs to USB ports on single board computers, care should be taken about the power supply to the drive. If the drive has an extra power supply there is nothing to worry about. Otherwise, ensure that the single board computer is able to power the drive by checking the power requirements of the drive and what the board supports. For the board, always use a power adapter that can supply the minimum current recommended by the hardware manufacturer. Power supply that can provide higher current than needed is preferable but the voltage supplied should match the manufacturer recommendation exactly. Keep in mind that some cheap power supplies don't supply the current they promise to. + +Setting up a !FreedomBox image on a USB (flash, SSD or HDD) drive can be straight forward as most computers have USB ports. Plug-in the USB drive to your computer, [[FreedomBox/Download|download]] and write the !FreedomBox image to the USB drive. While laptops, desktops and virtual machines can boot from a USB drive without intervention, many single board computers can't boot from USB drives. To address this, a separate firmware is needed. See firmware section for setting this up. + +==== SATA disk drive ==== + +Some desktops, laptops and single board computers support a SATA interface to connect a solid state drive (SSD) or a hard disk drive (HDD). An example of a single board computer supporting SATA interface is the Olimex's A20-OLinuXino-Lime2. SATA protocol is also used for mSATA ports or M.2 slots (with a B-Key or an M-key). Both SSDs and HDDs have much higher reliability compared to SD cards, eMMC or USB flash drives. SATA interface provides very good data transfer rates (but not as good as NVMe drives based on PCIe). These should be preferred over SD cards, eMMCs or USB flash drives whenever possible. + +When connecting SSDs and HDDs to SATA ports on single board computers, care should be taken about the power supply to the drive. If the drive has an extra power supply there is nothing to worry about. Otherwise, ensure that the single board computer is able to power the drive by checking the power requirements of the drive and what the board supports. Always use a power adapter that can supply the minimum current recommended by the hardware manufacturer. Power supply that can provide higher current than needed is preferable but voltage should match the recommendation exactly. Keep in mind that some cheap power supplies don't supply the current they promise to. + +To setup !FreedomBox image on a SATA disk drive, boot the computer with a media other than the SATA disk such as an SD card. It could be any operating system. After booting, the SATA disk will show up as an additional disk. [[FreedomBox/Download|Download]] and write !FreedomBox image onto it as one would for an SD card. While laptops, desktops and virtual machines can boot from a SATA drives without additional intervention, many single board computers can't boot from SATA drives. To address this, a separate firmware disk is needed. See firmware section for setting this up. + +==== NVMe disk drive ==== + +Most desktops, laptops and some single board computers support an NVMe interface to connect a solid state drive (SSD). This support is provided either with an M.2 slot (with a B-key or an M-key) or by providing a PCIe expansion slot. If a PCIe expansion slot is provided, a PCIe to M.2 convertor can be used to accommodate an NVMe drive. An example of a single board computer supporting an M.2 slot is the Radxa's Rock Pi 4 board. An example of single board computer providing PCIe slot is the Pine64's !RockPro64 board. NVMe based SSD have much higher reliability compared to SD cards, eMMC or USB flash drives. NVMe drives provide the fastest data transfer rates. These should be preferred over all other types of drives whenever possible. + +When connecting NVMe drives to single board computers, care should be taken about the power supply to the drive. Ensure that the single board computer is able to power the drive by checking the power requirements of the drive and what the board supports. Always use a power adapter that can supply the minimum current recommended by the hardware manufacturer. Power supply that can provide higher current than needed is preferable but voltage should match the manufacturer recommendation exactly. Keep in mind that some cheap power supplies don't supply the current they promise to. + +To setup !FreedomBox image on an NVMe disk drive, boot the computer with a media other than the NVMe disk such as an SD card. It could be any operating system. After booting NVMe disk will show up as an additional disk. [[FreedomBox/Download|Download]] and write !FreedomBox image onto it as one would for an SD card. While laptops, desktops and virtual machines can boot from NVMe drives without intervention, many single board computers can't boot from NVMe drives. To address this a separate firmware disk is needed. See firmware section for setting this up. + +== Building Your Own Images == + +All !FreedomBox disk images for different hardware is built by the project using a tool known as [[FreedomBox/Maker|Freedom Maker]]. If for some reason, you wish to build your own images instead of downloading the provided images, use this tool. The README file in the project provides information about the list of hardware build targets available and how to build images. + +=== Status of Software Used === + + * All the software present in !FreedomBox images is from Debian repositories. There are some minor tweaks done by the [[FreedomBox/Maker|Freedom Maker]] script. + * All software present in the images is DFSG compliant free software except in case of Raspberry Pi images where the firmware package is non-free software. + * All images use the Linux kernel from Debian which is in turn based on the mainline Linux kernel. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +Images are licensed under various creative commons licenses. See individual linked pages for attribution information. diff --git a/doc/manual/en/I2P.raw.wiki b/doc/manual/en/I2P.raw.wiki new file mode 100644 index 000000000..8581473cb --- /dev/null +++ b/doc/manual/en/I2P.raw.wiki @@ -0,0 +1,38 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/I2P|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== I2P (Anonymity Network) == +|| {{attachment:I2P-icon_en_V01.png|I2P icon}} || + +=== About I2P === +The Invisible Internet Project is an anonymous network layer intended to protect communication from censorship and surveillance. I2P provides anonymity by sending encrypted traffic through a volunteer-run network distributed around the world. + +Find more information about I2P on their project [[https://geti2p.net|homepage]]. + +=== Services Offered === + +The following services are offered via I2P in !FreedomBox by default. Additional services may be available when enabled from I2P router console that can be launched from !FreedomBox web interface. + + * '''Anonymous Internet browsing''': I2P can be used to browse Internet anonymously. For this, configure your browser (preferable a Tor Browser) to connect to I2P proxy. This can be done by setting HTTP proxy and HTTPS proxy to ''freedombox.local'' (or your !FreedomBox's local IP address) and ports to ''4444'' and ''4445'' respectively. This service is available only when you are reaching !FreedomBox using local network (networks in internal zone) and not available when connecting to !FreedomBox from the Internet. One exception to this is when you connect to !FreedomBox's VPN service from Internet you can still use this service. + * '''Reaching eepsites''': I2P network can host websites that can remain anonymous. These are called eepsites and end with .i2p in their domain name. For example, http://i2p-projekt.i2p/ is the website for I2P project in the I2P network. eepsites are not reachable using a regular browser via regular Internet connection. To browse eepsites, your browser needs to be configured to use HTTP, HTTPS proxies as described above. This service is available only when you are reaching !FreedomBox using local network (networks in internal zone) and not available when connecting to !FreedomBox from the Internet. One exception to this is when you connect to !FreedomBox's VPN service from Internet you can still use this service. + * '''Anonymous torrent downloads''': I2PSnark, an application for anonymously downloading and sharing files over the !BitTorrent network is available in I2P and enabled by default in !FreedomBox. This application is controlled via a web interface that can be launched from 'Anonymous torrents' section of I2P app in !FreedomBox web interface or from the I2P router console interface. Only logged-in users belonging to 'Manage I2P application' group can use this service. + * '''IRC network''': I2P network contains an IRC network called Irc2P. This network hosts the I2P project's official IRC channel among other channels. This service is enabled by default in !FreedomBox. To use it, open your favourite IRC client. Then configure it to connect to host ''freedombox.local'' (or your !FreedomBox's local IP address) with port number ''6668''. This service is available only when you are reaching !FreedomBox using local network (networks in internal zone) and not available when connecting to !FreedomBox from the Internet. One exception to this is when you connect to !FreedomBox's VPN service from Internet you can still use this service. + * '''I2P router console''': This is the central management interface for I2P. It shows the current status of I2P, bandwidth statistics and allows modifying various configuration settings. You can tune your participation in the I2P network and use/edit a list of your favourite I2P sites (eepsites). Only logged-in users belonging to 'Manage I2P application' group can use this service. + +=== Port Forwarding === + +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 I2P: + * TCP 4444 + * TCP 4445 + * TCP 6668 + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> diff --git a/doc/manual/en/I2P.raw.xml b/doc/manual/en/I2P.raw.xml deleted file mode 100644 index e8c74a3b0..000000000 --- a/doc/manual/en/I2P.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/I2P32020-05-30 18:17:33SunilMohanAdapaUpdate the title to emphasize app name over its generic name22020-05-23 19:59:34JamesValleroyadd TableOfContents12019-04-30 00:40:36SunilMohanAdapaInitial page for I2P application in FreedomBox
I2P (Anonymity Network)
About I2PThe Invisible Internet Project is an anonymous network layer intended to protect communication from censorship and surveillance. I2P provides anonymity by sending encrypted traffic through a volunteer-run network distributed around the world. Find more information about I2P on their project homepage.
Services OfferedThe following services are offered via I2P in FreedomBox by default. Additional services may be available when enabled from I2P router console that can be launched from FreedomBox web interface. Anonymous Internet browsing: I2P can be used to browse Internet anonymously. For this, configure your browser (preferable a Tor Browser) to connect to I2P proxy. This can be done by setting HTTP proxy and HTTPS proxy to freedombox.local (or your FreedomBox's local IP address) and ports to 4444 and 4445 respectively. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. Reaching eepsites: I2P network can host websites that can remain anonymous. These are called eepsites and end with .i2p in their domain name. For example, is the website for I2P project in the I2P network. eepsites are not reachable using a regular browser via regular Internet connection. To browse eepsites, your browser needs to be configured to use HTTP, HTTPS proxies as described above. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. Anonymous torrent downloads: I2PSnark, an application for anonymously downloading and sharing files over the BitTorrent network is available in I2P and enabled by default in FreedomBox. This application is controlled via a web interface that can be launched from 'Anonymous torrents' section of I2P app in FreedomBox web interface or from the I2P router console interface. Only logged-in users belonging to 'Manage I2P application' group can use this service. IRC network: I2P network contains an IRC network called Irc2P. This network hosts the I2P project's official IRC channel among other channels. This service is enabled by default in FreedomBox. To use it, open your favourite IRC client. Then configure it to connect to host freedombox.local (or your FreedomBox's local IP address) with port number 6668. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. I2P router console: This is the central management interface for I2P. It shows the current status of I2P, bandwidth statistics and allows modifying various configuration settings. You can tune your participation in the I2P network and use/edit a list of your favourite I2P sites (eepsites). Only logged-in users belonging to 'Manage I2P application' group can use this service. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.
\ No newline at end of file diff --git a/doc/manual/en/Ikiwiki.raw.wiki b/doc/manual/en/Ikiwiki.raw.wiki new file mode 100644 index 000000000..08c9268dc --- /dev/null +++ b/doc/manual/en/Ikiwiki.raw.wiki @@ -0,0 +1,63 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Ikiwiki|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Ikiwiki (Wiki and Blog) == +|| {{attachment:Ikiwiki-icon_en_V01.png|Ikiwiki icon}} || + +'''Avaiable since''': version 0.5 + +=== What is Ikiwiki? === +Ikiwiki converts wiki pages into HTML pages suitable for publishing on a website. It provides particularly blogging, podcasting, calendars and a large selection of plugins. + +=== Quick Start === + +After the app installation on your box administration interface: + * Go to "Create" section and create a wiki or a blog + * Go back to "Configure" section and click on /ikiwiki link + * Click on your new wiki or blog name under "Parent directory" + * Enjoy your new publication page. + +=== Creating a wiki or blog === +You can create a wiki or blog to be hosted on your !FreedomBox through the Wiki & Blog (Ikiwiki) page in !FreedomBox. The first time you visit this page, it will ask to install packages required by Ikiwiki. + +After the package install has completed, select the Create tab. You can select the type to be Wiki or Blog. Also type in a name for the wiki or blog, and the username and password for the wiki's/blog's admin account. Then click Update setup and you will see the wiki/blog added to your list. Note that each wiki/blog has its own admin account. + +{{attachment:ikiwiki_create.png|ikiwiki: Create|width=800}} + +=== Accessing your wiki or blog === +From the Wiki & Blog (Ikiwiki) page, select the Manage tab and you will see a list of your wikis and blogs. Click a name to navigate to that wiki or blog. + +{{attachment:ikiwiki_manage.png|ikiwiki: Manage|width=800}} + +From here, if you click Edit or Preferences, you will be taken to a login page. To log in with the admin account that you created before, select the Other tab, enter the username and password, and click Login. + +=== User login through SSO === +Besides the wiki/blog admin, other !FreedomBox users can be given access to login and edit wikis and blogs. However, they will not have all the same permissions as the wiki admin. They can add or edit pages, but cannot change the wiki's configuration. + +To add a wiki user, go to the Users and Groups page in !FreedomBox (under System configuration, the gear icon at the top right corner of the page). Create or modify a user, and add them to the wiki group. (Users in the admin group will also have wiki access.) + +To login as a !FreedomBox user, go to the wiki/blog's login page and select the Other tab. Then click the "Login with HTTP auth" button. The browser will show a popup dialog where you can enter the username and password of the !FreedomBox user. + +=== Adding FreedomBox users as wiki admins === + + 1. Login to the wiki, using the admin account that was specified when the wiki was created. + 2. Click "Preferences", then "Setup". + 3. Under "main", in the "users who are wiki admins", add the name of a user on the !FreedomBox. + 4. (Optional) Under "auth plugin: passwordauth", uncheck the "enable passwordauth?" option. (Note: This will disable the old admin account login. Only SSO login using HTTP auth will be possible.) + 5. Click "Save Setup". + 6. Click "Preferences", then "Logout". + 7. Login as the new admin user using "Login with HTTP auth". + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Ikiwiki.raw.xml b/doc/manual/en/Ikiwiki.raw.xml deleted file mode 100644 index abc20241d..000000000 --- a/doc/manual/en/Ikiwiki.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Ikiwiki122020-05-30 18:17:11SunilMohanAdapaUpdate the title to emphasize app name over its generic name112020-05-23 19:59:05JamesValleroyadd TableOfContents102020-05-23 17:06:50JamesValleroyrename plinth -> freedombox92016-12-26 19:18:01JamesValleroyadd screenshots82016-09-01 19:15:54Drahtseiladapted title to Plinth wording72016-05-26 17:19:45JamesValleroynew section on adding users as wiki admins62016-04-13 01:10:28PhilippeBaretAdded blog to quick start entry in Ikiwiki Manual52016-04-13 01:00:22PhilippeBaretAdded a "Quick Start" entry in Ikiwiki manual42016-04-10 07:21:53PhilippeBaretAdded bottom navigation link32015-12-15 19:54:35PhilippeBaretAdded Ikiwiki definition22015-11-29 19:13:55PhilippeBaretadded ## BEGIN_INCLUDE12015-09-13 17:06:14JamesValleroyadd ikiwiki page for manual
Ikiwiki (Wiki and Blog)
What is Ikiwiki?Ikiwiki converts wiki pages into HTML pages suitable for publishing on a website. It provides particularly blogging, podcasting, calendars and a large selection of plugins.
Quick StartAfter the app installation on your box administration interface: Go to "Create" section and create a wiki or a blog Go back to "Configure" section and click on /ikiwiki link Click on your new wiki or blog name under "Parent directory" Enjoy your new publication page.
Creating a wiki or blogYou can create a wiki or blog to be hosted on your FreedomBox through the Wiki & Blog (Ikiwiki) page in FreedomBox. The first time you visit this page, it will ask to install packages required by Ikiwiki. After the package install has completed, select the Create tab. You can select the type to be Wiki or Blog. Also type in a name for the wiki or blog, and the username and password for the wiki's/blog's admin account. Then click Update setup and you will see the wiki/blog added to your list. Note that each wiki/blog has its own admin account. ikiwiki: Create
Accessing your wiki or blogFrom the Wiki & Blog (Ikiwiki) page, select the Manage tab and you will see a list of your wikis and blogs. Click a name to navigate to that wiki or blog. ikiwiki: Manage From here, if you click Edit or Preferences, you will be taken to a login page. To log in with the admin account that you created before, select the Other tab, enter the username and password, and click Login.
User login through SSOBesides the wiki/blog admin, other FreedomBox users can be given access to login and edit wikis and blogs. However, they will not have all the same permissions as the wiki admin. They can add or edit pages, but cannot change the wiki's configuration. To add a wiki user, go to the Users and Groups page in FreedomBox (under System configuration, the gear icon at the top right corner of the page). Create or modify a user, and add them to the wiki group. (Users in the admin group will also have wiki access.) To login as a FreedomBox user, go to the wiki/blog's login page and select the Other tab. Then click the "Login with HTTP auth" button. The browser will show a popup dialog where you can enter the username and password of the FreedomBox user.
Adding FreedomBox users as wiki adminsLogin to the wiki, using the admin account that was specified when the wiki was created. Click "Preferences", then "Setup". Under "main", in the "users who are wiki admins", add the name of a user on the FreedomBox. (Optional) Under "auth plugin: passwordauth", uncheck the "enable passwordauth?" option. (Note: This will disable the old admin account login. Only SSO login using HTTP auth will be possible.) Click "Save Setup". Click "Preferences", then "Logout". Login as the new admin user using "Login with HTTP auth". Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Infinoted.raw.wiki b/doc/manual/en/Infinoted.raw.wiki new file mode 100644 index 000000000..6354103ee --- /dev/null +++ b/doc/manual/en/Infinoted.raw.wiki @@ -0,0 +1,30 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Infinoted|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Infinoted (Gobby Server) == +|| {{attachment:Infinoted-icon_en_V01.png|Infinoted icon}} || + +'''Available since''': version 0.5 + +infinoted is a server for Gobby, a collaborative text editor. + +To use it, [[https://gobby.github.io/|download Gobby]], desktop client and install it. Then start Gobby and select "Connect to Server" and enter your !FreedomBox's domain name. + +=== Port Forwarding === + +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 infinoted: + * TCP 6523 + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Infinoted.raw.xml b/doc/manual/en/Infinoted.raw.xml deleted file mode 100644 index 51bb2b33a..000000000 --- a/doc/manual/en/Infinoted.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Infinoted32020-05-30 18:02:02SunilMohanAdapaUpdate the title to emphasize app name over its generic name22020-05-23 19:53:56JamesValleroyadd TableOfContents12017-01-21 17:23:17JamesValleroycreate page for infinoted
infinoted (Gobby Server)infinoted is a server for Gobby, a collaborative text editor. To use it, download Gobby, desktop client and install it. Then start Gobby and select "Connect to Server" and enter your FreedomBox's domain name.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for infinoted: TCP 6523 Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Introduction.raw.wiki b/doc/manual/en/Introduction.raw.wiki new file mode 100644 index 000000000..43992ab59 --- /dev/null +++ b/doc/manual/en/Introduction.raw.wiki @@ -0,0 +1,76 @@ +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[de/FreedomBox/Einführung|Deutsch]]- English - [[es/FreedomBox/Introduction|Español]] - [[fr/FreedomBox/Introduction|Français]]-~ +## BEGIN_INCLUDE + += FreedomBox: take your online privacy back = + +!FreedomBox is a ready made personal server, designed with privacy and data ownership in mind. It is a subset of the [[https://www.debian.org/|Debian universal operating system]] and includes free software only. You can run it on a small, inexpensive and power-efficient computer box in your home that is dedicated for that use. It can also be installed on any computer running Debian or in a virtual machine.<
> + +In order to replace third-party communication services that are data mining your entire life, you will be able to host services yourself and use them at home or over the Internet through a browser or specialized apps. These services include chat and voice calls, webmail, file sharing and calendar, address book and news feed synchronization. For example, to start using a private chat service, activate the service from the administration interface and add your friends as authorized users of the service. They will be able to connect to the service hosted on your !FreedomBox, using XMPP chat clients such as Conversations on Android, Pidgin on Windows and Linux, or Messages on Mac OS, for encrypted communications.<
> + +!FreedomBox is a product you can just [[https://freedomboxfoundation.org/buy/|buy]], set up and use. Once installed the interface is easy to use, similar to a smart phone. + +User documentation: + * List of [[FreedomBox/Features|applications]] offered by !FreedomBox. + * [[FreedomBox/Manual|Manual]] + * [[FreedomBox/Support|Live Help from the community]] + + +!FreedomBox can also host a Wi-Fi access point, ad blocking proxy and a virtual private network (VPN). More advanced users can replace their router with a !FreedomBox. + +Setting up !FreedomBox on a specific hardware or on your computer running Debian may require a bit of technical expertise or help from the community. + +Related technical documentation: + * [[FreedomBox/Hardware|Machines that support FreedomBox]] + * [[FreedomBox/Download|Download and Install]] + * [[https://docs.freedombox.org|FreedomBox Developer Manual]] + +== Typical usage: Private Cloud == + +!FreedomBox provides services to the computers and mobile devices in your home, and to your friends. This includes secure instant messaging and low-bandwidth, high-quality voice conference calling. !FreedomBox lets you publish your content in a blog and wiki to collaborate with the rest of the world. On the roadmap are a personal email server and federated social networking, to provide privacy-respecting alternatives to Gmail and Facebook. + +== Typical usage: Network-Attached Storage (NAS) == + +The storage space available to !FreedomBox can be expanded by attaching an external disk drive. This allows !FreedomBox to become a media library for your photos, music, and videos. The folders are shared to laptops and mobile phones on the local network, and the media can be streamed to local devices including smart TVs. + +== Advanced usage: Smart Home Router == + +!FreedomBox runs in a physical computer and can route your traffic. It can sit between various devices at home such as mobiles, laptops and TVs and the Internet, replacing a home wireless router. By routing traffic, !FreedomBox can remove tracking advertisements and malicious web bugs before they ever reach your devices. !FreedomBox can cloak your location and protect your anonymity by "onion routing" your traffic over Tor. !FreedomBox provides a VPN server that you can use while you are away from home to keep your traffic secret on untrusted public wireless networks and to securely access various devices at home. + +It can also be carried along with your laptop and set up to offer its services on public networks at work, school or office. In the future, !FreedomBox intends to deliver support for alternative ways of connecting to the Internet such as Mesh networking. + +== Advanced usage: For Communities == + +The primary design goal of !FreedomBox is to be used as a personal server at home for use by a single family and their friends. However, at the core, it is a server software that can aid a non-technical user to setup services and maintain them with ease. Security is automatically managed and many of the technical choices in system administration are taken care by the software automatically thereby reducing complexity for a non-technical user. This nature of !FreedomBox makes it well-suited for hosting services for small communities like villages or small firms. Communities can host their own services using !FreedomBox with minimal effort. They can setup Wi-Fi networks that span the entire area of the community and draw Internet connections from long distances. Community members can enjoy previously unavailable Internet connectivity, ubiquitous Wi-Fi coverage, free VOIP services, offline education and entertainment content, etc. This will also boost privacy for individuals in the community, reduce dependence on centralized services provided by large companies and make them resistant to censorship. + +The free e-book [[https://en.wikibooks.org/wiki/FreedomBox_for_Communities|FreedomBox for Communities]] describes the motivation and provides detailed instructions to setup !FreedomBox for this use case. Members of the !FreedomBox project are involved in setting up Wi-Fi networks with free Internet connectivity in rural India. This e-book documents their knowledge and experiences. + +== FreedomBox Interface == + +=== Screenshot === + +{{attachment:freedombox-frontpage-2019-03-02.png|FreedomBox front page|width=1000}} + +{{{#!wiki comment +This video is much too old to be useful here. + +=== Screencast introduction === + +[[attachment:Plinth_Introduction.webm]] + +(36 MB, 13 Min.) +}}} + +=== Video resources === + +Eben Moglen's talk, [[https://www.youtube.com/watch?v=QOEMv0S8AcA|Eben Moglen - Freedom in the cloud]], delivered before the !FreedomBox project was started gives insights into the philosophy behind !FreedomBox. + +[[http://moglen.law.columbia.edu/sflc2015/04_freedombox.webm|First demonstration of FreedomBox at SFLC, University of Columbia]] by Sunil Mohan Adapa. + +## END_INCLUDE + +See the features page for a [[FreedomBox/Features|full list of applications]] offered by !FreedomBox and [[https://freedomboxfoundation.org/buy/|buy]] or [[FreedomBox/Download|download]] yours! + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/JSXC.raw.wiki b/doc/manual/en/JSXC.raw.wiki new file mode 100644 index 000000000..343bb69c0 --- /dev/null +++ b/doc/manual/en/JSXC.raw.wiki @@ -0,0 +1,52 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/JSXC|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== JSXC (Web Chat Client) == +|| {{attachment:JSXC-icon_en_V01.png|JSXC icon}} || + +'''Available since''': version 0.11.0 + +JSXC is a web chat client. It can be used to join compatible chat servers. + +!FreedomBox offers both parties, a server ([[FreedomBox/Manual/ejabberd|ejabberd]]) and a web client (JSXC), from its web interface. + +=== Technical Specifications === + +JSXC features the XMPP over [[https://en.wikipedia.org/wiki/BOSH_(protocol)|BOSH]] protocol and is implemented in HTML5. + +XMPP is a federated server-client protocol for Instant Messaging. This means that users who have accounts on one server, can talk to users that are on another server. + +XMPP can also be used for voice and video calls, if supported by the clients. + +=== Installation === +You can install JSXC through its icon in the Apps section of !FreedomBox web interface. The ejabberd (XMPP server) icon also offers to launch the web client (and installs JSXC if not yet installed). + +=== Usage === +After the JSXC module install completes, the JSXC can be accessed through its icon in the Apps section of !FreedomBox web interface. The ejabberd (XMPP server) icon also offers to launch the web client. Both will redirect you to {{{https:///plinth/apps/xmpp/jsxc/}}}. + +To use it, you need to input the domain name of the server to connect to. It will automatically check the BOSH server connection to the given domain name as you type it. +||{{attachment:JSXC-KO_en_V01.png|JSXC not connecting|height=250}} || {{attachment:JSXC-ok_en_V01.png|JSXC connecting|height=250}} || + +Check https://www.jsxc.org for further details. + +Videoconferencing and file transfer features are offered by JSXC but don't seem to work in !FreedomBox yet. + +=== Port Forwarding === + +If your !FreedomBox is behind a router and you want to connect to other servers, you will need to set up port forwarding on your router. You should forward the following ports for XMPP: + * TCP 5222 (client-to-server) + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/LetsEncrypt.raw.wiki b/doc/manual/en/LetsEncrypt.raw.wiki new file mode 100644 index 000000000..2da627ea8 --- /dev/null +++ b/doc/manual/en/LetsEncrypt.raw.wiki @@ -0,0 +1,58 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/LetsEncrypt|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Let's Encrypt (Certificates) == + +A digital certificate allows users of a web service to verify the identity of the service and to securely communicate with it. !FreedomBox can automatically obtain and setup digital certificates for each available domain. It does so by proving itself to be the owner of a domain to Let's Encrypt, a certificate authority (CA). + +Let's Encrypt is a free, automated, and open certificate authority, run for the public's benefit by the Internet Security Research Group (ISRG). Please read and agree with the Let's Encrypt Subscriber Agreement before using this service. + +=== Why using Certificates === + +The communication with your !FreedomBox can be secured so that it is not possible to intercept the content of the web pages viewed and about the content exchanged. + +=== How to setup === + + 1. If your !FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports: + * TCP 80 (http) + * TCP 443 (https) + + 1. Make the domain name known: + * In [[../Configure|Configure]] insert your ''domain name'', e.g. ''`MyWebName.com`'' + + {{attachment:LetsEncrypt-Configure.png|Let's Encrypt|width=800}} + + 1. Verify the domain name was accepted + * Check that it is enabled in [[../NameServices|Name Services]] + + {{attachment:LetsEncrypt-NameServices.png|Let's Encrypt Name Services|width=800}} + + 1. Go to the Certificates (Let's Encrypt) page, and complete the module install if needed. Then click the "Obtain" button for your domain name. + * After some minutes a valid certificate is available + {{attachment:LetsEncrypt.png|Let's Encrypt|width=800}} + + 1. Verify in your browser by checking ''`https://MyWebName.com`'' + {{attachment:LetsEncrypt-Certificate.png|Let's Encrypt Certificate|width=800}} + +'''Screencast''': [[attachment:Let's Encrypt.webm|Let's Encrypt|&do=get]] + +=== Using === + +The certificate is valid for 3 months. It is renewed automatically and can also be re-obtained or revoked manually. + +With running ''diagnostics'' the certificate can also be verified. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/LetsEncrypt.raw.xml b/doc/manual/en/LetsEncrypt.raw.xml deleted file mode 100644 index 9146aa09d..000000000 --- a/doc/manual/en/LetsEncrypt.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/LetsEncrypt122020-05-30 18:20:55SunilMohanAdapaUpdate the title to emphasize app name over its generic name112020-05-23 20:42:47JamesValleroyadd TableOfContents102019-11-01 00:51:44JosephNuthalapatiFix attachment inlining92019-02-26 03:21:08JamesValleroyspelling82018-03-11 03:16:47JosephNuthalapati72017-01-19 00:18:41JamesValleroyreplace quote character62017-01-07 19:48:45JamesValleroyadd port forwarding info52017-01-07 18:21:14JamesValleroyclarify step42016-08-21 19:00:07Drahtseil32016-08-21 18:59:20DrahtseilScreencast of the setting up22016-08-21 17:57:07Drahtseilscreenshots12016-08-21 17:43:20DrahtseilCreated Let's Encypt
Let's Encrypt (Certificates)A digital certificate allows users of a web service to verify the identity of the service and to securely communicate with it. FreedomBox can automatically obtain and setup digital certificates for each available domain. It does so by proving itself to be the owner of a domain to Let's Encrypt, a certificate authority (CA). Let's Encrypt is a free, automated, and open certificate authority, run for the public's benefit by the Internet Security Research Group (ISRG). Please read and agree with the Let's Encrypt Subscriber Agreement before using this service.
Why using CertificatesThe communication with your FreedomBox can be secured so that it is not possible to intercept the content of the web pages viewed and about the content exchanged.
How to setupIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports: TCP 80 (http) TCP 443 (https) Make the domain name known: In Configure insert your domain name, e.g. MyWebName.com Let's Encrypt Verify the domain name was accepted Check that it is enabled in Name Services Let's Encrypt Name Services Go to the Certificates (Let's Encrypt) page, and complete the module install if needed. Then click the "Obtain" button for your domain name. After some minutes a valid certificate is available Let's Encrypt Verify in your browser by checking https://MyWebName.com Let's Encrypt Certificate Screencast: Let's Encrypt
UsingThe certificate is valid for 3 months. It is renewed automatically and can also be re-obtained or revoked manually. With running diagnostics the certificate can also be verified. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/MLDonkey.raw.wiki b/doc/manual/en/MLDonkey.raw.wiki new file mode 100644 index 000000000..30538b112 --- /dev/null +++ b/doc/manual/en/MLDonkey.raw.wiki @@ -0,0 +1,52 @@ +## page was renamed from FreedomBox/Manual/MLdonkey +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/MLDonkey|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== MLDonkey (Peer-to-peer File Sharing) == +|| {{attachment:MLDonkey-icon_en_V01.png|MLDonkey icon}} || + +'''Available since:''' version 0.48.0 + +=== What is MLDonkey? === + +MLDonkey is an open-source, multi-protocol, peer-to-peer file sharing application that runs as a back-end server application on many platforms. It can be controlled through a user interface provided by one of many separate front-ends, including a Web interface, telnet interface and over a dozen native client programs. + +Originally a Linux client for the eDonkey protocol, it now runs on many flavors of Unix-like, OS X, Microsoft Windows and MorphOS and supports numerous peer-to-peer protocols including ED2K (and Kademlia and Overnet), !BitTorrent, DC++ and more. + +Read more about MLDonkey at [[http://mldonkey.sourceforge.net/Main_Page|the MLDonkey Project Wiki]] + +=== Screenshot === + +{{attachment:mldonkey.jpg|MLDonkey Web Interface|width=800}} + +=== Using MLDonkey Web Interface === + +After installing MLDonkey, its web interface can be accessed from !FreedomBox at {{{https:///mldonkey}}}. Users belonging to the ''ed2k'' and ''admin'' groups can access this web interface. + +=== Using Desktop/Mobile Interface === + +Many [[http://mldonkey.sourceforge.net/Gui|desktop and mobile applications]] can be used to control MLDonkey. MLDonkey server will always be running on !FreedomBox. It will download files (or upload them) and store them on !FreedomBox even when your local machine is not running or connected to MLDonkey on !FreedomBox. Only users of ''admin'' group can access MLDonkey on !FreedomBox using desktop or mobile clients. This is due to restrictions on which group of users have SSH access into !FreedomBox. + + 1. Create an admin user or use an existing admin user. + + 1. On your desktop machine, open a terminal and run the following command. It is recommended that you configure and use SSH keys instead of passwords for the this step. + {{{ +$ ssh -L 4001:localhost:4001 -N exampleuser@example.freedombox.rocks + }}} + 1. Start the GUI application and then connect it to MLDonkey as if MLDonkey is running on the local desktop machine. After you are done, terminate the SSH command by pressing Control-C. + +See MLDonkey documentation for [[http://mldonkey.sourceforge.net/SshTunnel|SSH Tunnel]] for more information. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/MLDonkey.raw.xml b/doc/manual/en/MLDonkey.raw.xml deleted file mode 100644 index 8d0eeec99..000000000 --- a/doc/manual/en/MLDonkey.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/MLDonkey142020-05-30 18:00:14SunilMohanAdapaUpdate the title to emphasize app name over its generic name132020-05-23 19:52:41JamesValleroyadd TableOfContents122019-02-08 06:29:35SunilMohanAdapaUpdate more information about clients112019-02-06 13:52:06jcromero102019-02-02 21:16:52jcromero92019-01-23 21:18:05jcromero82019-01-23 18:34:25jcromero72019-01-23 18:30:54jcromero62019-01-23 18:19:19SunilMohanAdapaEscape from linking52019-01-23 18:18:47SunilMohanAdapaWrite MLdonkey as MLDonkey42019-01-23 18:17:54SunilMohanAdapaWrite MLdonkey as MLDonkey and other minor fixes32019-01-23 17:37:32jcromero22019-01-23 13:37:48jcromero12019-01-23 13:31:23jcromero
MLDonkey (Peer-to-peer File Sharing)
What is MLDonkey?MLDonkey is an open-source, multi-protocol, peer-to-peer file sharing application that runs as a back-end server application on many platforms. It can be controlled through a user interface provided by one of many separate front-ends, including a Web interface, telnet interface and over a dozen native client programs. Originally a Linux client for the eDonkey protocol, it now runs on many flavors of Unix-like, OS X, Microsoft Windows and MorphOS and supports numerous peer-to-peer protocols including ED2K (and Kademlia and Overnet), BitTorrent, DC++ and more. Read more about MLDonkey at the MLDonkey Project Wiki Available since: version 0.48.0
ScreenshotMLDonkey Web Interface
Using MLDonkey Web InterfaceAfter installing MLDonkey, its web interface can be accessed from FreedomBox at https://<your freedombox>/mldonkey. Users belonging to the ed2k and admin groups can access this web interface.
Using Desktop/Mobile InterfaceMany desktop and mobile applications can be used to control MLDonkey. MLDonkey server will always be running on FreedomBox. It will download files (or upload them) and store them on FreedomBox even when your local machine is not running or connected to MLDonkey on FreedomBox. Only users of admin group can access MLDonkey on FreedomBox using desktop or mobile clients. This is due to restrictions on which group of users have SSH access into FreedomBox. Create an admin user or use an existing admin user. On your desktop machine, open a terminal and run the following command. It is recommended that you configure and use SSH keys instead of passwords for the this step. Start the GUI application and then connect it to MLDonkey as if MLDonkey is running on the local desktop machine. After you are done, terminate the SSH command by pressing Control-C. See MLDonkey documentation for SSH Tunnel for more information. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Maker.raw.wiki b/doc/manual/en/Maker.raw.wiki new file mode 100644 index 000000000..0699a5087 --- /dev/null +++ b/doc/manual/en/Maker.raw.wiki @@ -0,0 +1,62 @@ +== Freedom Maker == + +Freedom Maker is a script to build !FreedomBox disk images for use on various hardware devices or virtual machines. + +Freedom Maker can currently build !FreedomBox disk images for the following: + * [[https://en.wikipedia.org/wiki/OLinuXino#A20-OlinuXino-LIME|A20-OlinuXino-LIME]] + * [[https://en.wikipedia.org/wiki/OLinuXino#A20-OlinuXino-LIME2|A20-OlinuXino-LIME2]] + * [[https://en.wikipedia.org/wiki/OLinuXino#A20-OLinuXino-MICRO|A20-OLinuXino-MICRO]] + * [[https://en.wikipedia.org/wiki/Banana_Pro|Banana Pro]] + * [[https://en.wikipedia.org/wiki/BeagleBoard#BeagleBone|BeagleBone]] + * [[https://en.wikipedia.org/wiki/Cubieboard#Cubieboard2|Cubieboard2]] + * [[https://en.wikipedia.org/wiki/Cubieboard#Cubietruck_.28Cubieboard3.29|Cubietruck]] + * [[http://www.linksprite.com/linksprite-pcduino3/|pcDuino3]] + * [[https://en.wikipedia.org/wiki/Raspberry_Pi|Raspberry Pi 2]] + * [[https://en.wikipedia.org/wiki/Raspberry_Pi|Raspberry Pi 3 Model B]] + * [[https://en.wikipedia.org/wiki/Raspberry_Pi|Raspberry Pi 3 Model B+]] + * [[https://en.wikipedia.org/wiki/VirtualBox|VirtualBox]] + * [[https://en.wikipedia.org/wiki/QEMU|QEMU]] + * [[https://en.wikipedia.org/wiki/X86-64#AMD64|AMD64 (x86-64) Machines]], [[https://en.wikipedia.org/wiki/X86|X86 Machines]] and other virtual machines (using raw disk images) + +If a hardware platform is capable of running Debian, it should not be too much effort adopt Freedom Maker to create !FreedomBox images for the platform. + +Freedom Maker is [[https://www.gnu.org/philosophy/|Free Software]] licensed under [[https://www.gnu.org/licenses/gpl.html|GNU General Public License]] version 3 or (at your option) a later version. + +=== Building FreedomBox Images === + + * You can get Freedom Maker from its [[https://salsa.debian.org/freedombox-team/freedom-maker.git|Git repository]] and follow the instructions in the README to [[https://salsa.debian.org/freedombox-team/freedom-maker/blob/master/README.md|build a FreedomBox image]]. + +=== Support === + +You may ask for support on + + * [[https://discuss.freedombox.org/|The discussion forum]] + + * [[http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss|The mailing list]] + + * [[irc://irc.debian.org/freedombox|#freedombox IRC channel]] + + * [[https://matrix.to/#/#freedombox:matrix.org|FreedomBox Matrix channel]] + +=== Contributing === + +We are looking for help to improve Freedom Maker. + + * Instructions on how to [[FreedomBox/Contribute/Code|contribute code]] are available. + + * Freedom Maker is hosted at [[https://salsa.debian.org/freedombox-team/freedom-maker|FreedomBox Salsa Project]]. The primary Git repository is hosted [[https://salsa.debian.org/freedombox-team/freedom-maker.git|there]]. + + * You can contribute to !FreedomBox by adding support for more hardware platforms. Freedom Maker can be easily adopted to newer platforms if they already support running Debian. + + * You can create and test images with Freedom Maker regularly to test for new features and check for regressions. + + * List of bugs, TODO items and feature requests are available on the [[https://salsa.debian.org/freedombox-team/freedom-maker/issues|issue tracker]]. + + * You can request for development assistance on [[https://discuss.freedombox.org/|the discussion forum]], [[http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss|the mailing list]] or the [[irc://irc.debian.org/freedombox|#freedombox IRC channel]]. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/MatrixSynapse.raw.wiki b/doc/manual/en/MatrixSynapse.raw.wiki new file mode 100644 index 000000000..aa30e98ea --- /dev/null +++ b/doc/manual/en/MatrixSynapse.raw.wiki @@ -0,0 +1,72 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/MatrixSynapse|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Matrix Synapse (Chat Server) == +|| {{attachment:Matrix-icon_en_V01.png|Matrix Synapse icon}} || + +'''Available since''': version 0.14.0 + +=== What is Matrix? === +[[https://matrix.org/|Matrix]] is an open standard for interoperable, decentralized, real-time communication over IP. Synapse is the reference implementation of a Matrix server. It can be used to setup instant messaging on !FreedomBox to host large chat rooms, end-to-end encrypted communication and audio/video calls. +Matrix Synapse is a federated application where chat rooms can exist on any server and users from any server in the federated network can join them. [[https://matrix.org/docs/guides/faq.html|Learn more]] about Matrix. + +=== How to access your Matrix Synapse server? === + +We recommend the [[https://element.io/|Element]] client to access the Matrix Synapse server. You can [[https://element.io/get-started|download]] Element for desktops. Mobile applications for Android and iOS are available from their respective app stores. + +=== Port Forwarding === + +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 Matrix: + * TCP 8448 + +=== Setting up Matrix Synapse on your FreedomBox === + +To enable Matrix, first navigate to the Chat Server (Matrix Synapse) page and install it. Matrix needs a valid domain name to be configured. After installation, you will be asked to configure it. You will be able to select a domain from a drop down menu of available domains. Domains are configured using System -> Configure page. After configuring a domain, you will see that the service is running. The service will be accessible on the configured !FreedomBox domain. Currently, you will not be able to change the domain once is it configured. + +Your router has to be configured to forward port 8448. + +All the registered users of your !FreedomBox will have their Matrix IDs as `@username:domain`. If public registration is enabled, also your chosen client can be used to register a user account. + +=== Federating with other Matrix instances === + +You will be able to interact with any other person running another Matrix instance. This is done by simply starting a conversation with them using their matrix ID which is of the format `@their-username:their-domain`. You can also join rooms which are in another server and have audio/video calls with contacts on other server. + +=== Memory usage === +The Synapse reference server implemented in Python is known to be quite RAM hungry, especially when loading large rooms with thousands of members like #matrix:matrix.org. It is recommended to avoid joining such rooms if your !FreedomBox device only has 1 GiB RAM or less. Rooms with up to a hundred members should be safe to join. The Matrix team is working on a new implementation of the Matrix server written in Go called Dendrite which might perform better in low-memory environments. + +Some large public rooms in the Matrix network are also available as IRC channels (e.g. #freedombox:matrix.org is also available as #freedombox on irc.debian.org). It is better to use IRC instead of Matrix for such large rooms. You can join the IRC channels using [[FreedomBox/Manual/Quassel|Quassel]]. + +=== Advanced usage === + + 1. If you wish to create a large number of users on your Matrix Synapse server, use the following commands on a remote shell as root user: + {{{ +cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1 | sed "s+^+registration_shared_secret: +" > /etc/matrix-synapse/conf.d/registration_shared_secret.yaml +chmod 600 /etc/matrix-synapse/conf.d/registration_shared_secret.yaml +chown matrix-synapse:nogroup /etc/matrix-synapse/conf.d/registration_shared_secret.yaml +systemctl restart matrix-synapse +register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml +}}} + 1. If you wish to see the list of users registered in Matrix Synapse, the following as root user: + {{{ +apt install sqlite3 +echo 'select name from users' | sqlite3 /var/lib/matrix-synapse/homeserver.db +}}} + 1. If you wish to create a community in Matrix Synapse, a Matrix user with server admin privileges is needed. In order to grant such privileges to `username` run the following commands as root user: + {{{ +sudo apt install sqlite3 +echo "UPDATE users SET admin=1 WHERE name='@username:domainname'" | sudo sqlite3 /var/lib/matrix-synapse/homeserver.db + }}} + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/MatrixSynapse.raw.xml b/doc/manual/en/MatrixSynapse.raw.xml deleted file mode 100644 index 6cfb62ceb..000000000 --- a/doc/manual/en/MatrixSynapse.raw.xml +++ /dev/null @@ -1,7 +0,0 @@ -
FreedomBox/Manual/MatrixSynapse192020-05-30 17:56:34SunilMohanAdapaUpdate the title to emphasize app name over its generic name182020-05-23 19:50:39JamesValleroyadd TableOfContents172020-03-21 20:17:34DrahtseilClearer explanation of users activated. Add port forwarding162020-01-03 23:07:19JamesValleroyminor spelling fix152020-01-03 12:47:36fioddorMinor correction142020-01-03 12:46:45fioddorMinor clarifications132019-12-27 15:42:46chkmue122019-10-07 23:01:22JamesValleroyfix spelling112019-09-25 18:31:37SunilMohanAdapaAdd section for advanced administration commands102019-03-01 17:53:22JosephNuthalapatiEscape FreedomBox hyperlinks92019-02-27 21:16:58JosephNuthalapatiMention IRC as an alternative for large Matrix rooms82019-02-13 09:09:45JosephNuthalapatiRemove pop-culture references. Add notes about large rooms and memory usage.72019-01-14 20:16:04DrahtseilSystem requirements62018-03-02 12:06:08JosephNuthalapati52018-03-02 10:44:12JosephNuthalapatiNaming was inconsistent42017-06-27 05:13:41JosephNuthalapati32017-03-24 06:42:49SunilMohanAdapaUpdate for explaining more features etc.22017-03-23 06:36:05rahulde12017-03-23 06:33:43rahulde
Matrix Synapse (Chat Server)
What is Matrix?Matrix is an open standard for interoperable, decentralized, real-time communication over IP. Synapse is the reference implementation of a Matrix server. It can be used to setup instant messaging on FreedomBox to host large chat rooms, end-to-end encrypted communication and audio/video calls. Matrix Synapse is a federated application where chat rooms can exist on any server and users from any server in the federated network can join them. Learn more about Matrix. Available since: version 0.14.0
How to access your Matrix Synapse server?We recommend the Riot client to access the Matrix Synapse server. You can download Riot for desktops. Mobile applications for Android and iOS are available from their respective app stores.
Setting up Matrix Synapse on your FreedomBoxTo enable Matrix, first navigate to the Chat Server (Matrix Synapse) page and install it. Matrix needs a valid domain name to be configured. After installation, you will be asked to configure it. You will be able to select a domain from a drop down menu of available domains. Domains are configured using System -> Configure page. After configuring a domain, you will see that the service is running. The service will be accessible on the configured FreedomBox domain. Currently, you will not be able to change the domain once is it configured. Your router has to be configured to forward port 8448. All the registered users of your FreedomBox will have their Matrix IDs as @username:domain. If public registration is enabled, also your chosen client can be used to register a user account.
Federating with other Matrix instancesYou will be able to interact with any other person running another Matrix instance. This is done by simply starting a conversation with them using their matrix ID which is of the format @their-username:their-domain. You can also join rooms which are in another server and have audio/video calls with contacts on other server.
Memory usageThe Synapse reference server implemented in Python is known to be quite RAM hungry, especially when loading large rooms with thousands of members like #matrix:matrix.org. It is recommended to avoid joining such rooms if your FreedomBox device only has 1 GiB RAM or less. Rooms with up to a hundred members should be safe to join. The Matrix team is working on a new implementation of the Matrix server written in Go called Dendrite which might perform better in low-memory environments. Some large public rooms in the Matrix network are also available as IRC channels (e.g. #freedombox:matrix.org is also available as #freedombox on irc.debian.org). It is better to use IRC instead of Matrix for such large rooms. You can join the IRC channels using Quassel.
Advanced usageIf you wish to create a large number of users on your Matrix Synapse server, use the following commands on a remote shell as root user: /etc/matrix-synapse/conf.d/registration_shared_secret.yaml -chmod 600 /etc/matrix-synapse/conf.d/registration_shared_secret.yaml -chown matrix-synapse:nogroup /etc/matrix-synapse/conf.d/registration_shared_secret.yaml -systemctl restart matrix-synapse -register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml]]>If you wish to see the list of users registered in Matrix Synapse, the following as root user: If you wish to create a community in Matrix Synapse, a Matrix user with server admin privileges is needed. In order to grant such privileges to username run the following commands as root user: Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/MediaWiki.raw.wiki b/doc/manual/en/MediaWiki.raw.wiki new file mode 100644 index 000000000..f7abc7436 --- /dev/null +++ b/doc/manual/en/MediaWiki.raw.wiki @@ -0,0 +1,86 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/MediaWiki|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== MediaWiki (Wiki) == +|| {{attachment:MediaWiki-icon_en_V01.png|MediaWiki icon}} || + +'''Available since:''' version 0.20.0 + +=== About MediaWiki === + +MediaWiki is the software that powers the Wikimedia suite of wikis. + +Read more about !MediaWiki on [[https://en.wikipedia.org/wiki/MediaWiki|Wikipedia]] + +=== MediaWiki on FreedomBox === + +!MediaWiki on !FreedomBox is configured to be publicly readable and privately editable. Only logged in users can make edits to the wiki. This configuration prevents spam and vandalism on the wiki. + +==== User management ==== + +Users can be created by the !MediaWiki administrator (user "admin") only. The "admin" user can also be used to reset passwords of !MediaWiki users. The administrator password, if forgotten can be reset anytime from the !MediaWiki app page in web interface. + +==== Use cases ==== + +!MediaWiki is quite versatile and can be put to many creative uses. It also comes with a lot of plugins and themes and is highly customizable. + +===== Personal Knowledge Repository ===== + + !MediaWiki on !FreedomBox can be your own personal knowledge repository. Since !MediaWiki has good multimedia support, you can write notes, store images, create checklists, store references and bookmarks etc. in an organized manner. You can store the knowledge of a lifetime in your !MediaWiki instance. + +===== Community Wiki ===== + + A community of users can use !MediaWiki as their common repository of knowledge and reference material. It can used as a college notice board, documentation server for a small company, common notebook for study groups or as a fan wiki like wikia. + +===== Personal Wiki-based Website ===== + + [[https://www.mediawiki.org/wiki/Sites_using_MediaWiki/en|Several websites]] on the internet are simply !MediaWiki instances. !MediaWiki on !FreedomBox is read-only to visitors. Hence, it can be adapted to serve as your personal website and/or blog. !MediaWiki content is easy to export and can be later moved to use another blog engine. + + +==== Editing Wiki Content ==== + +The !MediaWiki installation on !FreedomBox ships with a basic editor with a toolbar for common options like Bold, Italics etc. Click on the Advanced section for more options like Headings, bullet lists etc. + +{{attachment:mediawiki-toolbar.png}} + + +===== Visual Editor ===== + + !MediaWiki's new Visual Editor gives a WYSIWYG user interface to creating wiki pages. This is still a Beta feature and is not provided by default with !MediaWiki. A workaround is to use write your content using the Visual Editor in [[https://en.wikipedia.org/wiki/Wikipedia:Sandbox|Wikipedia's Sandbox]], switching to source editing mode and copying the content into your wiki. + +===== Other Formats ===== + + You don't have to necessarily learn the !MediaWiki formatting language. You can write in your favorite format (Markdown, Org-mode, LaTeX etc.) and convert it to the !MediaWiki format using [[https://pandoc.org/try/|Pandoc]]. + +===== Image Uploads ===== + + Image uploads have been enabled since !FreedomBox version 0.36.0. You can also directly use images from Wikimedia Commons using a feature called [[https://www.mediawiki.org/wiki/InstantCommons|Instant Commons]]. + +==== Customization ==== + +===== Skins ===== + +!MediaWiki's default skin is usually Vector. The default skin set by +!FreedomBox is Timeless. + +Vector is a skin best-suited for viewing on desktop +browsers. It is not suitable for mobile screen sizes. Wikimedia sites host +a separate mobile site. It is not worth hosting a separate mobile site for +small !MediaWiki installations like those on !FreedomBox. Using a mobile-friendly skin like Timeless is a cheaper way of solving the problem. + +Administrators can choose a default skin from the app configuration. Users of the site also have the choice of viewing it with a different skin. + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/MediaWiki.raw.xml b/doc/manual/en/MediaWiki.raw.xml deleted file mode 100644 index 14be7e339..000000000 --- a/doc/manual/en/MediaWiki.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/MediaWiki162020-05-30 18:12:57SunilMohanAdapaUpdate the title to emphasize app name over its generic name152020-05-23 19:58:35JamesValleroyadd TableOfContents142020-04-12 16:05:09JamesValleroyadd links back to top level pages132020-01-24 11:40:30JosephNuthalapatiAdd screenshot of editor toolbar122020-01-24 11:38:30JosephNuthalapatiMention the default wiki editor in "Editing Wiki content"112020-01-21 08:09:53fioddorCustomization section moved at the end because the others are more generic.102020-01-18 09:41:15JosephNuthalapatiAdd customization section92018-08-28 09:42:01JosephNuthalapatiRemove internal links to MediaWiki82018-08-27 23:58:16JamesValleroytry to close last section72018-08-27 23:43:48JamesValleroyadd consistent newlines after headings62018-08-27 23:41:37JamesValleroyspelling52018-08-21 07:33:32JosephNuthalapati42018-08-21 07:32:43JosephNuthalapatiUpdate wiki to include new features32018-01-31 06:02:30SunilMohanAdapaAdd footer and category22018-01-17 10:26:45JosephNuthalapatiFix headings12018-01-13 04:01:22JosephNuthalapatiNew wiki entry for MediaWiki on FreedomBox
MediaWiki (Wiki)
About MediaWikiMediaWiki is the software that powers the Wikimedia suite of wikis. Read more about MediaWiki on Wikipedia Available since: version 0.20.0
MediaWiki on FreedomBoxMediaWiki on FreedomBox is configured to be publicly readable and privately editable. Only logged in users can make edits to the wiki. This configuration prevents spam and vandalism on the wiki.
User managementUsers can be created by the MediaWiki administrator (user "admin") only. The "admin" user can also be used to reset passwords of MediaWiki users. The administrator password, if forgotten can be reset anytime from the MediaWiki app page in web interface.
Use casesMediaWiki is quite versatile and can be put to many creative uses. It also comes with a lot of plugins and themes and is highly customizable.
Personal Knowledge RepositoryMediaWiki on FreedomBox can be your own personal knowledge repository. Since MediaWiki has good multimedia support, you can write notes, store images, create checklists, store references and bookmarks etc. in an organized manner. You can store the knowledge of a lifetime in your MediaWiki instance.
Community WikiA community of users can use MediaWiki as their common repository of knowledge and reference material. It can used as a college notice board, documentation server for a small company, common notebook for study groups or as a fan wiki like wikia.
Personal Wiki-based WebsiteSeveral websites on the internet are simply MediaWiki instances. MediaWiki on FreedomBox is read-only to visitors. Hence, it can be adapted to serve as your personal website and/or blog. MediaWiki content is easy to export and can be later moved to use another blog engine.
Editing Wiki ContentThe MediaWiki installation on FreedomBox ships with a basic editor with a toolbar for common options like Bold, Italics etc. Click on the Advanced section for more options like Headings, bullet lists etc. mediawiki-toolbar.png
Visual EditorMediaWiki's new Visual Editor gives a WYSIWYG user interface to creating wiki pages. This is still a Beta feature and is not provided by default with MediaWiki. A workaround is to use write your content using the Visual Editor in Wikipedia's Sandbox, switching to source editing mode and copying the content into your wiki.
Other FormatsYou don't have to necessarily learn the MediaWiki formatting language. You can write in your favorite format (Markdown, Org-mode, LaTeX etc.) and convert it to the MediaWiki format using Pandoc.
Image UploadsImage uploads have been enabled since FreedomBox version 0.36.0. You can also directly use images from Wikimedia Commons using a feature called Instant Commons.
Customization
SkinsMediaWiki's default skin is usually Vector. The default skin set by FreedomBox is Timeless. Vector is a skin best-suited for viewing on desktop browsers. It is not suitable for mobile screen sizes. Wikimedia sites host a separate mobile site. It is not worth hosting a separate mobile site for small MediaWiki installations like those on FreedomBox. Using a mobile-friendly skin like Timeless is a cheaper way of solving the problem. Administrators can choose a default skin from the app configuration. Users of the site also have the choice of viewing it with a different skin. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Minetest.raw.wiki b/doc/manual/en/Minetest.raw.wiki new file mode 100644 index 000000000..9cc74c6e6 --- /dev/null +++ b/doc/manual/en/Minetest.raw.wiki @@ -0,0 +1,29 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Minetest|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Minetest (Block Sandbox) == +|| {{attachment:Minetest-icon_en_V01.png|Minetest icon}} || + +'''Available since''': version 0.9 + +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 [[https://www.minetest.net/downloads/|Minetest client]] is needed. + +=== Port Forwarding === + +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: + * UDP 30000 + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Minetest.raw.xml b/doc/manual/en/Minetest.raw.xml deleted file mode 100644 index 32230bc3b..000000000 --- a/doc/manual/en/Minetest.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Minetest62020-05-30 17:54:28SunilMohanAdapaUpdate the title to emphasize app name over its generic name52020-05-23 19:49:18JamesValleroyadd TableOfContents42020-05-03 18:37:00JamesValleroyuse https link32017-01-02 13:29:19JamesValleroyfix list22017-01-02 13:26:03JamesValleroyadd port forwarding info12016-09-04 10:20:44Drahtseilstub created
Minetest (Block Sandbox)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 Minetest client is needed.
Port ForwardingIf 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: UDP 30000 Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/MiniDLNA.raw.wiki b/doc/manual/en/MiniDLNA.raw.wiki new file mode 100644 index 000000000..7a74477b7 --- /dev/null +++ b/doc/manual/en/MiniDLNA.raw.wiki @@ -0,0 +1,87 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/MiniDLNA|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== MiniDLNA (Simple Media Server) == +|| {{attachment:MiniDLNA-icon_en_V01.png|MiniDLNA icon}} || + +'''Available since''': version 19.23 + +MiniDLNA is a media server with the aim to be compliant with DLNA/UPnP clients. + +Note: This service is available only on networks configured as "internal" zone. It is not available when connected via [[FreedomBox/Manual/OpenVPN|OpenVPN]]. + +=== What is UPnP/DLNA? === + +Universal plug & play is a set of networking protocols that allow devices within +a network such as PCs, TVs, printers etc. to seamlessly discover each other and +establish communication for data sharing. It is zero configuration protocol and +requires only a media server and a media player that are compliant with the +protocol. + +DLNA is derived from UPnP as a form of standardizing media interoperability. It +forms a standard/certification which many consumer electronics conform to. + +=== Setting up MiniDLNA on your FreedomBox === + +To install/enable the media server you need to navigate at MiniDLNA page and +enable it. The application is intended to be available in the internal (home) network and +therefore it requires a network interface configured for internal traffic. + +After installation a web page becomes available on https:///_minidlna. +It includes information for how many files the server is detecting, how many connections +exist etc. This is very useful if plugging external disks with media to check +if the new media files are detected properly. If that is not happening, disabling and +enabling the server will fix it. + +=== Using MiniDLNA to play media on your devices === + +Any DLNA compliant device or media player should be able to automatically detect, browse and play media from MiniDLNA on !FreedomBox. The following devices and media players have been tested: + + * '''GNOME Videos''': Videos is the default media player on the popular GNU/Linux desktop environment GNOME. Open Videos, switch to 'Channels'. You should see a channel named 'freedombox: minidlna'. You will be able to browse and play media from it. + * '''VLC media player''': VLC is a very popular media player for GNU/Linux, Android, Windows and macOS. Open VLC and click on 'View -> Playlist'. In the playlist sidebar that appears, select 'Universal Plug'n'Play'. You should see an item named 'freedombox: minidlna'. You should be able to browse and play media from it. + * '''Kodi''': Kodi is a popular media centre software with user interface designed for Televisions. Open Kodi, goto 'System -> Service settings -> UPnP/DLNA' and 'Enable UPnP support'. Then visit 'Home -> Videos -> Files -> Add videos... -> Browse -> UPnP devices'. You should see 'freedombox: minidlna'. Select it and choose 'OK'. Then choose 'OK in the 'Add video source' dialog. From now on, you should see 'freedombox: minidlna' in 'Videos -> Files' section. You should be able to browse and play media from it. See [[https://kodi.wiki/view/Settings/Services/UPnP_DLNA|Kodi documentation]] for more information. + * '''Roku''': Roku is an appliance connected to a TV for playing Internet streaming services. Many TVs also have Roku built into them. In Roku interface, find a channel called 'Roku Media Player' and open it. You should see an item called 'freedombox: minidlna'. You should be able to browse and play media from it. + * '''Rhythmbox''': Rhythmbox is the default audio player on the popular GNU/Linux desktop environment GNOME. Open Rhythmbox and ensure that the side pane is open by clicking on 'Application menu -> View -> Side Pane'. In the side pane you should see 'freedombox:minidlna' under the 'Shared' section. You should be able to browse and play audio files from it. Video files will not show up. + +=== Supported media formats === + +MiniDLNA supports a wide variety of video and audio file formats. + + * '''Video''': Files ending with .avi, .mp4, .mkv, .mpg, .mpeg, .wmv, .m4v, .flv, .mov, .3gp, etc. + * '''Audio''': Files ending with .mp3, .ogg, .flac, .wav, .pcm, .wma, .fla, .aac, etc. + * '''Image''': Files ending with .jpg, .jpeg + * '''Playlist''': Files ending with .m3u, .pls + * '''Captions''': Files ending with .srt, .smi + +Notably, it does '''not''' support the following file extensions. Renaming the file to a known extension seems to work in most cases. + + * '''Video''': Files ending with .webm + +In addition to file format support from MiniDLNA, your media player or device needs to support the audio/video codecs with which the media has been encoded. MiniDLNA does not have the ability to translate files into a codec understood by the player. If you face problems with media playback, use the VLC player to find the codecs used in the media and the check your device or media player documentation on whether the codecs are supported. + +=== File systems for external drives === + +If using an external drive that is used also from a Windows system the +preferred filesystem should be NTFS. NTFS will keep Linux file permissions and +UTF8 encoding for file names. This is useful if file names are in +your language. + +=== External links === + +http://minidlna.sourceforge.net/ +https://en.wikipedia.org/wiki/Digital_Living_Network_Alliance + +## END_INCLUDE + + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/MiniDLNA.raw.xml b/doc/manual/en/MiniDLNA.raw.xml deleted file mode 100644 index da7d9d59f..000000000 --- a/doc/manual/en/MiniDLNA.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/MiniDLNA82020-05-30 18:05:07SunilMohanAdapaUpdate the title to emphasize app name over its generic name72020-05-27 00:16:26SunilMohanAdapaAdd section on supported file formats62020-05-26 22:31:38SunilMohanAdapaMinor styling52020-05-26 22:29:28SunilMohanAdapaAdd information about how to use in various devices/media players42020-05-26 04:51:58SunilMohanAdapaAdd note about not being available on OpenVPN32020-05-23 19:54:42JamesValleroyadd TableOfContents22019-11-21 20:18:10NektariosKatakis12019-11-20 16:49:59NektariosKatakis
MiniDLNA (Simple Media Server)MiniDLNA is a media server with the aim to be compliant with DLNA/UPnP clients. Note: This service is available only on networks configured as "internal" zone. It is not available when connected via OpenVPN.
What is UPnP/DLNA?Universal plug & play is a set of networking protocols that allow devices within a network such as PCs, TVs, printers etc. to seamlessly discover each other and establish communication for data sharing. It is zero configuration protocol and requires only a media server and a media player that are compliant with the protocol. DLNA is derived from UPnP as a form of standardizing media interoperability. It forms a standard/certification which many consumer electronics conform to.
Setting up MiniDLNA on your FreedomBoxTo install/enable the media server you need to navigate at MiniDLNA page and enable it. The application is intended to be available in the internal (home) network and therefore it requires a network interface configured for internal traffic. After installation a web page becomes available on . It includes information for how many files the server is detecting, how many connections exist etc. This is very useful if plugging external disks with media to check if the new media files are detected properly. If that is not happening, disabling and enabling the server will fix it.
Using MiniDLNA to play media on your devicesAny DLNA compliant device or media player should be able to automatically detect, browse and play media from MiniDLNA on FreedomBox. The following devices and media players have been tested: GNOME Videos: Videos is the default media player on the popular GNU/Linux desktop environment GNOME. Open Videos, switch to 'Channels'. You should see a channel named 'freedombox: minidlna'. You will be able to browse and play media from it. VLC media player: VLC is a very popular media player for GNU/Linux, Android, Windows and macOS. Open VLC and click on 'View -> Playlist'. In the playlist sidebar that appears, select 'Universal Plug'n'Play'. You should see an item named 'freedombox: minidlna'. You should be able to browse and play media from it. Kodi: Kodi is a popular media centre software with user interface designed for Televisions. Open Kodi, goto 'System -> Service settings -> UPnP/DLNA' and 'Enable UPnP support'. Then visit 'Home -> Videos -> Files -> Add videos... -> Browse -> UPnP devices'. You should see 'freedombox: minidlna'. Select it and choose 'OK'. Then choose 'OK in the 'Add video source' dialog. From now on, you should see 'freedombox: minidlna' in 'Videos -> Files' section. You should be able to browse and play media from it. See Kodi documentation for more information. Roku: Roku is an appliance connected to a TV for playing Internet streaming services. Many TVs also have Roku built into them. In Roku interface, find a channel called 'Roku Media Player' and open it. You should see an item called 'freedombox: minidlna'. You should be able to browse and play media from it. Rhythmbox: Rhythmbox is the default audio player on the popular GNU/Linux desktop environment GNOME. Open Rhythmbox and ensure that the side pane is open by clicking on 'Application menu -> View -> Side Pane'. In the side pane you should see 'freedombox:minidlna' under the 'Shared' section. You should be able to browse and play audio files from it. Video files will not show up.
Supported media formatsMiniDLNA supports a wide variety of video and audio file formats. Video: Files ending with .avi, .mp4, .mkv, .mpg, .mpeg, .wmv, .m4v, .flv, .mov, .3gp, etc. Audio: Files ending with .mp3, .ogg, .flac, .wav, .pcm, .wma, .fla, .aac, etc. Image: Files ending with .jpg, .jpeg Playlist: Files ending with .m3u, .pls Captions: Files ending with .srt, .smi Notably, it does not support the following file extensions. Renaming the file to a known extension seems to work in most cases. Video: Files ending with .webm In addition to file format support from MiniDLNA, your media player or device needs to support the audio/video codecs with which the media has been encoded. MiniDLNA does not have the ability to translate files into a codec understood by the player. If you face problems with media playback, use the VLC player to find the codecs used in the media and the check your device or media player documentation on whether the codecs are supported.
File systems for external drivesIf using an external drive that is used also from a Windows system the preferred filesystem should be NTFS. NTFS will keep Linux file permissions and UTF8 encoding for file names. This is useful if file names are in your language.
External links Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Monkeysphere.raw.wiki b/doc/manual/en/Monkeysphere.raw.wiki new file mode 100644 index 000000000..6a74484f4 --- /dev/null +++ b/doc/manual/en/Monkeysphere.raw.wiki @@ -0,0 +1,24 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Monkeysphere|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Monkeysphere == + +With Monkeysphere, an OpenPGP key can be generated for each configured domain serving SSH. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users connecting to this machine through SSH can verify that they are connecting to the correct host. For users to trust the key, at least one person (usually the machine owner) must sign the key using the regular OpenPGP key signing process. See the [[http://web.monkeysphere.info/getting-started-ssh/|Monkeysphere SSH documentation]] for more details. + +Monkeysphere can also generate an OpenPGP key for each Secure Web Server (HTTPS) certificate installed on this machine. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users accessing the web server through HTTPS can verify that they are connecting to the correct host. To validate the certificate, the user will need to install some software that is available on the [[https://web.monkeysphere.info/download/|Monkeysphere website]]. + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Monkeysphere.raw.xml b/doc/manual/en/Monkeysphere.raw.xml deleted file mode 100644 index 9aeb474c5..000000000 --- a/doc/manual/en/Monkeysphere.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Monkeysphere12016-09-04 10:12:10Drahtseilstub created
MonkeysphereWith Monkeysphere, an OpenPGP key can be generated for each configured domain serving SSH. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users connecting to this machine through SSH can verify that they are connecting to the correct host. For users to trust the key, at least one person (usually the machine owner) must sign the key using the regular OpenPGP key signing process. See the Monkeysphere SSH documentation for more details. Monkeysphere can also generate an OpenPGP key for each Secure Web Server (HTTPS) certificate installed on this machine. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users accessing the web server through HTTPS can verify that they are connecting to the correct host. To validate the certificate, the user will need to install some software that is available on the Monkeysphere website. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Mumble.raw.wiki b/doc/manual/en/Mumble.raw.wiki new file mode 100644 index 000000000..f5976a9cb --- /dev/null +++ b/doc/manual/en/Mumble.raw.wiki @@ -0,0 +1,55 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Mumble|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Mumble (Voice Chat) Server == +|| {{attachment:Mumble-icon_en_V01.png|Mumble icon}} || + +'''Available since''': version 0.5 + +=== What is Mumble? === + +Mumble is a voice chat software. Primarily intended for use while gaming, it is suitable for simple talking with high audio quality, noise suppression, encrypted communication, public/private-key authentication by default, and "wizards" to configure your microphone for instance. A user can be marked as a "priority speaker" within a channel. + +=== Using Mumble === + +!FreedomBox includes the Mumble server. [[https://wiki.mumble.info/wiki/Main_Page|Clients]] are available for desktop and mobile platforms. Users can download one of these clients and connect to the server. + +=== Port Forwarding === + +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 Mumble: + * TCP 64738 + * UDP 64738 + +=== Managing Permissions === + +A super user in Mumble has the ability to create administrator accounts who can in turn manage groups and channel permissions. This can be done after logging in with the username "!SuperUser" using the super user password. See [[https://wiki.mumble.info/wiki/Murmurguide|Mumble Guide]] for information on how to do this.. !FreedomBox currently does not offer a UI to get or set the super user password for Mumble. A super user password is automatically generated during Mumble setup. To get the password, login to the terminal as admin user using [[FreedomBox/Manual/Cockpit|Cockpit]] , [[FreedomBox/Manual/SecureShell|Secure Shell]] or the console. Then, to read the super user password that was automatically generated during Mumble installation run the following command: + +{{{ +sudo grep SuperUser /var/log/mumble-server/mumble-server.log +}}} + +You should see output such as: +{{{ +2019-11-06 02:47:41.313 1 => Password for 'SuperUser' set to 'noo8Dahwiesh' +}}} + +Alternatively, you can set a new password as follows: + +{{{ +sudo su - +echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc/mumble-server.ini --readsupw" +}}} + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Mumble.raw.xml b/doc/manual/en/Mumble.raw.xml deleted file mode 100644 index ce57ba96e..000000000 --- a/doc/manual/en/Mumble.raw.xml +++ /dev/null @@ -1,2 +0,0 @@ -
FreedomBox/Manual/Mumble112020-05-30 18:10:11SunilMohanAdapaUpdate the title to emphasize app name over its generic name102020-05-23 19:57:23JamesValleroyadd TableOfContents92019-11-07 03:25:36SunilMohanAdapaUpdate super user section82019-11-07 02:51:23SunilMohanAdapaMinor formatting72019-11-07 02:50:58SunilMohanAdapaAdded section about SuperUser account62017-01-02 13:28:53JamesValleroyadd port forwarding info52016-12-31 04:04:56JamesValleroyadd basic usage info42016-09-01 19:14:55Drahtseiladapted title to Plinth wording32016-04-10 07:20:42PhilippeBaretAdded bottom navigation link22015-12-15 20:51:58PhilippeBaret12015-12-15 20:06:18PhilippeBaretAdded Mumble page and definition.
Mumble (Voice Chat)
What is Mumble?Mumble is a voice chat software. Primarily intended for use while gaming, it is suitable for simple talking with high audio quality, noise suppression, encrypted communication, public/private-key authentication by default, and "wizards" to configure your microphone for instance. A user can be marked as a "priority speaker" within a channel.
Using MumbleFreedomBox includes the Mumble server. Clients are available for desktop and mobile platforms. Users can download one of these clients and connect to the server.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Mumble: TCP 64738 UDP 64738
Managing PermissionsA super user in Mumble has the ability to create administrator accounts who can in turn manage groups and channel permissions. This can be done after logging in with the username "SuperUser" using the super user password. See Mumble Guide for information on how to do this.. FreedomBox currently does not offer a UI to get or set the super user password for Mumble. A super user password is automatically generated during Mumble setup. To get the password, login to the terminal as admin user using Cockpit , Secure Shell or the console. Then, to read the super user password that was automatically generated during Mumble installation run the following command: You should see output such as: 2019-11-06 02:47:41.313 1 => Password for 'SuperUser' set to 'noo8Dahwiesh']]>Alternatively, you can set a new password as follows: Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/NameServices.raw.wiki b/doc/manual/en/NameServices.raw.wiki new file mode 100644 index 000000000..507c320da --- /dev/null +++ b/doc/manual/en/NameServices.raw.wiki @@ -0,0 +1,21 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/NameServices|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Name Services == + +Name Services provides an overview of ways the box can be reached from the public Internet: domain name, Tor Onion Service, and Pagekite. For each type of name, it is shown whether the HTTP, HTTPS, and SSH services are enabled or disabled for incoming connections through the given name. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/NameServices.raw.xml b/doc/manual/en/NameServices.raw.xml deleted file mode 100644 index b5fb4b9c3..000000000 --- a/doc/manual/en/NameServices.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/NameServices42019-11-11 16:58:04JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service32016-12-31 04:18:51JamesValleroyreword22016-08-21 17:16:56Drahtseil12016-08-21 17:16:41DrahtseilCreated NameServices
Name ServicesName Services provides an overview of ways the box can be reached from the public Internet: domain name, Tor Onion Service, and Pagekite. For each type of name, it is shown whether the HTTP, HTTPS, and SSH services are enabled or disabled for incoming connections through the given name. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Networks.raw.wiki b/doc/manual/en/Networks.raw.wiki new file mode 100644 index 000000000..284c7678d --- /dev/null +++ b/doc/manual/en/Networks.raw.wiki @@ -0,0 +1,292 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Networks|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Networks == + +This section describes how networking is setup by default in +!FreedomBox and how you can customize it. See also the [[FreedomBox/Manual/Firewall|Firewall]] +section for more information on how firewall works. + +=== Default setup === + +In a fresh image of !FreedomBox, network is not configured at all. +When the image is written to an SD card and the device boots, +configuration is done. During first boot, !FreedomBox setup package +detects the networks interfaces and tries to automatically configure +them so that !FreedomBox is available for further configuration via +the web interface from another machine without the need to connect a +monitor. Automatic configuration also tries to make !FreedomBox +useful, out of the box, for the most important scenarios !FreedomBox +is used for. + +There are two scenarios it handles: when is a single ethernet +interface and when there are multiple ethernet interfaces. + +==== Single ethernet interface ==== + +When there is only single ethernet interface available on the hardware +device, there is not much scope for it to play the role of a router. +In this case, the device is assumed to be just another machine in the +network. Accordingly, the only available interface is configured to +be an `internal` interface in `automatic` configuration mode. This +means that it connects to the Internet using the configuration +provided by a router in the network and also makes all (internal and +external) of its services available to all the clients on this +network. + +{{attachment:network_single.png}} + +==== Multiple ethernet interface ==== + +When there are multiple ethernet interfaces available on the hardware +device, the device can act as a router. The interfaces are then +configured to perform this function. + +The first network interface is configured to be an WAN or `external` +interface in automatic configuration mode. This means that it +connects to the Internet using network configuration provided by the +Internet Service Provider (ISP). Only services that are meant to be +provided across the entire Internet (external services) will be +exposed on this interface. You must plug your Internet connection +into the port of this ethernet interface. If you wish to continue to +have your existing router manage the Internet connection for you, then +plug a connection from your router to the port on this interface. + +The remaining network interfaces are configured for the clients of a +router. They are configured as LAN or `internal` interfaces in +`shared` configuration mode. This means that all the services (both +external and internal) services are provided to who ever connects on +this interface. Further, the `shared` mode means that clients will be +able to receive details of automatic network connection on this +interface. Specifically, DHCP configuration and DNS servers are +provided on this interface. The Internet connection available to the +device using the first network interface will be `shared` with clients +using this interface. This all means that you can connect your +computers to this network interface and they will get automatically +configured and will be able to access the Internet via the +!FreedomBox. + +Currently, it is not very clear which interface will be come the WAN +interface (and the remaining being LAN interfaces) although the +assignment process is deterministic. So, it take a bit of trail and +error to figure out which one is which. In future, for each device, +this will be well documented. + +==== Wi-Fi configuration ==== + +All Wi-Fi interfaces are configured to be LAN or `internal` interfaces +in `shared` configuration mode. They are also configured to become +Wi-Fi access points with following details. + + * Name of the access point will be `FreedomBox` plus the name of the + interface (to handle the case where there are multiple of them). + * Password for connecting to the interface will be `freedombox123`. + +=== Internet Connection Sharing === + +Although the primary duty of !FreedomBox is to provide decentralized services, it can also act like a home router. Hence, in most cases, !FreedomBox connects to the Internet and provides other machines in the network the ability to use that Internet connection. !FreedomBox can do this in two ways: using a `shared` mode connection or using an `internal` connection. + +When an interface is set in `shared` mode, you may connect your machine directly to it. This is either by plugging in an ethernet cable from this interface to your machine or by connecting to a Wi-Fi access point. This case is the simplest to use, as !FreedomBox automatically provides your machine with the necessary network configuration. Your machine will automatically connect to !FreedomBox provided network and will be able to connect to the Internet given that !FreedomBox can itself connect to the Internet. + +Sometimes the above setup may not be possible because the hardware device may have only one network interface or for other reasons. Even in this case, your machine can still connect to the Internet via !FreedomBox. For this to work, make sure that the network interface that your machine is connecting to is in `internal` mode. Then, connect your machine to network in which !FreedomBox is present. After this, in your machine's network configuration, set !FreedomBox's IP address as the gateway. !FreedomBox will then accept your network traffic from your machine and send it over to the Internet. This works because network interfaces in `internal` mode are configured to `masquerade` packets from local machines to the Internet and receive packets from Internet and forward them back to local machines. + +=== Customization === + +The above default configuration may not be fit for your setup. You +can customize the configuration to suit your needs from the `Networks` +area in the 'setup' section of the !FreedomBox web interface. + +==== PPPoE connections ==== + +If your ISP does not provide automatic network configuration via DHCP +and requires you to connection via PPPoE. To configure PPPoE, remove +any network connection existing on an interface and add a PPPoE +connection. Here, optionally, provide the account username and +password given by your ISP and activate the connection. + +==== Connect to Internet via Wi-Fi ==== + +By default Wi-Fi devices attached during first boot will be configured +as access points. They can be configured as regular Wi-Fi devices +instead to connection to a local network or an existing Wi-Fi router. +To do this, click on the Wi-Fi connection to edit it. Change the mode +to `Infrastructure` instead of `Access Point` mode and `IPv4 Addressing Method` +to `Automatic (DHCP)` instead of `Shared` mode. +Then the SSID provided will mean the Wi-Fi network name you wish to +connect to and passphrase will be the used to while making the +connection. + +===== Problems with Privacy Feature ===== + +!NetworkManager used by !FreedomBox to connect to the Wi-Fi networks has a privacy feature that uses a different identity when scanning for networks and when actually connecting to the Wi-Fi access point. Unfortunately, this causes [[https://askubuntu.com/questions/910185/rosewill-rnx-n600ube-connectivity-issue-on-ubuntu-17-04|problems]] with some routers that reject connections from such devices. Your connection won't successfully activate and disconnect after trying to activate. If you have control over the router's behaviour, you could also turn off the feature causing problem. Otherwise, the solution is to connect with a remote shell using [[FreedomBox/Manual/SecureShell|SSH]] or [[FreedomBox/Manual/Cockpit|Cockpit]], editing a file `/etc/NetworkManager/NetworkManager.conf` and adding the line `wifi.scan-rand-mac-address=no` in the `[device]` section. This turns off the privacy feature. + +Edit a file: +{{{ +$ sudo nano /etc/NetworkManager/NetworkManager.conf +}}} + +Add the following: +{{{ +[device] +wifi.scan-rand-mac-address=no +}}} + +Then reboot the machine. + +==== Adding a new network device ==== + +When a new network device is added, network manager will automatically +configure it. In most cases this will not work to your liking. +Delete the automatic configuration created on the interface and create +a new network connection. Select your newly added network interface +in the add connection page. + + * Then set firewall zone to `internal` and `external` appropriately. + * You can configure the interface to connect to a network or provide + network configuration to whatever machine connects to it. + * Similarly, if it is a Wi-Fi interface, you can configure it to + become a Wi-FI access point or to connect to an existing access + points in the network. + +==== Configuring a mesh network ==== + +!FreedomBox has rudimentary support for participating in BATMAN-Adv based mesh networks. It is possible to either join an existing network in your area or create a new mesh network and share your Internet connection with the rest of the nodes that join the network. Currently, two connections have to be created and activated manually to join or create a mesh network. + +===== Joining a mesh network ===== + +To join an existing mesh network in your area, first consult the organizers and get information about the mesh network. + + 1. Create a new connection, then select the connection type as ''Wi-Fi''. In the following dialog, provide the following values: + ||'''Field Name'''||'''Example Value'''||'''Explanation'''|| + || ''Connection Name'' || Mesh Join - BATMAN || The name must end with 'BATMAN' (uppercase) || + || ''Physical Interface'' || wlan0 || The Wi-Fi device you wish to use for joining the mesh network || + || ''Firewall Zone'' || External || Since you don't wish that participants in mesh network to use internal services of !FreedomBox || + || ''SSID'' || ch1.freifunk.net || As provided to you by the operators of the mesh network. You should see this as a network in ''Nearby Wi-Fi Networks'' || + || ''Mode'' || Ad-hoc || Because this is a peer-to-peer network || + || ''Frequency Band'' || 2.4Ghz || As provided to you by the operators of the mesh network || + || ''Channel'' || 1 || As provided to you by the operators of the mesh network || + || ''BSSID'' || 12:CA:FF:EE:BA:BE || As provided to you by the operators of the mesh network || + || ''Authentication'' || Open || Leave this as open, unless you know your mesh network needs it be otherwise || + || ''Passphrase'' || || Leave empty unless you know your mesh network requires one || + || ''IPv4 Addressing Method'' || Disabled || We don't want to request IP configuration information yet || + + Save the connection. Join the mesh network by activating this newly created connection. + + 1. Create a second new connection, then select the connection type as ''Generic''. In the following dialog, provide this following values: + ||'''Field Name'''||'''Example Value'''||'''Explanation'''|| + || ''Connection Name'' || Mesh Connect || Any name to identify this connection || + || ''Physical Interface'' || bat0 || This interface will only show up after you successfully activate the connection in first step || + || ''Firewall Zone'' || External || Since you don't wish that participants in mesh network to use internal services of !FreedomBox || + || ''IPv4 Addressing Method'' || Auto || Mesh networks usually have a DHCP server somewhere that provide your machine with IP configuration. If not, consult the operator and configure IP address setting accordingly with ''Manual'' method || + + Save the connection. Configure your machine for participation in the network by activating this connection. Currently, this connection has to be manually activated every time you need to join the network. In future, !FreedomBox will do this automatically. + + You will now be able reach other nodes in the network. You will also be able to connect to the Internet via the mesh network if there is an Internet connection point somewhere in mesh as setup by the operators. + +===== Creating a mesh network ===== + +To create your own mesh network and share your Internet connection with the rest of the nodes in the network: + + 1. Follow the instructions as provided above in step 1 of ''Joining a mesh network'' but choose and fix upon your own valid values for ''SSID'' (a name for you mesh network), ''Frequency Band'' (usually 2.4Ghz), ''Channel'' (1 to 11 in 2.4Ghz band) and ''BSSID'' (a hex value like 12:CA:DE:AD:BE:EF). Create this connection and activate it. + 2. Follow the instructions as provided above in step 2 of ''Joining a mesh network'' but select ''IPv4 Addressing Method'' as ''Shared''. This will provide automatic IP configuration to other nodes in the network as well as share the Internet connection on your machine (achieved using a second Wi-Fi interface, using Ethernet, etc.) with other nodes in the mesh network. + +Spread the word about your mesh network to your neighbors and let them know the parameters you have provided when creating the network. When other nodes connect to this mesh network, they have to follow steps in ''Joining a mesh network'' but use the values for ''SSID'', ''Frequency Band'' and ''Channel'' that you have chosen when you created the mesh network. + +=== Advanced Network Operations === + +Cockpit provides many advanced networking features over those offered by !FreedomBox. Both !FreedomBox and Cockpit operate over Network Manager and are hence compatible with each other. Some of the functions provided by Cockpit include: + + * Set the maximum transmission unit (MTU) for a network connection + * Change the hardware address (MAC address) of a network interface + * Add more DNS servers and configure routing of a network connection + * Creating bonded devices for highly available network interfaces + * Creating bridge devices to join network interfaces for aggregating separate networks + * Manage VLAN for creating virtual partitions in the physical network + +{{attachment:networks-cockpit.png}} + +=== Manual Network Operation === + +!FreedomBox automatically configures networks by default and provides +a simplified interface to customize the configuration to specific +needs. In most cases, manual operation is not necessary. The +following steps describe how to manually operate network configuration +in the event that a user finds !FreedomBox interface to insufficient +for task at hand or to diagnose a problem that !FreedomBox does not +identify. + +On the command line interface: + +For text based user interface for configuring network connections: + +{{{ +nmtui +}}} + +To see the list of available network devices: + +{{{ +nmcli device +}}} + +To see the list of configured connections: + +{{{ +nmcli connection +}}} + +To see the current status of a connection: + +{{{ +nmcli connection show '' +}}} + +To see the current firewall zone assigned to a network interface: + +{{{ +nmcli connection show '' | grep zone +}}} + +or + +{{{ +firewall-cmd --zone=internal --list-all +firewall-cmd --zone=external --list-all +}}} + +To create a new network connection: + +{{{ +nmcli con add con-name "" ifname "" type ethernet +nmcli con modify "" connection.autoconnect TRUE +nmcli con modify "" connection.zone internal +}}} + +To change the firewall zone for a connection: + +{{{ +nmcli con modify "" connection.zone "" +}}} + +For more information on how to use `nmcli` command, see its man page. +Also for a full list of configuration settings and type of connections +accepted by Network Manager see: + +https://developer.gnome.org/NetworkManager/stable/ref-settings.html + +To see the current status of the firewall and manually operate it, see +the [[FreedomBox/Manual/Firewall|Firewall]] section. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Networks.raw.xml b/doc/manual/en/Networks.raw.xml deleted file mode 100644 index cd95d7bda..000000000 --- a/doc/manual/en/Networks.raw.xml +++ /dev/null @@ -1,5 +0,0 @@ -
FreedomBox/Manual/Networks122020-05-24 01:48:46SunilMohanAdapaAdd advanced network operations section referring to Cockpit112020-05-23 20:43:32JamesValleroyadd TableOfContents102020-04-12 16:05:59JamesValleroyadd links back to top level pages92019-06-21 17:52:50SunilMohanAdapaAdd information about Wi-Fi routers causing problem with privacy feature82017-03-31 20:04:48DrahtseilScreenshot Network Single72017-03-02 16:26:27AaronFerrucciCorrected a few typos62016-09-02 05:31:28SunilMohanAdapaAdd information about configuring BATMAN-Adv Mesh network52016-03-06 20:43:34PhilippeBaretText correction42015-09-13 15:04:43SunilMohanAdapaDemote headings one level for inclusion into manual32015-09-12 11:23:58SunilMohanAdapaUpdate link to renamed Firewall page22015-09-12 10:04:19SunilMohanAdapaAdd information about Internet connection sharing12015-09-12 09:24:59SunilMohanAdapaNew page for FreedomBox manual on networking
NetworksThis section describes how networking is setup by default in FreedomBox and how you can customize it. See also the Firewall section for more information on how firewall works.
Default setupIn a fresh image of FreedomBox, network is not configured at all. When the image is written to an SD card and the device boots, configuration is done. During first boot, FreedomBox setup package detects the networks interfaces and tries to automatically configure them so that FreedomBox is available for further configuration via the web interface from another machine without the need to connect a monitor. Automatic configuration also tries to make FreedomBox useful, out of the box, for the most important scenarios FreedomBox is used for. There are two scenarios it handles: when is a single ethernet interface and when there are multiple ethernet interfaces.
Single ethernet interfaceWhen there is only single ethernet interface available on the hardware device, there is not much scope for it to play the role of a router. In this case, the device is assumed to be just another machine in the network. Accordingly, the only available interface is configured to be an internal interface in automatic configuration mode. This means that it connects to the Internet using the configuration provided by a router in the network and also makes all (internal and external) of its services available to all the clients on this network. network_single.png
Multiple ethernet interfaceWhen there are multiple ethernet interfaces available on the hardware device, the device can act as a router. The interfaces are then configured to perform this function. The first network interface is configured to be an WAN or external interface in automatic configuration mode. This means that it connects to the Internet using network configuration provided by the Internet Service Provider (ISP). Only services that are meant to be provided across the entire Internet (external services) will be exposed on this interface. You must plug your Internet connection into the port of this ethernet interface. If you wish to continue to have your existing router manage the Internet connection for you, then plug a connection from your router to the port on this interface. The remaining network interfaces are configured for the clients of a router. They are configured as LAN or internal interfaces in shared configuration mode. This means that all the services (both external and internal) services are provided to who ever connects on this interface. Further, the shared mode means that clients will be able to receive details of automatic network connection on this interface. Specifically, DHCP configuration and DNS servers are provided on this interface. The Internet connection available to the device using the first network interface will be shared with clients using this interface. This all means that you can connect your computers to this network interface and they will get automatically configured and will be able to access the Internet via the FreedomBox. Currently, it is not very clear which interface will be come the WAN interface (and the remaining being LAN interfaces) although the assignment process is deterministic. So, it take a bit of trail and error to figure out which one is which. In future, for each device, this will be well documented.
Wi-Fi configurationAll Wi-Fi interfaces are configured to be LAN or internal interfaces in shared configuration mode. They are also configured to become Wi-Fi access points with following details. Name of the access point will be FreedomBox plus the name of the interface (to handle the case where there are multiple of them). Password for connecting to the interface will be freedombox123.
Internet Connection SharingAlthough the primary duty of FreedomBox is to provide decentralized services, it can also act like a home router. Hence, in most cases, FreedomBox connects to the Internet and provides other machines in the network the ability to use that Internet connection. FreedomBox can do this in two ways: using a shared mode connection or using an internal connection. When an interface is set in shared mode, you may connect your machine directly to it. This is either by plugging in an ethernet cable from this interface to your machine or by connecting to a Wi-Fi access point. This case is the simplest to use, as FreedomBox automatically provides your machine with the necessary network configuration. Your machine will automatically connect to FreedomBox provided network and will be able to connect to the Internet given that FreedomBox can itself connect to the Internet. Sometimes the above setup may not be possible because the hardware device may have only one network interface or for other reasons. Even in this case, your machine can still connect to the Internet via FreedomBox. For this to work, make sure that the network interface that your machine is connecting to is in internal mode. Then, connect your machine to network in which FreedomBox is present. After this, in your machine's network configuration, set FreedomBox's IP address as the gateway. FreedomBox will then accept your network traffic from your machine and send it over to the Internet. This works because network interfaces in internal mode are configured to masquerade packets from local machines to the Internet and receive packets from Internet and forward them back to local machines.
CustomizationThe above default configuration may not be fit for your setup. You can customize the configuration to suit your needs from the Networks area in the 'setup' section of the FreedomBox web interface.
PPPoE connectionsIf your ISP does not provide automatic network configuration via DHCP and requires you to connection via PPPoE. To configure PPPoE, remove any network connection existing on an interface and add a PPPoE connection. Here, optionally, provide the account username and password given by your ISP and activate the connection.
Connect to Internet via Wi-FiBy default Wi-Fi devices attached during first boot will be configured as access points. They can be configured as regular Wi-Fi devices instead to connection to a local network or an existing Wi-Fi router. To do this, click on the Wi-Fi connection to edit it. Change the mode to Infrastructure instead of Access Point mode and IPv4 Addressing Method to Automatic (DHCP) instead of Shared mode. Then the SSID provided will mean the Wi-Fi network name you wish to connect to and passphrase will be the used to while making the connection.
Problems with Privacy FeatureNetworkManager used by FreedomBox to connect to the Wi-Fi networks has a privacy feature that uses a different identity when scanning for networks and when actually connecting to the Wi-Fi access point. Unfortunately, this causes problems with some routers that reject connections from such devices. Your connection won't successfully activate and disconnect after trying to activate. If you have control over the router's behaviour, you could also turn off the feature causing problem. Otherwise, the solution is to connect with a remote shell using SSH or Cockpit, editing a file /etc/NetworkManager/NetworkManager.conf and adding the line wifi.scan-rand-mac-address=no in the [device] section. This turns off the privacy feature. Edit a file: Add the following: Then reboot the machine.
Adding a new network deviceWhen a new network device is added, network manager will automatically configure it. In most cases this will not work to your liking. Delete the automatic configuration created on the interface and create a new network connection. Select your newly added network interface in the add connection page. Then set firewall zone to internal and external appropriately. You can configure the interface to connect to a network or provide network configuration to whatever machine connects to it. Similarly, if it is a Wi-Fi interface, you can configure it to become a Wi-FI access point or to connect to an existing access points in the network.
Configuring a mesh networkFreedomBox has rudimentary support for participating in BATMAN-Adv based mesh networks. It is possible to either join an existing network in your area or create a new mesh network and share your Internet connection with the rest of the nodes that join the network. Currently, two connections have to be created and activated manually to join or create a mesh network.
Joining a mesh networkTo join an existing mesh network in your area, first consult the organizers and get information about the mesh network. Create a new connection, then select the connection type as Wi-Fi. In the following dialog, provide the following values: Field NameExample ValueExplanation Connection Name Mesh Join - BATMAN The name must end with 'BATMAN' (uppercase) Physical Interface wlan0 The Wi-Fi device you wish to use for joining the mesh network Firewall Zone External Since you don't wish that participants in mesh network to use internal services of FreedomBox SSID ch1.freifunk.net As provided to you by the operators of the mesh network. You should see this as a network in Nearby Wi-Fi Networks Mode Ad-hoc Because this is a peer-to-peer network Frequency Band 2.4Ghz As provided to you by the operators of the mesh network Channel 1 As provided to you by the operators of the mesh network BSSID 12:CA:FF:EE:BA:BE As provided to you by the operators of the mesh network Authentication Open Leave this as open, unless you know your mesh network needs it be otherwise Passphrase Leave empty unless you know your mesh network requires one IPv4 Addressing Method Disabled We don't want to request IP configuration information yet Save the connection. Join the mesh network by activating this newly created connection. Create a second new connection, then select the connection type as Generic. In the following dialog, provide this following values: Field NameExample ValueExplanation Connection Name Mesh Connect Any name to identify this connection Physical Interface bat0 This interface will only show up after you successfully activate the connection in first step Firewall Zone External Since you don't wish that participants in mesh network to use internal services of FreedomBox IPv4 Addressing Method Auto Mesh networks usually have a DHCP server somewhere that provide your machine with IP configuration. If not, consult the operator and configure IP address setting accordingly with Manual method Save the connection. Configure your machine for participation in the network by activating this connection. Currently, this connection has to be manually activated every time you need to join the network. In future, FreedomBox will do this automatically. You will now be able reach other nodes in the network. You will also be able to connect to the Internet via the mesh network if there is an Internet connection point somewhere in mesh as setup by the operators.
Creating a mesh networkTo create your own mesh network and share your Internet connection with the rest of the nodes in the network: Follow the instructions as provided above in step 1 of Joining a mesh network but choose and fix upon your own valid values for SSID (a name for you mesh network), Frequency Band (usually 2.4Ghz), Channel (1 to 11 in 2.4Ghz band) and BSSID (a hex value like 12:CA:DE:AD:BE:EF). Create this connection and activate it. Follow the instructions as provided above in step 2 of Joining a mesh network but select IPv4 Addressing Method as Shared. This will provide automatic IP configuration to other nodes in the network as well as share the Internet connection on your machine (achieved using a second Wi-Fi interface, using Ethernet, etc.) with other nodes in the mesh network. Spread the word about your mesh network to your neighbors and let them know the parameters you have provided when creating the network. When other nodes connect to this mesh network, they have to follow steps in Joining a mesh network but use the values for SSID, Frequency Band and Channel that you have chosen when you created the mesh network.
Advanced Network OperationsCockpit provides many advanced networking features over those offered by FreedomBox. Both FreedomBox and Cockpit operate over Network Manager and are hence compatible with each other. Some of the functions provided by Cockpit include: Set the maximum transmission unit (MTU) for a network connection Change the hardware address (MAC address) of a network interface Add more DNS servers and configure routing of a network connection Creating bonded devices for highly available network interfaces Creating bridge devices to join network interfaces for aggregating separate networks Manage VLAN for creating virtual partitions in the physical network networks-cockpit.png
Manual Network OperationFreedomBox automatically configures networks by default and provides a simplified interface to customize the configuration to specific needs. In most cases, manual operation is not necessary. The following steps describe how to manually operate network configuration in the event that a user finds FreedomBox interface to insufficient for task at hand or to diagnose a problem that FreedomBox does not identify. On the command line interface: For text based user interface for configuring network connections: To see the list of available network devices: To see the list of configured connections: To see the current status of a connection: ']]>To see the current firewall zone assigned to a network interface: ' | grep zone]]>or To create a new network connection: " ifname "" type ethernet -nmcli con modify "" connection.autoconnect TRUE -nmcli con modify "" connection.zone internal]]>To change the firewall zone for a connection: " connection.zone ""]]>For more information on how to use nmcli command, see its man page. Also for a full list of configuration settings and type of connections accepted by Network Manager see: To see the current status of the firewall and manually operate it, see the Firewall section. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/OpenVPN.raw.wiki b/doc/manual/en/OpenVPN.raw.wiki new file mode 100644 index 000000000..ea81628fd --- /dev/null +++ b/doc/manual/en/OpenVPN.raw.wiki @@ -0,0 +1,133 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/OpenVPN|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== OpenVPN (Virtual Private Network) == +|| {{attachment:OpenVPN-icon_en_V01.png|OpenVPN icon}} || + +'''Available since''': version 0.7 + +=== What is OpenVPN? === + +OpenVPN provides to your !FreedomBox a virtual private network service. You can use this software for remote access, site-to-site VPNs and Wi-Fi security. OpenVPN includes support for dynamic IP addresses and NAT. + +=== Port Forwarding === + +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 OpenVPN: + * UDP 1194 + +=== Setting up === + + 1. In !FreedomBox apps menu, select ''Virtual Private Network (OpenVPN)'' and click Install. + + 1. After the module is installed, there is an additional setup step that may take a long time to complete. Click "Start setup" to begin. + + {{attachment:plinth_openvpn.png|OpenVPN service page|width=800}} + + 1. Wait for the setup to finish. This could take a while. + + 1. Once the setup of the OpenVPN server is complete, you can download your profile. This will download a file called .ovpn, where is the name of a !FreedomBox user. Each !FreedomBox user will be able to download a different profile. Users who are not administrators can download the profile from home page after login. + + 1. The ovpn file contains all the information a vpn client needs to connect to the server. + + 1. The downloaded profile contains the domain name of the !FreedomBox that the client should connect to. This is picked up from the domain configured in 'Config' section of 'System' page. In case your domain is not configured properly, you may need to change this value after downloading the profile. If your OpenVPN client allows it, you can do this after importing the OpenVPN profile. Otherwise, you can edit the .ovpn profile file in a text editor and change the 'remote' line to contain the WAN IP address or hostname of your !FreedomBox as follows. + + {{{ +client +remote mybox.sds-ip.de 1194 +proto udp +}}} + +=== Browsing Internet after connecting to VPN === + +After connecting to the VPN, the client device will be able to browse the Internet without any further configuration. However, a pre-condition for this to work is that you need to have at least one Internet connected network interface which is part of the 'External' firewall zone. Use the networks configuration page to edit the firewall zone for the device's network interfaces. + +=== Usage === + +==== On Android/LineageOS ==== + + 1. Visit !FreedomBox home page. Login with your user account. From home page, download the OpenVPN profile. The file will be named ''username''.ovpn. + + {{attachment:openvpn_download_profile.png|OpenVPN Download Profile|width=324}} + + 1. Download an OpenVPN client such as ''OpenVPN for Android''. F-Droid repository is recommended. In the app, select import profile. + + {{attachment:openvpn_install_app.png|OpenVPN App|width=324}} + + 1. In the select profile dialog, choose the ''username''.opvn file you have just downloaded. Provide a name for the connection and save the profile. + + {{attachment:openvpn_import_profile.png|OpenVPN import profile|width=324}} + + 1. Newly created profile will show up. If necessary, edit the profile and set the domain name of your !FreedomBox as the server address. + + {{attachment:openvpn_profile_created.png|OpenVPN profile created|width=324}} + + {{attachment:openvpn_edit_domain_name.png|OpenVPN edit domain name|width=324}} + + 1. Connect by tapping on the profile. + + {{attachment:openvpn_connect.png|OpenVPN connect|width=324}} + + {{attachment:openvpn_connected.png|OpenVPN connected|width=324}} + + 1. When done, disconnect by tapping on the profile. + + {{attachment:openvpn_disconnect.png|OpenVPN disconnect|width=324}} + +==== On Debian ==== + +Install an OpenVPN client for your system +{{{ +$ sudo apt install openvpn +}}} +Open the ovpn file with the OpenVPN client. +{{{ +$ sudo openvpn --config /path/to/.ovpn +}}} +If you use Network Manager, you can create a new connection by importing the file: +{{{ +$ sudo apt install network-manager-openvpn-gnome +$ sudo nmcli connection import type openvpn file /path/to/.ovpn +}}} +If you get an error such as `configuration error: invalid 1th argument to “proto” (line 5)` then edit the .ovpn file and remove the line `proto udp6`. + +=== Checking if you are connected === + +==== On Debian ==== + + 1. Try to ping the !FreedomBox or other devices on the local network. + 1. Running the command `ip addr` should show a `tun0` connection. + 1. The command `traceroute freedombox.org` should show you the ip address of the VPN server as the first hop. + +=== Accessing internal services === + +After connecting to OpenVPN, you will be able to access !FreedomBox services that are only meant to be accessed on internal networks. This is in addition to being able to access external services. This can be done by using the IP address 10.91.0.1 as the host name for these services. + +The following services are known to '''work''': + * [[FreedomBox/Manual/Privoxy|Privoxy]], + * [[FreedomBox/Manual/Tor|Tor Socks]], + * [[FreedomBox/Manual/Shadowsocks|Shadowsocks]], + * [[FreedomBox/Manual/I2P|I2P Proxy]] and + * [[FreedomBox/Manual/Samba|Samba]]. + +Some services are known '''not''' to work at this time: + * Avahi, + * [[FreedomBox/Manual/Bind|bind]] and + * [[FreedomBox/Manual/MiniDLNA|MiniDLNA]]. + +=== External Links === + +https://community.openvpn.net/openvpn + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/OpenVPN.raw.xml b/doc/manual/en/OpenVPN.raw.xml deleted file mode 100644 index 89174c60a..000000000 --- a/doc/manual/en/OpenVPN.raw.xml +++ /dev/null @@ -1,4 +0,0 @@ -
FreedomBox/Manual/OpenVPN212020-06-23 05:01:36SunilMohanAdapaAdd note about proto udp6 not supported during network-manager import202020-05-30 18:09:40SunilMohanAdapaUpdate the title to emphasize app name over its generic name192020-05-26 05:08:38SunilMohanAdapaAdd note about internal services that work and don't work182020-05-23 19:57:01JamesValleroyadd TableOfContents172020-05-23 17:05:41JamesValleroyrename plinth -> freedombox162019-11-18 22:55:39JamesValleroyadd instructions for Network Manager152019-09-16 09:38:50fioddorMinor layout correction142019-05-10 23:08:07JamesValleroyuse standard text for port forwarding132019-03-01 01:28:15SunilMohanAdapaAdd instructions for connecting using mobile client122019-03-01 00:48:12SunilMohanAdapaAdd information about browsing Internet112019-03-01 00:37:30SunilMohanAdapaUpdate information about dealing with profile files102019-02-28 09:38:45JosephNuthalapatiUpdate image and set width92018-11-15 11:47:34JosephNuthalapatiAdd documentation on how to connect to VPN from Debian and check the connection. Update external link82016-12-31 04:01:13JamesValleroyclarify install vs setup72016-09-09 15:37:55SunilMohanAdapaMinor indentation fix with screenshot62016-09-01 19:14:03Drahtseiladapted title to Plinth wording52016-08-14 19:39:09JanCostermansadded screenshot and setting up sections42016-04-10 07:16:50PhilippeBaretAdded bottom navigation link32015-12-16 00:32:58PhilippeBaretText finishing22015-12-16 00:28:34PhilippeBaretAdded definition for OpenVPN12015-12-15 23:58:42PhilippeBaretAdded first content [OpenVPN page to Apps manual]
OpenVPN (Virtual Private Network)
What is OpenVPN?OpenVPN provides to your FreedomBox a virtual private network service. You can use this software for remote access, site-to-site VPNs and Wi-Fi security. OpenVPN includes support for dynamic IP addresses and NAT.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for OpenVPN: UDP 1194
Setting upIn FreedomBox apps menu, select Virtual Private Network (OpenVPN) and click Install. After the module is installed, there is an additional setup step that may take a long time to complete. Click "Start setup" to begin. OpenVPN service page Wait for the setup to finish. This could take a while. Once the setup of the OpenVPN server is complete, you can download your profile. This will download a file called <USER>.ovpn, where <USER> is the name of a FreedomBox user. Each FreedomBox user will be able to download a different profile. Users who are not administrators can download the profile from home page after login. The ovpn file contains all the information a vpn client needs to connect to the server. The downloaded profile contains the domain name of the FreedomBox that the client should connect to. This is picked up from the domain configured in 'Config' section of 'System' page. In case your domain is not configured properly, you may need to change this value after downloading the profile. If your OpenVPN client allows it, you can do this after importing the OpenVPN profile. Otherwise, you can edit the .ovpn profile file in a text editor and change the 'remote' line to contain the WAN IP address or hostname of your FreedomBox as follows.
Browsing Internet after connecting to VPNAfter connecting to the VPN, the client device will be able to browse the Internet without any further configuration. However, a pre-condition for this to work is that you need to have at least one Internet connected network interface which is part of the 'External' firewall zone. Use the networks configuration page to edit the firewall zone for the device's network interfaces.
Usage
On Android/LineageOSVisit FreedomBox home page. Login with your user account. From home page, download the OpenVPN profile. The file will be named username.ovpn. OpenVPN Download Profile Download an OpenVPN client such as OpenVPN for Android. F-Droid repository is recommended. In the app, select import profile. OpenVPN App In the select profile dialog, choose the username.opvn file you have just downloaded. Provide a name for the connection and save the profile. OpenVPN import profile Newly created profile will show up. If necessary, edit the profile and set the domain name of your FreedomBox as the server address. OpenVPN profile created OpenVPN edit domain name Connect by tapping on the profile. OpenVPN connect OpenVPN connected When done, disconnect by tapping on the profile. OpenVPN disconnect
On DebianInstall an OpenVPN client for your system Open the ovpn file with the OpenVPN client. .ovpn]]>If you use Network Manager, you can create a new connection by importing the file: .ovpn]]>If you get an error such as configuration error: invalid 1th argument to “proto” (line 5) then edit the .ovpn file and remove the line proto udp6.
Checking if you are connected
On DebianTry to ping the FreedomBox or other devices on the local network. Running the command ip addr should show a tun0 connection. The command traceroute freedombox.org should show you the ip address of the VPN server as the first hop.
Accessing internal servicesAfter connecting to OpenVPN, you will be able to access FreedomBox services that are only meant to be accessed on internal networks. This is in addition to being able to access external services. This can be done by using the IP address 10.91.0.1 as the host name for these services. The following services are known to work: Privoxy, Tor Socks, Shadowsocks, I2P Proxy and Samba. Some services are known not to work at this time: Avahi, Bind and MiniDLNA.
External Links Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/OrangePiZero.raw.wiki b/doc/manual/en/OrangePiZero.raw.wiki new file mode 100644 index 000000000..d70e8462d --- /dev/null +++ b/doc/manual/en/OrangePiZero.raw.wiki @@ -0,0 +1,39 @@ +== Orange Pi Zero == + +{{attachment:orange-pi-zero.jpg|Orange Pi Zero|width=649,height=537}} + +[[http://www.orangepi.org/orangepizero/|Orange Pi Zero]] is a single board computer available at very low price. It uses the Allwinner H2 SoC, and has 256MB/512MB DDR3 SDRAM. It doesn't require any non-free firmware to run !FreedomBox. However, the onboard Wi-Fi module needs proprietary firmware to work. The board is available in two versions: with 256MB RAM and 512MB RAM. The version with 512 MB RAM is recommended for !FreedomBox. Even then, !FreedomBox is expected to gracefully run only a small number of services. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] are available for this device. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. + +=== Availability === + + * [[https://www.aliexpress.com/store/group/H2/1553371_511831299.html|AliExpress]] + +=== Hardware === + + * CPU: ARM Cortex-A7 Quad-Core (Allwinner H2) + * RAM: 256MB/512MB DDR3 SDRAM + * Storage: Up to 32GB on uSD slot, 2MB SPI Flash + * Architecture: armhf + * Ethernet: 10/100, RJ45 + * !WiFi: Onboard 802.11 b/g/n, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + +=== Non-Free Status === + + * Non-free blobs required: No (without Wi-Fi) + * Wi-Fi: no free Wi-Fi drivers + firmware available + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + + +Orange Pi Zero image is licensed under a Creative Commons Attribution 3.0 Unported License by [[https://linux-sunxi.org/File:OPi_Zero_Top.jpg|Linux Sunxi]]. diff --git a/doc/manual/en/PageKite.raw.wiki b/doc/manual/en/PageKite.raw.wiki new file mode 100644 index 000000000..3d0f89e7f --- /dev/null +++ b/doc/manual/en/PageKite.raw.wiki @@ -0,0 +1,34 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/PageKite|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== PageKite (Public Visibility) == + +=== What is PageKite? === + +!PageKite makes local websites and services publicly accessible immediately without creating yourself a public IP address. It does this by tunneling protocols such as HTTPS or SSH through firewalls and NAT. Using !PageKite requires an account on a !PageKite relay service. One such service is https://pagekite.net. + +A !PageKite relay service will allow you to create kites. Kites are similar to domain names, but with different advantages and drawbacks. A kite can have a number of configured services. !PageKite is known to work with HTTP, HTTPS, and SSH, and may work with some other services, but not all. + +=== Using PageKite === + + 1. Create an account on a !PageKite relay service. + 1. Add a kite to your account. Note your kite name and kite secret. + 1. In !FreedomBox, go to the "Configure !PageKite" tab on the Public Visibility (!PageKite) page. + 1. Check the "Enable !PageKite" box, then enter your kite name and kite secret. Click "Save settings". + 1. On the "Standard Services" tab, you can enable HTTP and HTTPS (recommended) and SSH (optional). + * HTTP is needed to obtain the Let's Encrypt certificate. You can disable it later. + 1. On the [[FreedomBox/Manual/LetsEncrypt|Certificates (Let's Encrypt)]] page, you can obtain a Let's Encrypt certificate for your kite name. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/PageKite.raw.xml b/doc/manual/en/PageKite.raw.xml deleted file mode 100644 index 5cc88c77f..000000000 --- a/doc/manual/en/PageKite.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/PageKite152020-05-30 18:21:26SunilMohanAdapaUpdate the title to emphasize app name over its generic name142020-05-23 20:44:53JamesValleroyadd TableOfContents132020-05-23 17:09:08JamesValleroyrename plinth -> freedombox122017-01-07 20:37:22JamesValleroyadd info on getting certificate112017-01-07 20:21:47JamesValleroyadd instructions102017-01-07 20:14:44JamesValleroyclarify how pagekite works92016-09-01 19:19:45Drahtseiladapted title to Plinth wording82016-04-10 07:13:20PhilippeBaretAdded navigation link72015-12-15 20:50:09PhilippeBaretCorrection62015-12-15 19:28:57PhilippeBaretAdded more definition52015-12-15 19:19:27PhilippeBaretAdded pagekite extended definition42015-09-13 14:58:24SunilMohanAdapaAdd headings for inclusion into manual32015-09-13 13:18:15SunilMohanAdapaMove PageKite page to manual22015-02-13 05:01:10SunilMohanAdapaInclude FreedomBox portal in footer12012-09-14 07:37:02planetlarg
PageKite (Public Visibility)
What is PageKite?PageKite makes local websites and services publicly accessible immediately without creating yourself a public IP address. It does this by tunneling protocols such as HTTPS or SSH through firewalls and NAT. Using PageKite requires an account on a PageKite relay service. One such service is . A PageKite relay service will allow you to create kites. Kites are similar to domain names, but with different advantages and drawbacks. A kite can have a number of configured services. PageKite is known to work with HTTP, HTTPS, and SSH, and may work with some other services, but not all.
Using PageKiteCreate an account on a PageKite relay service. Add a kite to your account. Note your kite name and kite secret. In FreedomBox, go to the "Configure PageKite" tab on the Public Visibility (PageKite) page. Check the "Enable PageKite" box, then enter your kite name and kite secret. Click "Save settings". On the "Standard Services" tab, you can enable HTTP and HTTPS (recommended) and SSH (optional). HTTP is needed to obtain the Let's Encrypt certificate. You can disable it later. On the Certificates (Let's Encrypt) page, you can obtain a Let's Encrypt certificate for your kite name. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Performance.raw.wiki b/doc/manual/en/Performance.raw.wiki new file mode 100644 index 000000000..609f6e1fa --- /dev/null +++ b/doc/manual/en/Performance.raw.wiki @@ -0,0 +1,25 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Performance|Español]] -~ + +## BEGIN_INCLUDE + +== Performance (System Monitoring) == + +'''Available since''': version 20.9.7 + + +Performance app allows you to collect, store and view information about utilization of the hardware. This can gives you basic insights into usage patterns and whether the hardware is overloaded by users and services. + +Performance metrics are collected by Performance Co-Pilot and can be viewed using the [[FreedomBox/Manual/Cockpit|Cockpit]] app. When this system app is installed and enabled, cockpit's graphs shows the past (up to one year at a time). + +{{attachment:performance-one-week.png}} + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Performance.raw.xml b/doc/manual/en/Performance.raw.xml deleted file mode 100644 index 9ba5e6337..000000000 --- a/doc/manual/en/Performance.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Performance112020-05-30 18:19:38SunilMohanAdapaUpdate the title to emphasize app name over its generic name102020-05-12 04:51:34SunilMohanAdapaCockpit allows viewing upto 1 year at a time92020-05-12 04:40:54SunilMohanAdapaRename the image, minor formatting82020-05-12 04:39:38SunilMohanAdapaAdd the version availability and minor changes72020-05-08 06:41:27FredLeMeurup to 2 weeks62020-05-08 06:32:56FredLeMeurExplain why performance monitoring is needed.52020-05-05 12:39:58FredLeMeurzoom out button42020-05-04 08:31:15FredLeMeurWIP:performance: introduce Performance Co-Pilot (cockpit-pcp) in ‘System’32020-05-04 08:28:10FredLeMeur22020-05-04 08:07:58FredLeMeurwith "END_INCLUDE"12020-05-04 08:01:29FredLeMeurinit page
Performance (System Monitoring)Performance app allows you to collect, store and view information about utilization of the hardware. This can gives you basic insights into usage patterns and whether the hardware is overloaded by users and services. Performance metrics are collected by Performance Co-Pilot and can be viewed using the Cockpit app. Performance app is available in FreedomBox since version 20.9. When this system app is installed and enabled, cockpit's graphs shows the past (up to one year at a time). performance-one-week.png Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/PineA64+.raw.wiki b/doc/manual/en/PineA64+.raw.wiki new file mode 100644 index 000000000..13a0cbe5c --- /dev/null +++ b/doc/manual/en/PineA64+.raw.wiki @@ -0,0 +1,48 @@ +== Pine A64+ == + +{{attachment:pine64-plus.jpg|Pine 64+|width=640,height=579}} + +[[https://www.pine64.org/?page_id=1194|Pine A64+]] is an affordable single board computer with good performance. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Similar Hardware === + + * Both 1GB and 2GB versions of Pine A64+ are supported with the same !FreedomBox image. + * Pine A64-LTS is not supported yet. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] for this hardware are available. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot into !FreedomBox. Pick the image meant for Pine A64+. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: 29 USD (for the 2 GB variant), 21 USD (for the 1 GB variant) + * [[https://www.pine64.org/?product=pine-a64-board-1gb|Pine A64+ with 1 GB RAM at Pine64 Store]] + * [[https://www.pine64.org/?product=pine-a64-board-2gb|Pine A64+ with 2 GB RAM at Pine64 Store]] + +=== Hardware === + + * Open Source Hardware (OSHW): No + * CPU: Allwinner A64, Quad-core ARM Cortex A53 64-bit processor + * RAM: 3 variants - 512 MB (not recommended), 1 GB and 2 GB (recommended) + * Storage: SD card, eMMC (module sold separately but not tested with !FreedomBox) + * Architecture: arm64 + * Ethernet: Gigabit Ethernet port + * Battery: Supports battery backup using a Li-Po battery + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: None + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/PioneerEdition.raw.wiki b/doc/manual/en/PioneerEdition.raw.wiki new file mode 100644 index 000000000..4d61ea14b --- /dev/null +++ b/doc/manual/en/PioneerEdition.raw.wiki @@ -0,0 +1,176 @@ +<> + +## BEGIN_INCLUDE + +== Pioneer Edition FreedomBox == + +Pioneer !FreedomBox Home Servers are produced and sold by Olimex, a company which specializes in Open Source Hardware (OSHW). The kit includes pocket-sized server hardware, an SD card with the operating system pre-installed, and a backup battery which can power the hardware for 4-5 hours in case of outages. It sells for 69 euro. An optional storage add-on for high capacity hard disk (HDD) or solid-state drive (SSD) is also available from Olimex. By purchasing this product, you also support the !FreedomBox Foundation's efforts to create and promote its free and open source server software. + + +{{attachment:pioneer-edition.jpg|Pioneer Edition FreedomBox Home Server Kit|width=320,height=257}} + +=== Product Features === + +The [[https://www.olimex.com/Products/OLinuXino/Home-Server/Pioneer-FreedomBox-HSK/|Pioneer Edition FreedomBox Home Server Kit]] includes all the hardware needed for launching a !FreedomBox home server on an Olimex [[FreedomBox/Hardware/A20-OLinuXino-Lime2|A20-OLinuXino-LIME2]] board: + * the A20-!OlinuXino-LIME2, + * a custom metal case with a laser-engraved !FreedomBox logo, + * a high-speed 32GB micro SD card with the !FreedomBox software pre-installed, + * a backup battery, + * a power adapter, and + * an Ethernet cable. + * an optional storage add-on for hard disk (HDD) or solid-state drive (SSD) + +=== Recommended Hardware === +This is the hardware recommended for all users who just want a turn-key !FreedomBox, and '''don't''' want to '''build''' their own one. + +(Building your own !FreedomBox means some technical stuff like choosing and buying the right components, downloading the image and preparing the SD card). + +=== Availability === + +The Pioneer Edition !FreedomBox Home Server is the first commercially available version of !FreedomBox. + + * Price: 69 EUR + * [[https://www.olimex.com/Products/OLinuXino/Home-Server/Pioneer-FreedomBox-HSK/|Olimex Store]] + * The US version is also available through [[https://www.mouser.com/ProductDetail/Olimex-Ltd/Pioneer-FreedomBox-HSK-US?qs=TiOZkKH1s2S0e0CDanQrkw%3D%3D|Mouser Electronics]]. + +=== Hardware Specifications === + +Pioneer Edition !FreedomBox Home Server is based on A20-OLinuXino-LIME2 Rev.G. + + * Open Source Hardware (OSHW): [[https://github.com/OLIMEX/OLINUXINO/tree/master/HARDWARE|Yes]] + * CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core + * RAM: 1 GiB DDR3 + * Storage: 32GB class 10+ microSD card pre-loaded with !FreedomBox + * SATA: 1 SATA port 2.6 compliant 3Gb/s + * USB: 2 USB 2.0 Hi-Speed host ports + * Battery: 3.3V Li-Po, 1400mAh (4-5 hours of backup without additional devices connected via USB) + * Ethernet: 10/100/1000, RJ45 (1 meter cable included) + * Power adapter: 110-220 V input, 5V output, EU style (with optional UK or US sockets) + * Power consumption: 1.5W and 5W depending on load (0.3A to 1A current) + * Box: Custom metallic box with !FreedomBox decal + +Further information: + * [[https://www.olimex.com/Products/OLinuXino/Home-Server/Pioneer-FreedomBox-HSK/open-source-hardware|Quick start leaflet]] + * [[https://www.olimex.com/Products/OLinuXino/Home-Server/Pioneer-FreedomBox-HSK/open-source-hardware|Hardware source files]] + * [[https://www.olimex.com/Products/OLinuXino/Home-Server/Pioneer-FreedomBox-HSK/open-source-hardware|A20-OLinuXino-LIME2 rev.G schematic]] + * [[http://dl.linux-sunxi.org/A20/A20%20Brief%202013-02-27.pdf|A20 SOC datasheet]] + +The kits run entirely on Free Software. They work with Kernel and u-boot from Debian repositories. Even the boot firmware in ROM called [[https://linux-sunxi.org/BROM|BROM]] is free software (GPLV2+). + +=== Storage Add-on === + +You can order a storage add-on along with the Pioneer Edition !FreedomBox Home Server. The storage add-on is a SATA disk drive enclosure case optionally with a hard disk or solid-state drive of size 128GB to 2000GB. If you have already purchased the Home Server without the add-on, you can order the add-on separately. + + * [[https://www.olimex.com/Products/OLinuXino/Home-Server/BAY-HDD-1000GB/|Olimex Store]] + * Price: 9 EUR (without the hard disk, only for the case, you need to add your own HDD/SSD to it) + * Price: 42 EUR (with 128GB Solid-State Drive) + * Price: 69 EUR (with 512GB Solid-State Drive) + * Price: 42 EUR (with 320GB Hard Disk) + * Price: 53 EUR (with 500GB Hard Disk) + * Price: 64 EUR (with 1000GB Hard Disk) + * Price: 86 EUR (with 2000GB Hard Disk) + +=== Download === + +The kits come with an SD card pre-loaded with !FreedomBox. There's '''NO need to download images'''. + +However, if you wish to reset your devices to a pristine state, then you can do so with the image provided. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. Make sure to download the [[https://ftp.freedombox.org/pub/freedombox/pioneer/|Pioneer Edition]] images. These SD card images are meant for use with the on-board SD card slot and won't work when used with a separate SD card reader connected via USB. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Build Image === + +!FreedomBox images for this hardware can be built using [[FreedomBox/Maker|Freedom Maker]]. + +=== Known Issues === + + * The image that shipped with the kits uses a [[https://salsa.debian.org/freedombox-team/u-boot|slightly modified u-boot]] from Debian and not stock Debian like the rest of !FreedomBox. So, if you wish to get the source code, please use the !FreedomBox team's [[https://salsa.debian.org/freedombox-team/u-boot|u-boot repository]]. + +=== Obtaining Source Code === + +After you purchase and receive your Pioneer Edition FreedomBox, you may want to obtain the source code of the software running in it. Continue reading this section for instructions. + +!FreedomBox is fully [[https://www.gnu.org/philosophy/free-sw.html|free software]] and you can obtain the source code to study, modify and distribute improvements. + +==== From within FreedomBox ==== + +!FreedomBox is made up of several software programs and you can obtain the source code to any of them. These instructions are similar to obtaining and [[https://www.debian.org/doc/manuals/maint-guide/build.en.html|building]] [[https://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.en.html|source code]] [[https://wiki.debian.org/BuildingTutorial|for Debian]] since !FreedomBox is a pure blend of Debian. Using this process you can obtain the source code to the exact version of the package you are currently using in !FreedomBox. + + 1. To see the list of software packages installed on your !FreedomBox, run the following in a terminal: + {{{ +dpkg -l +}}} + 1. To obtain the source code for any of those programs, then run: + {{{ +apt source +}}} + This requires that the file [[https://www.debian.org/doc/manuals/apt-howto/ch-basico.en.html|/etc/apt/sources.list]] file contains the information about the source code repositories. These are present by default on all !FreedomBox images. If you have installed !FreedomBox using a package from Debian, you need to ensure that source repositories are added in the file. + 1. To build the package from source code, first install its dependencies + {{{ +apt build-dep +}}} + Switch to the source directory created by the ''apt source'' command: + {{{ +cd +}}} + Then build the package + {{{ + dpkg-buildpackage -rfakeroot -uc +}}} + 1. Install the package: + {{{ + dpkg -i ../.deb +}}} + +==== Other Ways to Obtain Source Code ==== + + 1. Source code for any of the packages can be browsed and searched using the web interface at [[https://sources.debian.org/|sources.debian.org]]. For example, see the [[https://sources.debian.org/src/plinth/|plinth]] package. + + 1. Source code and pre-built binary package for any version of a package including historic versions can be obtained from [[https://snapshot.debian.org/|snapshot.debian.org]]. For example, see the [[https://snapshot.debian.org/package/plinth/|plinth]] package. + + 1. You can also obtain the links to upstream project homepage, upstream version control, Debian's version control, changelog, etc. from the Debian tracker page for a project at [[https://tracker.debian.org/|tracker.debian.org]]. For example, see the tracker page for [[https://tracker.debian.org/pkg/plinth|plinth]] package. + + 1. You can build and install a package from its Debian's version control repository. For example, + {{{ + git clone https://salsa.debian.org/freedombox-team/freedombox.git + cd freedombox + apt build-dep . + dpkg-buildpackage -rfakeroot -uc + dpkg -i ../freedombox*.deb +}}} + +==== Building Disk Images ==== + +You can also build !FreedomBox disk images for various hardware platforms using the freedom-maker tool. This is also available as a Debian package and source code for it may be obtained using the above methods. [[https://salsa.debian.org/freedombox-team/freedom-maker/blob/master/README.md|Build instructions]] for creating disk images are available as part of the source code for freedom-maker package. + +!FreedomBox disk images are built and uploaded to official servers using automated Continuous Integration infrastructure. This infrastructure is available as [[https://salsa.debian.org/freedombox-team/infrastructure|source code]] too and provides accurate information on how !FreedomBox images are built. + +==== U-boot on Pioneer Edition Images ==== + +There is one minor exception to the u-boot package present on the hardware sold as !FreedomBox Home Server Kits Pioneer Edition. It contains an small but important fix that is not part of Debian sources. The fork of the Debian u-boot source repository along with the minor change done by the !FreedomBox is available as a [[https://salsa.debian.org/freedombox-team/u-boot|separate repository]]. We expect this change to be available in upstream u-boot eventually and this repository will not be needed. This package can be built on a Debian armhf machine as follows (cross compiling is also possible, simply follow instructions for cross compiling Debian packages): + +{{{ +apt install git git-buildpackage +git clone https://salsa.debian.org/freedombox-team/u-boot.git +cd u-boot +pbuilder create --distribution=buster +gbp buildpackage --git-pbuilder +}}} + +The u-boot Debian package will be available in ''u-boot-sunxi*.deb''. This package will contain + +{{{ +mkdir temp +dpkg -x u-boot-suxi*.deb temp +unxz +dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of= seek=8 bs=1k conv=notrunc +}}} + +The resulting image will have the modified u-boot in it. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Plinth.raw.wiki b/doc/manual/en/Plinth.raw.wiki new file mode 100644 index 000000000..9f2aefff2 --- /dev/null +++ b/doc/manual/en/Plinth.raw.wiki @@ -0,0 +1,71 @@ +== FreedomBox Service (Plinth) == + +!FreedomBox Service (Plinth) is a web interface to administer the functions of the !FreedomBox. + +!FreedomBox Service is [[https://www.gnu.org/philosophy/|Free Software]] under [[https://www.gnu.org/licenses/agpl.html|GNU Affero General Public License]] version 3 or (at your option) a later version. + +=== Using === + + * !FreedomBox Service comes installed with all !FreedomBox images. You can [[FreedomBox/Download|download]] !FreedomBox images and run on any of the supported hardware. Then, you can access !FreedomBox Service by visiting the URL [[http://freedombox/plinth]] or [[https://freedombox.local/plinth]]. + + * If you are on a Debian box, you may install !FreedomBox Service from Debian package archive. Currently, only Buster (stable), Bullseye (testing), and Sid (unstable) are supported. To install !FreedomBox Service run: + +{{{ +$ sudo apt-get install freedombox +}}} + + * You can also get !FreedomBox Service from its [[https://salsa.debian.org/freedombox-team/freedombox/|Git repository]] and [[https://salsa.debian.org/freedombox-team/freedombox/blob/master/INSTALL.md|install from source]]. + +=== Screenshots === + +[[attachment:freedombox-screenshot-home.png|{{attachment:freedombox-screenshot-home.png|Home Page|width=300}}]] +[[attachment:freedombox-screenshot-apps.png|{{attachment:freedombox-screenshot-apps.png|Apps Page|width=300}}]] +[[attachment:freedombox-screenshot-system.png|{{attachment:freedombox-screenshot-system.png|System Page|width=300}}]] + +[[attachment:freedombox-screenshot-tor.png|{{attachment:freedombox-screenshot-tor.png|Enabling Tor Onion Services|width=300}}]] +[[attachment:freedombox-screenshot-ttrss.png|{{attachment:freedombox-screenshot-ttrss.png|Newsfeed from anywhere|width=300}}]] +[[attachment:freedombox-screenshot-roundcube.png|{{attachment:freedombox-screenshot-roundcube.png|Email Client|width=300}}]] + +[[attachment:freedombox-screenshot-manual.png|{{attachment:freedombox-screenshot-manual.png|Manual Pages|width=300}}]] +[[attachment:freedombox-screenshot-about.png|{{attachment:freedombox-screenshot-about.png|About Page|width=300}}]] + +=== Support === + +You may ask for support on + + * [[https://discuss.freedombox.org/|The discussion forum]] + + * [[AliothList:freedombox-discuss|The mailing list]] + + * [[irc://irc.debian.org/freedombox|#freedombox IRC channel]] + + * [[https://matrix.to/#/#freedombox:matrix.org|FreedomBox Matrix channel]] + +=== Contributing === + +We are looking for help to improve !FreedomBox Service. You can contribute to !FreedomBox Service by not just by coding but also by translating, documenting, designing, packaging and providing support. + + * Instructions on how to [[FreedomBox/Contribute/Code|contribute code]] are available. + + * The primary Git repository is hosted at [[https://salsa.debian.org/freedombox-team/freedombox/|FreedomBox Salsa Page]]. + + * Instructions for [[https://salsa.debian.org/freedombox-team/freedombox/blob/master/INSTALL.md|installing from source]] and [[https://salsa.debian.org/freedombox-team/freedombox/blob/master/HACKING.md|hacking the source]] are available. + + * List of bugs, TODO items and feature requests are available on the [[https://salsa.debian.org/freedombox-team/freedombox/issues|issue tracker]]. + + * Before contributing to !FreedomBox Service code, you need understand [[https://www.python.org/|Python]] and [[https://www.djangoproject.com/|Django]] on top which it is built. + + * You can request for development assistance on [[https://discuss.freedombox.org/|the discussion forum]], [[AliothList:freedombox-discuss|the mailing list]] or the [[irc://irc.debian.org/freedombox|#freedombox IRC channel]]. + +==== Debian Package ==== + + * !FreedomBox Service is [[DebianPkg:freedombox|packaged]] for Debian. !FreedomBox Service is a native package and packaging source code is part of the main package source code. + + * Issues related to packaging are listed on [[DebianBug:freedombox|Debian BTS]]. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Power.raw.wiki b/doc/manual/en/Power.raw.wiki new file mode 100644 index 000000000..7bbc9a44f --- /dev/null +++ b/doc/manual/en/Power.raw.wiki @@ -0,0 +1,22 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Power|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Power == + +To restart or shut down !FreedomBox, click the user dropdown menu on the top right of the page. After you select "Restart" or "Shut Down", you will be asked to confirm. + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Power.raw.xml b/doc/manual/en/Power.raw.xml deleted file mode 100644 index 0556bc1db..000000000 --- a/doc/manual/en/Power.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Power32019-02-28 16:33:32JosephNuthalapatiRestart and shut down options in user menu22017-01-07 20:38:36JamesValleroynote confirmation12016-08-21 09:29:59DrahtseilCreated Power
PowerPower provides an easy way to restart or shut down FreedomBox. After you select "Restart" or "Shut Down", you will be asked to confirm. "Restart" and "Shut Down" options can also be reached from the user dropdown menu on the top right. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Privoxy.raw.wiki b/doc/manual/en/Privoxy.raw.wiki new file mode 100644 index 000000000..447b5fcc9 --- /dev/null +++ b/doc/manual/en/Privoxy.raw.wiki @@ -0,0 +1,58 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Privoxy|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Privoxy (Web Proxy) == +|| {{attachment:Privoxy-icon_en_V01.png|Privoxy icon}} || + +'''Available since''': version 0.1 + +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. + +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: [[https://www.privoxy.org/faq/index.html|Privoxy FAQ]]). + +=== Screencast === + +Watch the [[attachment:Privoxy_Installation.webm|screencast]] on how to setup and use Privoxy in !FreedomBox. + +=== Setting up === + + 1. In !FreedomBox, install ''Web Proxy (Privoxy)'' + + {{attachment:Privoxy-Installation.png|Privoxy Installation|width=800}} + + 1. Adapt your browser proxy settings to your !FreedomBox hostname (or IP address) with port 8118. Please note that Privoxy can only proxy HTTP and HTTPS traffic. It will not work with FTP or other protocols. + + {{attachment:Privoxy-BrowserSettings.png|Privoxy Browser Settings|width=800}} + + 1. Go to page http://config.privoxy.org/ or http://p.p. If Privoxy is installed properly, you will be able to configure it in detail; if not you will see an error message. + + 1. If you are using a laptop that occasionally has to connect through other routers than yours with the !FreedomBox and Privoxy, you may want to install a proxy switch add-on that allows you to easily turn the proxy on or off. + +=== Advanced Users === + + 1. The default installation should provide a reasonable starting point for most. There will undoubtedly be occasions where you will want to adjust the configuration, that can be dealt with as the need arises. + + 1. While using Privoxy, you can see its configuration details and documentation at http://config.privoxy.org/ or http://p.p. + + 1. To enable changing these configurations, you first have to change the value of `enable-edit-actions` in `/etc/privoxy/config` to `1`. Before doing so, read carefully the manual, especially: + ''Access to the editor can not be controlled separately by "ACLs" or HTTP authentication, so that everybody who can access Privoxy can modify its configuration for all users. This option is not recommended for environments with untrusted users. Note that malicious client side code (e.g Java) is also capable of using the actions editor and you shouldn't enable this options unless you understand the consequences and are sure your browser is configured correctly.'' + + 1. Now you find an `EDIT` button on the configuration screen in `http://config.privoxy.org/`. + + 1. The [[https://www.privoxy.org/user-manual/quickstart.html|Quickstart]] is a good starting point to read on how to define own blocking and filtering rules. + +## END_INCLUDE + +---- + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Privoxy.raw.xml b/doc/manual/en/Privoxy.raw.xml deleted file mode 100644 index 968872ebb..000000000 --- a/doc/manual/en/Privoxy.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Privoxy162020-05-30 18:11:34SunilMohanAdapaUpdate the title to emphasize app name over its generic name152020-05-23 19:58:09JamesValleroyadd TableOfContents142020-05-23 17:06:11JamesValleroyrename plinth -> freedombox132020-05-03 18:51:16JamesValleroyuse https link for Quickstart122020-05-03 18:49:54JamesValleroyuse https link for FAQ112019-09-16 12:07:52fioddorMinor correction102018-03-11 03:09:16JosephNuthalapatiFix oversized images92016-09-09 15:39:20SunilMohanAdapaMinor indentation fix with screenshots82016-09-09 15:31:16SunilMohanAdapaPromote the visibility of the screencast72016-08-09 19:09:55Drahtseilconfiguration for advanced users62016-08-06 20:02:42DrahtseilScreencast of the setting up52016-08-06 17:57:33Drahtseilscreenshots42016-08-01 19:38:35DrahtseilVery basic restructuring as preparation for more work to be done.32016-04-10 07:24:20PhilippeBaretAdded bottom navigation link22015-12-15 20:54:14PhilippeBaretAdded link to Privoxy FAQ12015-12-15 20:22:00PhilippeBaretAdded Privoxy page and definition
Privoxy (Web Proxy)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. 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: Privoxy FAQ).
ScreencastWatch the screencast on how to setup and use Privoxy in FreedomBox.
Setting upIn FreedomBox, install Web Proxy (Privoxy) Privoxy Installation Adapt your browser proxy settings to your FreedomBox hostname (or IP address) with port 8118. Please note that Privoxy can only proxy HTTP and HTTPS traffic. It will not work with FTP or other protocols. Privoxy Browser Settings Go to page or . If Privoxy is installed properly, you will be able to configure it in detail; if not you will see an error message. If you are using a laptop that occasionally has to connect through other routers than yours with the FreedomBox and Privoxy, you may want to install a proxy switch add-on that allows you to easily turn the proxy on or off.
Advanced UsersThe default installation should provide a reasonable starting point for most. There will undoubtedly be occasions where you will want to adjust the configuration, that can be dealt with as the need arises. While using Privoxy, you can see its configuration details and documentation at or . To enable changing these configurations, you first have to change the value of enable-edit-actions in /etc/privoxy/config to 1. Before doing so, read carefully the manual, especially: Access to the editor can not be controlled separately by "ACLs" or HTTP authentication, so that everybody who can access Privoxy can modify its configuration for all users. This option is not recommended for environments with untrusted users. Note that malicious client side code (e.g Java) is also capable of using the actions editor and you shouldn't enable this options unless you understand the consequences and are sure your browser is configured correctly. Now you find an EDIT button on the configuration screen in http://config.privoxy.org/. The Quickstart is a good starting point to read on how to define own blocking and filtering rules. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Quassel.raw.wiki b/doc/manual/en/Quassel.raw.wiki new file mode 100644 index 000000000..bc298116f --- /dev/null +++ b/doc/manual/en/Quassel.raw.wiki @@ -0,0 +1,97 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Quassel|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Quassel (IRC Client) == +|| {{attachment:Quassel-icon_en_V02.png|Quassel icon}} || + +'''Available since''': version 0.8 + +''Quassel'' is an IRC application that is split into two parts, a "core" and a "client". This allows the core to remain connected to IRC servers, and to continue receiving messages, even when the client is disconnected. !FreedomBox can run the Quassel core service keeping you always online and one or more Quassel clients from a desktop or a mobile device can be used to connect and disconnect from it. + + +=== Why run Quassel? === + +Many discussions about !FreedomBox are being done on the IRC-Channel `irc://irc.debian.org/freedombox`. If your !FreedomBox is running ''Quassel'', it will collect all discussions while you are away, such as responses to your questions. Remember, the !FreedomBox project is a worldwide project with people from nearly every time zone. You use your ''client'' to connect to the ''Quassel'' core to read and respond whenever you have time and are available. + +=== How to setup Quassel? === + * Within !FreedomBox's web interface + 1. select ''Applications'' + 1. go to ''IRC Client (Quassel)'' and + 1. install the application and make sure it is enabled + {{attachment:Quassel_Installation.png|Quassel Installation|width=800}} + 1. now your Quassel core is running + + +=== Port Forwarding === + +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 Quassel: + * TCP 4242 + + * Example configuration in router: + {{attachment:Quassel_PortForwarding_en_v01.png}} + +=== Clients === + +Clients to connect to Quassel from your [[http://quassel-irc.org/downloads|desktop]] and [[https://quasseldroid.info/|mobile]] devices are available. + +==== Desktop ==== + +In a Debian system, you can e.g. use [[https://packages.debian.org/search?keywords=quassel-client|quassel-client]]. 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. + + 1. Launch Quassel Client. You will be greeted with a wizard to `Connect to Core`. + {{attachment:quassel-client-1-connect-to-core.png|Connect to Core|width=394}} + 1. Click the `Add` button to launch `Add Core Account` dialog. + {{attachment:quassel-client-2-add-core-account.png|Add Core Account|width=382}} + 1. Fill any value in the `Account Name` field. Fill proper DNS hostname of your !FreedomBox in `Hostname` filed. `Port` field must have the value `4242`. Provide the username and password of the account you wish to create to connect to the Quassel Core in the `User` and `Password` fields. Choose `Remember` if don't wish to be prompted for a password every time you launch Quassel client. + 1. After pressing `OK` in the `Add Core Account` dialog, you should see the core account in the `Connect to Core` dialog. + {{attachment:quassel-client-3-connect-to-core.png|Connect to Core|width=394}} + 1. Select the newly created core account and select `OK` to connect to it. + 1. If this is the first time you are connecting to this core. You will see an `Untrusted Security Certificate` warning and need to accept the server certificate. + {{attachment:quassel-client-4-untrusted-security-certficate.png|Untrusted Security Certificate|width=504}} + 1. Select `Continue`. Then you will be asked if you wish to accept the certificate permanently. Select `Forever`. + {{attachment:quassel-client-5-untrusted-security-certificate.png|Untrusted Security Certificate|width=434}} + 1. If this Quassel Core has not been connected to before, you will then see a `Core Configuration Wizard`. Select `Next`. + {{attachment:quassel-client-6-core-configuration-wizard.png|Core Configuration Wizard|width=504}} + 1. In the `Create Admin User` page, enter the username and password you have used earlier to create the core connection. Select `Remember password` to remember this password for future sessions. Click `Next`. + {{attachment:quassel-client-7-create-admin-user.png|Create Admin User Page|width=504}} + 1. In the `Select Storage Backend` page, select `SQLite` and click `Commit`. + {{attachment:quassel-client-8-select-storage-backend.png|Select Storage Backend|width=504}} + 1. The core configuration is then complete and you will see a `Quassel IRC` wizard to configure your IRC connections. Click `Next`. + {{attachment:quassel-client-9-welcome-wizard.png|Welcome Wizard|width=504}} + 1. In `Setup Identity` page next, provide a name and multiple nicknames. This is how you present yourself to other users on IRC. It is not necessary to give your real world name. Multiple nicknames are useful as fallback nicknames when the first nickname can't be used for some reason. After providing the information click `Next`. + {{attachment:quassel-client-10-setup-identity.png|Setup Identity|width=504}} + 1. In `Setup Network Connection` page next, provide a network name of your choice. Next provide a list of servers to which Quassel Core should connect to in order to join this IRC network (such as irc.debian.org:6667). + {{attachment:quassel-client-11-setup-network-connection.png|Setup Network Connection|width=504}} + 1. Select the server in the servers list and click `Edit`. In the `Server Info` dialog, set the port `6697` (consult your network's documentation for actual list of servers and their secure ports) and click `Use SSL`. Click `OK`. This is to ensure that communication between your !FreedomBox and the IRC network server is encrypted. + {{attachment:quassel-client-12-server-info.png|Server Info|width=390}} + {{attachment:quassel-client-13-server-info-ssl.png|Server Info SSL|width=390}} + 1. Back in the `Setup Network Connection` dialog, provide a list of IRC channels (such as #freedombox) to join upon connecting to the network. Click `Save & Connect`. + {{attachment:quassel-client-14-setup-network-connection.png|Setup Network Connection|width=504}} + 1. You should connect to the network and see the list of channels you have joined on the `All Chats` pane on the left of the Quassel Client main window. + {{attachment:quassel-client-15-quassel-main.png|Quassel Main Window|width=644}} + 1. Select a channel and start seeing messages from others in the channel and send your own messages. + +==== Android ==== + +For Android devices you may use e.g. ''Quasseldroid'' from [[https://f-droid.org/en/packages/com.iskrembilen.quasseldroid/|F-Droid]] + + * enter core, username etc. as above + {{attachment:Quasseldroid.png}} + + +By the way, the German verb ''quasseln'' means ''talking a lot'', to ''jabber''. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Quassel.raw.xml b/doc/manual/en/Quassel.raw.xml deleted file mode 100644 index 3192741f3..000000000 --- a/doc/manual/en/Quassel.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Quassel122020-05-30 18:02:30SunilMohanAdapaUpdate the title to emphasize app name over its generic name112020-05-23 19:54:18JamesValleroyadd TableOfContents102020-05-11 23:23:12fioddorExample screenshot in english (previous in german)92020-05-11 23:16:16fioddorPlinth renamed to FreedomBox's web interface,as in the rest of user documentation82020-05-03 18:48:31JamesValleroyupdate quasseldroid links72019-05-10 23:05:32JamesValleroyuse standard text for port forwarding62019-02-27 21:34:38JosephNuthalapatiGrammar corrections and clarification about port forwarding52018-10-04 02:01:15SunilMohanAdapaAdd screenshots to the Quassel Client section42018-10-04 01:26:35SunilMohanAdapaRefactor information on how to connect to core using desktop client32018-03-11 03:00:04JosephNuthalapatiFix oversized image22016-08-18 17:30:28Drahtseilwording, screen-shots12016-08-17 20:09:38Drahtseilpage creation; not sure about the configuration of quassel-client (too long ago); screenshots to follow
Quassel (IRC Client)Quassel is an IRC application that is split into two parts, a "core" and a "client". This allows the core to remain connected to IRC servers, and to continue receiving messages, even when the client is disconnected. FreedomBox can run the Quassel core service keeping you always online and one or more Quassel clients from a desktop or a mobile device can be used to connect and disconnect from it.
Why run Quassel?Many discussions about FreedomBox are being done on the IRC-Channel irc://irc.debian.org/freedombox. If your FreedomBox is running Quassel, it will collect all discussions while you are away, such as responses to your questions. Remember, the FreedomBox project is a worldwide project with people from nearly every time zone. You use your client to connect to the Quassel core to read and respond whenever you have time and are available.
How to setup Quassel?Within FreedomBox's web interface select Applications go to IRC Client (Quassel) and install the application and make sure it is enabled Quassel Installation now your Quassel core is running
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for Quassel: TCP 4242 Example configuration in router: Quassel_PortForwarding_en_v01.png
ClientsClients to connect to Quassel from your desktop and mobile devices are available.
DesktopIn a Debian system, you can e.g. use quassel-client. 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. Launch Quassel Client. You will be greeted with a wizard to Connect to Core. Connect to Core Click the Add button to launch Add Core Account dialog. Add Core Account Fill any value in the Account Name field. Fill proper DNS hostname of your FreedomBox in Hostname filed. Port field must have the value 4242. Provide the username and password of the account you wish to create to connect to the Quassel Core in the User and Password fields. Choose Remember if don't wish to be prompted for a password every time you launch Quassel client. After pressing OK in the Add Core Account dialog, you should see the core account in the Connect to Core dialog. Connect to Core Select the newly created core account and select OK to connect to it. If this is the first time you are connecting to this core. You will see an Untrusted Security Certificate warning and need to accept the server certificate. Untrusted Security Certificate Select Continue. Then you will be asked if you wish to accept the certificate permanently. Select Forever. Untrusted Security Certificate If this Quassel Core has not been connected to before, you will then see a Core Configuration Wizard. Select Next. Core Configuration Wizard In the Create Admin User page, enter the username and password you have used earlier to create the core connection. Select Remember password to remember this password for future sessions. Click Next. Create Admin User Page In the Select Storage Backend page, select SQLite and click Commit. Select Storage Backend The core configuration is then complete and you will see a Quassel IRC wizard to configure your IRC connections. Click Next. Welcome Wizard In Setup Identity page next, provide a name and multiple nicknames. This is how you present yourself to other users on IRC. It is not necessary to give your real world name. Multiple nicknames are useful as fallback nicknames when the first nickname can't be used for some reason. After providing the information click Next. Setup Identity In Setup Network Connection page next, provide a network name of your choice. Next provide a list of servers to which Quassel Core should connect to in order to join this IRC network (such as irc.debian.org:6667). Setup Network Connection Select the server in the servers list and click Edit. In the Server Info dialog, set the port 6697 (consult your network's documentation for actual list of servers and their secure ports) and click Use SSL. Click OK. This is to ensure that communication between your FreedomBox and the IRC network server is encrypted. Server Info Server Info SSL Back in the Setup Network Connection dialog, provide a list of IRC channels (such as #freedombox) to join upon connecting to the network. Click Save & Connect. Setup Network Connection You should connect to the network and see the list of channels you have joined on the All Chats pane on the left of the Quassel Client main window. Quassel Main Window Select a channel and start seeing messages from others in the channel and send your own messages.
AndroidFor Android devices you may use e.g. Quasseldroid from F-Droid enter core, username etc. as above Quasseldroid.png By the way, the German verb quasseln means talking a lot, to jabber. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/QuickStart.raw.wiki b/doc/manual/en/QuickStart.raw.wiki new file mode 100644 index 000000000..f986a3617 --- /dev/null +++ b/doc/manual/en/QuickStart.raw.wiki @@ -0,0 +1,125 @@ +#language en +#pragma section-numbers 2 +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[de/FreedomBox/Handbuch/Schnelleinstieg|Deutsch]] - English - [[es/FreedomBox/Manual/QuickStart|Español]] -~ + +## BEGIN_INCLUDE += Quick Start = + +== What you need to get started == + +The easy way is to [[https://freedomboxfoundation.org/buy/|buy]] a !FreedomBox kit. + +Alternatively you may choose to build it yourself, by gathering all the components: + * A supported [[FreedomBox/Hardware|device]] (including any device that can run Debian). We will call that the !FreedomBox in the rest of this manual. + * A power cable for your device. + * An ethernet cable. + * A microSD card (or equivalent storage media for your device), prepared according to the instructions on the [[FreedomBox/Download|Download]] page. + +== How to get started == + + 1. Plug one end of your ethernet cord into your !FreedomBox's ethernet port, and plug the other end into your router. + 1. Power on the !FreedomBox. + * '''Note:''' On most single board computers, don't expect any output on a monitor connected via HDMI as the support may not exist in the kernel. See below to access and control your !FreedomBox via network. + 1. On first boot, !FreedomBox will perform its initial setup (older versions of !FreedomBox reboot after this step). This process may take several minutes on some machines. After giving it about 10 minutes, proceed to the next step. + * '''Note:''' Currently, due a known bug, you need to restart your !FreedomBox after 10m and then proceed to the next step. /* Is this still the case? */ + 1. After the !FreedomBox has finished its initial setup, you can access its web interface through your web browser. + * If your computer is connected directly to the !FreedomBox through a second (LAN) ethernet port, you can browse to: http://freedombox/ or http://10.42.0.1/. + * If your computer supports mDNS (GNU/Linux, Mac OSX or Windows with mDNS software installed), you can browse to: http://freedombox.local/ (or http://the-hostname-you-entered-during-install.local/) + * If you know your way around the router's web interface, you can look up the IP address of the !FreedomBox there, and browse to that address. + * If none of these methods are available, then you will need to figure out the IP address of your !FreedomBox. You can use the "nmap" program from your computer to find its IP address: + {{{ + nmap -p 80 --open -sV 192.168.0.0/24 (replace the ip/netmask with the one the router uses) + }}} + In most cases you can look at your current IP address, and change the last digits with zero to find your home network, like so: XXX.XXX.XXX.0/24 + + Your !FreedomBox will show up as an IP address with an open tcp port 80 using Apache httpd service on Debian, such as the example below which would make it accessible at http://192.168.0.165: + {{{ + Nmap scan report for 192.168.0.165 + Host is up (0.00088s latency). + PORT STATE SERVICE VERSION + 80/tcp open http Apache httpd 2.4.17 ((Debian)) + }}} + If nmap does not find anything with the above command, you can try replacing 192.168.0.0/24 with 10.42.0.255/24. + {{{ + nmap -n -sP 10.42.0.255/24 + }}} + The scan report will show something similar to the following: + {{{ + Nmap scan report for 10.42.0.1 + Host is up (0.00027s latency). + Nmap scan report for 10.42.0.50 + Host is up (0.00044s latency). + }}} + In this example, the !FreedomBox is accessible at http://10.42.0.50. (10.42.0.1 is my laptop.) + + 1. On accessing !FreedomBox's web interface your browser will warn you that it communicates securely but that it regards the security certificate for doing so as invalid. This is a fact you need to accept because the certificate is auto generated on the box and therefore "self-signed" (the browser might also use words such as "untrusted", "not private", "privacy error" or "unknown issuer/authority"). Telling your browser that you are aware of this might involve pressing buttons such as "I understand the Risks", "proceed to ... (unsafe)" or "Add exception". After installation this certificate can be changed to a normal one using the Let's Encrypt option. + + . {{attachment:ui_insecure_connection.png|Self-signed certificate warning|width=600}} + . {{attachment:ui_add_security_exception.png|Add Security Exception|width=400}} + 1. The first time you access the !FreedomBox web interface, you will see a welcome page. Click the "Start Setup" button to continue. + . {{attachment:ui_firstboot_welcome.png|Welcome|width=500}} + + If you have installed !FreedomBox using a [[FreedomBox/Hardware/Debian|Debian]] package, you will be asked for a secret key. This secret was generated during the installation of the Debian package. It can be read from the file `/var/lib/plinth/firstboot-wizard-secret`. + 1. The next page asks you to provide a user name and password. Fill in the form, and then click "Create Account." + * Note: The user that you create here has ``Admin`` privileges and can also [[FreedomBox/Manual/SecureShell|log in using ssh]]. For additional security, you may want to use a separate account for administrative tasks and for your normal, daily use. You can add more users later. + . {{attachment:ui_firstboot_account.png|Account|width=500}} + 1. After completing the form, you will be logged in to !FreedomBox's web interface and able to access apps and configuration through the interface. + . {{attachment:ui_firstboot_complete.png|Complete|width=500}} + +Now you can try [[FreedomBox/Features|any of the Apps]] that are available on !FreedomBox. + +== Finding your way around == + +=== Front page === + +The front page is the page that you will see when accessing the web root of your !FreedomBox. You can also access it by clicking the !FreedomBox logo in the top-left corner of the !FreedomBox's web interface. + +The front page includes shortcuts to apps that have been installed and are enabled. For web apps, clicking the shortcut will take you directly to the app's web page. For other services, clicking the shortcut will show more information about the service. + +{{attachment:ui_frontpage.png|Front page|width=600}} + +{{attachment:ui_frontpage_with_app.png|Front page|width=600}} + +=== Apps menu === + +The Apps menu can be accessed by clicking the grid icon, next to the !FreedomBox logo. This page lists all of the apps that are available for installing on !FreedomBox. Click the name of an app to visit its page, where you can install and configure it. + +{{attachment:ui_apps.png|Apps|width=600}} + +=== Help menu === + +The Help menu can be accessed by clicking the question mark icon in the top-right corner. It includes helpful links and the !FreedomBox manual. + +{{attachment:ui_help.png|Help|width=600}} + +=== System menu === + +The System menu can be accessed by clicking the gear icon in the top-left corner. It includes a number of pages related to system configuration. + +{{attachment:ui_system.png|System|width=600}} + +=== User menu === + +In the top-right corner, the name of the currently logged-in user is shown. A drop-down menu includes options for editing the current user or logging out of the user interface. + +{{attachment:ui_user_menu.png|User|width=600}} + + +=== Burger menu === + +!FreedomBox's web interface is responsive. When the display or browser window is very narrow, menu options may be hidden. + +{{attachment:ui_burger_icon.png|User|width=600}} + +That is because the top menu options are collapsed into the burger icon shown at the top right corner of the window. Click on it to display a drop-down menu. + +{{attachment:ui_burger_menu.png|User|width=600}} + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Radicale.raw.wiki b/doc/manual/en/Radicale.raw.wiki new file mode 100644 index 000000000..5c801097c --- /dev/null +++ b/doc/manual/en/Radicale.raw.wiki @@ -0,0 +1,186 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Radicale|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Radicale (Calendar and Addressbook) == +|| {{attachment:Radicale-icon_en_V01.png|Radicale icon}} || + +'''Available since''': version 0.9 + +With Radicale, you can synchronize your personal calendars, !ToDo lists, and addressbooks with your various computers, tablets, and smartphones, and share them with friends, without letting third parties know your personal schedule or contacts. + +=== Why should I run Radicale? === + +Using Radicale, you can get rid of centralized services like Google Calendar or Apple Calendar (iCloud) data mining your events and social connections. + +=== How to setup Radicale? === + +First, the Radicale server needs to be activated on your box. + + * Within !FreedomBox Service: + 1. select ''Apps'' + 2. go to ''Radicale (Calendar and Addressbook)'' and + 3. install the application. After the installation is complete, make sure the application is marked "enabled" in the !FreedomBox interface. Enabling the application launches the Radicale CalDAV/CardDAV server. + 4. define the access rights: + * Only the owner of a calendar/addressbook can view or make changes + * Any user can view any calendar/addressbook, but only the owner can make changes + * Any user can view or make changes to any calendar/addressbook + +Note, that only users with a !FreedomBox login can access Radicale. + +{{attachment:Radicale-Plinth.png}} + +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. + +Radicale provides a basic web interface, which only supports creating new calendars and addressbooks. To add events or contacts, an external [[https://radicale.org/master.html#documentation/supported-clients|supported client application]] is needed. + +{{attachment:radicale_web.png}} + + * Creating addressbook/calendar using the web interface + * Visit `https://`''IP-address-or-domain-for-your-server''`/radicale/` + * Log in with your !FreedomBox account + * Select "Create new addressbook or calendar" + * Provide a title and select the type + * Optionally, provide a description or select a color + * Click "Create" + * The page will show the URL for your newly created addressbook or calendar + +Now open your client application to create new calendar and address books that will use your !FreedomBox and Radicale server. The Radicale website provides [[https://radicale.org/master.html#documentation/supported-clients|an overview of supported clients]], but do ''not'' use the URLs described there; !FreedomBox uses another setup, follow this manual. Below are the steps for two examples: + + * Example of setup with Evolution client: + * Calendar + 1. Create a new calendar + 1. For "Type," select "CalDAV" + 1. When "CalDAV" is selected, additional options will appear in the dialogue window. + 1. URL: `https://`''IP-address-or-domain-for-your-server''`/radicale/`''user''`/`''calendar-name''`.ics/`. Items in ''italics'' need to be changed to match your settings. + * note the trailing `/` in the path, it is important. + 1. Enable "Use a secure connection." + 1. Name the calendar + {{attachment:Radicale-Evolution-Docu.png}} + * TODO/Tasks list: Adding a TODO/Tasks list is basically the same as a calendar. + * Contacts + * Follow the same steps described above and replace CalDAV with WebDAV. The extension of the address book will be .vcf. + +=== Synchronizing over Tor === + +In !FreedomBox, setting up a calendar with Radicale over Tor is the same as over the clear net. Here is a short summary: + + 1. When logged in to !FreedomBox interface over Tor, click on Radicale, and at the prompt provide your !FreedomBox user name and password. + 1. In the Radicale web interface, log in using your !FreedomBox user name and password. + 1. Click on "Create new address book or calendar", provide a title, select a type, and click "Create". + 1. Save the URL, e.g., `https://`''ONION-ADDRESS-FOR-YOUR-SERVER''`.onion/radicale/`''USERNAME''`/`''CALENDAR-CODE''`/`. Items in ''italics'' need to be changed to match your settings. + +These instructions are for Thunderbird/Lightning. Note that you will need to be connected to Tor with the Tor Browser Bundle. + + 1. Open Thunderbird, install the Torbirdy add-on, and restart Thunderbird. (This may not be necessary.) + 1. In the Lightning interface, under Calendar/Home in the left panel right click with the mouse and select "New calendar". + 1. Select the location of your calendar as "On the Network". + 1. Select CalDAV and for the location copy the URL, e.g., `https://`''ONION-ADDRESS-FOR-YOUR-SERVER''`.onion/radicale/`''USERNAME''`/`''CALENDAR-CODE''`/`. Items in ''italics'' need to be changed to match your settings. + 1. Provide a name, etc. Click "Next". Your calendar is now syncing with your !FreedomBox over Tor. + 1. If you have not generated a certificate for your !FreedomBox with "Let's Encrypt", you may need to select "Confirm Security Exception" when prompted. + +=== Synchronizing with your Android phone === + +There are various Apps that allow integration with the Radicale server. This example uses DAVx5, which is available e.g. on [[https://f-droid.org/repository/browse/?fdid=at.bitfire.davdroid|F-Droid]]. +If you intend to use !ToDo-Lists as well, the compatible app [[https://f-droid.org/repository/browse/?fdid=org.dmfs.tasks|OpenTasks]] has to be installed first. + +Follow these steps for setting up your account with the Radicale server running on your !FreedomBox. + + 1. Install DAVx5 + 1. Create a new account on DAVx5 by clicking on the floating + button. + 1. Select the second option as shown in the first figure below and enter the base url as ''https:///radicale/username/'' (don't miss the `/` at the end). DAVx5 will be able to discover both CalDAV and WebDAV accounts for the user. + 1. Follow this video from [[https://www.davdroid.com/faq/existing-contacts-are-not-synced|DAVx5 FAQ]] to learn how to migrate your existing contacts to Radicale. + +'''Synchronizing contacts''' + 1. Click on the hamburger menus of CalDAV and CardDAV and select either "Refresh ..." in case of existing accounts or "Create ..." in case of new accounts (see the second screenshot below). + 1. Check the checkboxes for the address books and calendars you want to synchronize and click on the sync button in the header. (see the third screenshot below) + +{{attachment:DAVdroid-setup-account.png|DAVx5 account setup|width=288}} +{{attachment:DAVdroid-refresh.png|DAVx5 refresh|width=288}} +{{attachment:DAVdroid-sync-account.png|DAVx5 account sync|width=288}} + + +=== Advanced Users === + +==== Sharing resources ==== +Above was shown an easy way to create a resource for a group of people by creating a dedicated account for all. Here will be described an alternative method where two users `User1` and `User2` are granted access to a calendar. This requires SSH-access to the !FreedomBox. + + 1. create a file `/etc/radicale/rights` + {{{ +[friends_calendar] +user: ^(User1|User2)$ +collection: ^.*/calendar_of_my_friends.ics$ +permission: rw + +# Give write access to owners +[owner-write] +user: .+ +collection: ^%(login)s/.+$ +permission: rw + }}} + * `[friends_calendar]` is just an identifier, can be any name. + * The `[owner-write]` section makes sure that owners have access to their own files + 1. edit file `/etc/radicale/config` and make the following changes in section `[rights]` + + {{{ +[rights] +type = from_file +file = /etc/radicale/rights + }}} + 1. Restart the radicale server or the !FreedomBox + +==== Importing files ==== +If you are using a contacts file exported from another service or application, it should be copied to: /var/lib/radicale/collections/''user''/''contact file name''.vcf. + +=== Migrating from Radicale Version 1.x to Version 2.x === + +During the month of February 2019, radicale in Debian testing was upgraded from version 1.x to version 2.x. Version 2.x is a better version but is incompatible with data and configuration used with 1.x. Automatic upgrade mechanism in !FreedomBox, handled by unattended-upgrades does not automatically upgrade radicale to version 2.x due to changes in configuration files. However, !FreedomBox version 19.1, which is available on February 23rd, 2019 in testing will perform data and configuration migration to radicale version 2.x. Typical users require no action, this will happen automatically. + +If for some reason, you need to manually run `apt dist-upgrade` on your machine, then radicale will be upgraded to 2.x and then !FreedomBox will not be able to perform its upgrade (due to upstream project deciding to remove migration tools in radicale 2.x version). To avoid this situation, the following process is recommended if you wish to perform an upgrade. + +{{{ +sudo su - +apt hold radicale +apt dist-upgrade +apt unhold radicale +}}} + +However, if you already happen to perform an upgrade to radicale 2.x without help from !FreedomBox, you need to perform data and configuration migration yourself. Follow this procedure: + +{{{ +sudo su - +tar -cvzf /root/radicale_backup.tgz /var/lib/radicale/ /etc/radicale/ /etc/default/radicale +apt install -y python-radicale +python -m radicale --export-storage=/root/radicale-migration +cp -dpR /root/radicale-migration/collection-root /var/lib/radicale/collections/collection-root/ +(remove this directory if it already exists. Or perhaps merge the contents.) +chown -R radicale:radicale /var/lib/radicale/collections/collection-root/ +apt remove -y python-radicale +if [ -f /etc/radicale/config.dpkg-dist ] ; then cp /etc/radicale/config.dpkg-dist /etc/radicale/config ; fi +if [ -f /etc/default/radicale.dpkg-dist ] ; then cp /etc/default/radicale.dpkg-dist /etc/default/radicale ; fi +(After FreedomBox 19.1 is available, goto FreedomBox web interface and set your preference for calendar sharing again, if it is not the default option, as it will have been lost.) +}}} + +Notes: + * python-radicale is an old package from radicale 1.x version that is still available in testing. This is a hack to use the `--export-storage` feature that is responsible for data migration. This feature is not available in radicale 2.x unfortunately. + * Files ending with .dpkg-dist will exist only if you have chosen 'Keep your currently-installed version' when prompted for configuration file override during radicale 2.x upgrade. The above process will overwrite the old configuration with new fresh configuration. No changes are necessary to the two configuration files unless you have changed the setting for sharing calendars. + * Note that during the migration, your data is safe in /var/lib/radicale/collections directory. New data will be created and used in /var/lib/radicale/collections/collections-root/ directory. + * The tar command takes a backup your configuration and data in /root/radicale_backup.tgz in case you do something goes wrong and you want to undo the changes. + +=== Troubleshooting === + +1. If you are using !FreedomBox Pioneer Edition or installing !FreedomBox on Debian Buster, then radicale may not be usable immediately after installation. This is due to a bug which has been fixed later. To overcome the problem, upgrade !FreedomBox by clicking on 'Manual Update' from 'Updates' app. Otherwise, simply wait a day or two and let !FreedomBox upgrade itself. After that install radicale. If radicale is already installed, disable and re-enable it after the update is completed. This will fix the problem and get radicale working properly. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Radicale.raw.xml b/doc/manual/en/Radicale.raw.xml deleted file mode 100644 index 3d02eabe1..000000000 --- a/doc/manual/en/Radicale.raw.xml +++ /dev/null @@ -1,25 +0,0 @@ -
FreedomBox/Manual/Radicale582020-05-30 17:55:19SunilMohanAdapaUpdate the title to emphasize app name over its generic name572020-05-23 19:49:39JamesValleroyadd TableOfContents562020-05-23 17:01:25JamesValleroyremove (Plinth)552020-05-22 01:21:31JamesValleroyfix matching bracket542020-05-15 11:11:34JamesValleroyrename plinth -> freedombox532020-05-15 11:10:13JamesValleroysuppress wikiword links522020-05-03 18:43:27JamesValleroyupdate links to supported clients in radicale docs512019-08-11 20:39:37SunilMohanAdapaMinro fixes to workaround for bug502019-08-11 20:32:14SunilMohanAdapaAdd information about bug in radicale492019-05-22 20:58:26David JonesAdded instructions for syncronizing calendars over Tor in Thunderbird.482019-04-04 15:49:32JosephNuthalapatiMention a gotcha about a trailing slash in radicale URL472019-03-01 11:29:01JamesValleroyadd screenshot of web interface462019-03-01 04:01:20JamesValleroyadd instructions on using web interface452019-03-01 03:50:42JamesValleroyupdate setup instructions442019-03-01 03:48:19JamesValleroyrename Plinth -> FreedomBox Service (Plinth)432019-02-27 00:07:37SunilMohanAdapaUpdate incorrect reference to collections-root422019-02-26 20:24:11SunilMohanAdapaMinor update412019-02-26 20:20:18SunilMohanAdapaFix instructions for radicale 2.x manual migration402019-02-21 18:48:01SunilMohanAdapaRemove 'not tested' notice392019-02-21 03:38:31SunilMohanAdapaAdd information about radicale 2.x migration382019-02-10 23:10:19JamesValleroyonly need domain name for DAVx5372019-02-10 23:09:14JamesValleroyrename DAVdroid -> DAVx5362019-02-10 22:59:07JamesValleroyradicale is now in testing352018-09-29 11:28:56JamesValleroyUse calendar-name in CalDAV url342018-07-10 18:04:49BartNotelaers332018-06-17 16:36:11JosephNuthalapatiAdd a missing instruction on how to synchronize using DAVdroid322018-06-01 10:48:04JosephNuthalapatiUpdate DAVdroid account setup with screenshots312018-01-03 08:54:14JosephNuthalapatiUpdate broken link - radicale clients302017-08-06 23:06:11JohannesKeyserupdated dead link to radicale client page, and added warning about misleading URL info292016-12-31 02:28:01JamesValleroystyle changes282016-09-09 15:36:28SunilMohanAdapaMinor indentation fix with screenshot272016-09-09 14:43:07SunilMohanAdapaMinor fix to adjust screenshot262016-09-01 19:11:38Drahtseiladapted title to Plinth wording252016-08-31 17:26:23Drahtseilupdated screenshot242016-08-31 17:24:42DrahtseilAccess rights232016-08-01 16:32:28Drahtseil222016-08-01 16:28:29Drahtseilscreenshots212016-08-01 16:18:30DrahtseilEvolution tutorial to use Calendar instead of Contacts (just happen to have that screenshot)202016-07-31 18:21:39DrahtseilAndroid, advanced user, screenshots still to follow192016-07-31 16:54:46Drahtseil182016-05-18 12:40:51SunilMohanAdapaReduce item nesting to < 4 due to problems in generating FreedomBox Manual172016-04-27 03:35:17StacyCockrumformatting162016-04-27 03:24:18StacyCockrumEditing and added instructions for Evolution Calendar.152016-04-26 06:11:34PhilippeBaretEditing142016-04-25 11:43:17StacyCockrum132016-04-25 11:36:30StacyCockrumI'm not sure if this is the right place to put this kind of information. I thought it would be helpful for a person to know some specifics around the settings. Pls advise if it should go somewhere e122016-04-16 01:38:12PhilippeBaretAdded Why Radical app content112016-04-16 01:36:07PhilippeBaretCorrection102016-04-15 14:58:18StacyCockrum2nd bullet under "How to setup...?" Is it true that a new calendar/address book is created for each client or perhaps the clients need to be configured to access the calendar/address books?92016-04-15 14:53:50StacyCockrumStruggled with the last sentence of the first bullet under "How to setup Radicale?". When the Radicale server is launched does CalDAV become a function of the server or is a CalDAV server?82016-04-11 09:04:25PhilippeBaretCorrection72016-04-11 09:02:38PhilippeBaretCorrection proper terms: CalDAV and CardDAV62016-04-11 09:01:11PhilippeBaretAdded Why running Radicale section52016-04-11 08:53:27PhilippeBaretCorrection42016-04-11 08:48:16PhilippeBaretAdded how to setup Radical server and clients in FreedomBox Manual32016-04-10 07:12:39PhilippeBaretAdded manual link22016-04-10 07:09:27PhilippeBaretAdded Radicale definition on FreedomBox manual12016-04-10 06:40:28PhilippeBaretAdded first content to Radicale manual page
Radicale (Calendar and Addressbook)With Radicale, you can synchronize your personal calendars, ToDo lists, and addressbooks with your various computers, tablets, and smartphones, and share them with friends, without letting third parties know your personal schedule or contacts.
Why should I run Radicale?Using Radicale, you can get rid of centralized services like Google Calendar or Apple Calendar (iCloud) data mining your events and social connections.
How to setup Radicale?First, the Radicale server needs to be activated on your box. Within FreedomBox Service: select Apps go to Radicale (Calendar and Addressbook) and install the application. After the installation is complete, make sure the application is marked "enabled" in the FreedomBox interface. Enabling the application launches the Radicale CalDAV/CardDAV server. define the access rights: Only the owner of a calendar/addressbook can view or make changes Any user can view any calendar/addressbook, but only the owner can make changes Any user can view or make changes to any calendar/addressbook Note, that only users with a FreedomBox login can access Radicale. Radicale-Plinth.png 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. Radicale provides a basic web interface, which only supports creating new calendars and addressbooks. To add events or contacts, an external supported client application is needed. radicale_web.png Creating addressbook/calendar using the web interface Visit https://IP-address-or-domain-for-your-server/radicale/ Log in with your FreedomBox account Select "Create new addressbook or calendar" Provide a title and select the type Optionally, provide a description or select a color Click "Create" The page will show the URL for your newly created addressbook or calendar Now open your client application to create new calendar and address books that will use your FreedomBox and Radicale server. The Radicale website provides an overview of supported clients, but do not use the URLs described there; FreedomBox uses another setup, follow this manual. Below are the steps for two examples: Example of setup with Evolution client: Calendar Create a new calendar For "Type," select "CalDAV" When "CalDAV" is selected, additional options will appear in the dialogue window. URL: https://IP-address-or-domain-for-your-server/radicale/user/calendar-name.ics/. Items in italics need to be changed to match your settings. note the trailing / in the path, it is important. Enable "Use a secure connection." Name the calendar Radicale-Evolution-Docu.png TODO/Tasks list: Adding a TODO/Tasks list is basically the same as a calendar. Contacts Follow the same steps described above and replace CalDAV with WebDAV. The extension of the address book will be .vcf.
Synchronizing over TorIn FreedomBox, setting up a calendar with Radicale over Tor is the same as over the clear net. Here is a short summary: When logged in to FreedomBox interface over Tor, click on Radicale, and at the prompt provide your FreedomBox user name and password. In the Radicale web interface, log in using your FreedomBox user name and password. Click on "Create new address book or calendar", provide a title, select a type, and click "Create". Save the URL, e.g., https://ONION-ADDRESS-FOR-YOUR-SERVER.onion/radicale/USERNAME/CALENDAR-CODE/. Items in italics need to be changed to match your settings. These instructions are for Thunderbird/Lightning. Note that you will need to be connected to Tor with the Tor Browser Bundle. Open Thunderbird, install the Torbirdy add-on, and restart Thunderbird. (This may not be necessary.) In the Lightning interface, under Calendar/Home in the left panel right click with the mouse and select "New calendar". Select the location of your calendar as "On the Network". Select CalDAV and for the location copy the URL, e.g., https://ONION-ADDRESS-FOR-YOUR-SERVER.onion/radicale/USERNAME/CALENDAR-CODE/. Items in italics need to be changed to match your settings. Provide a name, etc. Click "Next". Your calendar is now syncing with your FreedomBox over Tor. If you have not generated a certificate for your FreedomBox with "Let's Encrypt", you may need to select "Confirm Security Exception" when prompted.
Synchronizing with your Android phoneThere are various Apps that allow integration with the Radicale server. This example uses DAVx5, which is available e.g. on F-Droid. If you intend to use ToDo-Lists as well, the compatible app OpenTasks has to be installed first. Follow these steps for setting up your account with the Radicale server running on your FreedomBox. Install DAVx5 Create a new account on DAVx5 by clicking on the floating + button. Select the second option as shown in the first figure below and enter the base url as (don't miss the / at the end). DAVx5 will be able to discover both CalDAV and WebDAV accounts for the user. Follow this video from DAVx5 FAQ to learn how to migrate your existing contacts to Radicale. Synchronizing contacts Click on the hamburger menus of CalDAV and CardDAV and select either "Refresh ..." in case of existing accounts or "Create ..." in case of new accounts (see the second screenshot below). Check the checkboxes for the address books and calendars you want to synchronize and click on the sync button in the header. (see the third screenshot below) DAVx5 account setup DAVx5 refresh DAVx5 account sync
Advanced Users
Sharing resourcesAbove was shown an easy way to create a resource for a group of people by creating a dedicated account for all. Here will be described an alternative method where two users User1 and User2 are granted access to a calendar. This requires SSH-access to the FreedomBox. create a file /etc/radicale/rights [friends_calendar] is just an identifier, can be any name. The [owner-write] section makes sure that owners have access to their own files edit file /etc/radicale/config and make the following changes in section [rights] Restart the radicale server or the FreedomBox
Importing filesIf you are using a contacts file exported from another service or application, it should be copied to: /var/lib/radicale/collections/user/contact file name.vcf.
Migrating from Radicale Version 1.x to Version 2.xDuring the month of February 2019, radicale in Debian testing was upgraded from version 1.x to version 2.x. Version 2.x is a better version but is incompatible with data and configuration used with 1.x. Automatic upgrade mechanism in FreedomBox, handled by unattended-upgrades does not automatically upgrade radicale to version 2.x due to changes in configuration files. However, FreedomBox version 19.1, which is available on February 23rd, 2019 in testing will perform data and configuration migration to radicale version 2.x. Typical users require no action, this will happen automatically. If for some reason, you need to manually run apt dist-upgrade on your machine, then radicale will be upgraded to 2.x and then FreedomBox will not be able to perform its upgrade (due to upstream project deciding to remove migration tools in radicale 2.x version). To avoid this situation, the following process is recommended if you wish to perform an upgrade. However, if you already happen to perform an upgrade to radicale 2.x without help from FreedomBox, you need to perform data and configuration migration yourself. Follow this procedure: Notes: python-radicale is an old package from radicale 1.x version that is still available in testing. This is a hack to use the --export-storage feature that is responsible for data migration. This feature is not available in radicale 2.x unfortunately. Files ending with .dpkg-dist will exist only if you have chosen 'Keep your currently-installed version' when prompted for configuration file override during radicale 2.x upgrade. The above process will overwrite the old configuration with new fresh configuration. No changes are necessary to the two configuration files unless you have changed the setting for sharing calendars. Note that during the migration, your data is safe in /var/lib/radicale/collections directory. New data will be created and used in /var/lib/radicale/collections/collections-root/ directory. The tar command takes a backup your configuration and data in /root/radicale_backup.tgz in case you do something goes wrong and you want to undo the changes.
Troubleshooting1. If you are using FreedomBox Pioneer Edition or installing FreedomBox on Debian Buster, then radicale may not be usable immediately after installation. This is due to a bug which has been fixed later. To overcome the problem, upgrade FreedomBox by clicking on 'Manual Update' from 'Updates' app. Otherwise, simply wait a day or two and let FreedomBox upgrade itself. After that install radicale. If radicale is already installed, disable and re-enable it after the update is completed. This will fix the problem and get radicale working properly. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/RaspberryPi2.raw.wiki b/doc/manual/en/RaspberryPi2.raw.wiki new file mode 100644 index 000000000..a244c3e3d --- /dev/null +++ b/doc/manual/en/RaspberryPi2.raw.wiki @@ -0,0 +1,43 @@ +== Raspberry Pi 2 Model B == + +{{attachment:raspberrypi2.jpg|Raspberry Pi 2|width=640,height=428}} + +[[https://www.raspberrypi.org/products/raspberry-pi-2-model-b/|Raspberry Pi 2]] (Model B ) is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi Model B+ with much faster processor and more RAM. !FreedomBox images are built and tested for it. + +Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the [[FreedomBox/Manual/QuickStart|Quick Start page]] to access and control your !FreedomBox from network. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] for this hardware are available. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot into !FreedomBox. + +=== Availability === + + * Price: 35 USD + * [[https://www.raspberrypi.org/products/raspberry-pi-2-model-b/|List of official distributors]] + +=== Hardware === + + * Open Hardware: No + * CPU: 900 MHz quad-core ARM Cortex-A7 + * RAM: 1 GB + * Storage: MicroSD card slot + * Architecture: armhf + * Ethernet: 10/100, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: None + +=== Non-Free Status === + + * Non-free blobs required: boot firmware + * !WiFi: Not available + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +Raspberry Pi 2 image is licensed under Creative Commons Attribution-!ShareAlike 4.0 International license by [[https://commons.wikimedia.org/wiki/File:Raspberry_Pi_2_Model_B_v1.1_top_new_%28bg_cut_out%29.jpg|Multicherry]]. diff --git a/doc/manual/en/RaspberryPi3B+.raw.wiki b/doc/manual/en/RaspberryPi3B+.raw.wiki new file mode 100644 index 000000000..ba01fa000 --- /dev/null +++ b/doc/manual/en/RaspberryPi3B+.raw.wiki @@ -0,0 +1,41 @@ +== Raspberry Pi 3 Model B+ == + +{{attachment:raspberrypi3bplus.jpg|Raspberry Pi 3 Model B+|width=640,height=418}} + +[[https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/|Raspberry Pi 3 Model B+]] is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi 3 Model B with better Ethernet and a 5Ghz Wi-Fi. !FreedomBox "stable" and "testing" images are available for Raspberry Pi 3 Model B+. + +Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the [[FreedomBox/Manual/QuickStart|Quick Start page]] to access and control your !FreedomBox from network. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] for this hardware are available. Download the "stable" or "testing" image for Raspberry Pi 3 Model B+. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot into !FreedomBox. + +=== Availability === + + * Price: 35 USD + * [[https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/|List of official distributors]] + +=== Hardware === + + * Open Hardware: No + * CPU: 1.4GHz 64-bit quad-core ARMv8 CPU + * RAM: 1 GB + * Storage: MicroSD card slot + * Architecture: armhf + * Ethernet: 10/100/1000, RJ45 + * !WiFi: 802.11ac but requires non-free firmware, instead use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: None + +=== Non-Free Status === + + * Non-free blobs required: boot firmware + * !WiFi: Requires non-free firmware + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/RaspberryPi3B.raw.wiki b/doc/manual/en/RaspberryPi3B.raw.wiki new file mode 100644 index 000000000..dc0fac6d5 --- /dev/null +++ b/doc/manual/en/RaspberryPi3B.raw.wiki @@ -0,0 +1,44 @@ +## page was renamed from FreedomBox/Hardware/RaspberryPi3 +== Raspberry Pi 3 Model B == + +{{attachment:raspberrypi3.jpg|Raspberry Pi 3 Model B|width=640,height=421}} + +[[https://www.raspberrypi.org/products/raspberry-pi-3-model-b/|Raspberry Pi 3 Model B]] is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi 2 Model B with a 64-bit processor and on-board Wi-Fi. !FreedomBox "stable" and "testing" images are available for Raspberry Pi 3 Model B. + +Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the [[FreedomBox/Manual/QuickStart|Quick Start page]] to access and control your !FreedomBox from network. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] for this hardware are available. Download the "stable" or "testing" image for Raspberry Pi 3 Model B. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot into !FreedomBox. + +=== Availability === + + * Price: 35 USD + * [[https://www.raspberrypi.org/products/raspberry-pi-3-model-b/|List of official distributors]] + +=== Hardware === + + * Open Hardware: No + * CPU: 1.2GHz 64-bit quad-core ARMv8 CPU + * RAM: 1 GB + * Storage: MicroSD card slot + * Architecture: armhf + * Ethernet: 10/100, RJ45 + * !WiFi: 802.11n but requires non-free firmware, instead use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: None + +=== Non-Free Status === + + * Non-free blobs required: boot firmware + * !WiFi: Requires non-free firmware + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +Raspberry Pi 3 image is licensed under Creative Commons Attribution-!ShareAlike 4.0 International license by [[https://commons.wikimedia.org/wiki/File:Raspberry_Pi_3_Model_B.png|Herbfargus]]. diff --git a/doc/manual/en/RaspberryPi4B.raw.wiki b/doc/manual/en/RaspberryPi4B.raw.wiki new file mode 100644 index 000000000..bdb219ef0 --- /dev/null +++ b/doc/manual/en/RaspberryPi4B.raw.wiki @@ -0,0 +1,54 @@ +== Raspberry Pi 4 Model B == + +{{attachment:raspberrypi4b.jpg|Raspberry Pi 4 Model B|width=640,height=424}} + +[[https://www.raspberrypi.org/products/raspberry-pi-4-model-b/|Raspberry Pi 4 Model B]] is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi 3 Model B+ with better processor and ability to drive multiple displays. A !FreedomBox "testing" image is available for Raspberry Pi 4 Model B. + +Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the [[FreedomBox/Manual/QuickStart|Quick Start page]] to access and control your !FreedomBox from network. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +Before downloading and using !FreedomBox you need to ensure that latest [[https://github.com/pftf/RPi4|Raspberry Pi 4 UEFI Firmware]] is available on an SD card. See [[https://github.com/pftf/RPi4#installation|instructions]] on how to create an SD card with this firmware. The gist is that you download the firmware zip files, erase the SD card, create a FAT partition, unzip the files to SD card and finally insert the SD card into the board. + +!FreedomBox images meant for all "arm64" hardware work well for this device. Currently only "testing" images work and "stable" images. However, the firmware must present in SD card. This means that !FreedomBox itself must be present on a different disk such as a USB flash disk or USB SATA disk. Follow the instructions on the download page to create a !FreedomBox USB disk and boot the device. These images also work well for USB 2.0 and USB 3.0 disk drives and the process for preparing them is same as for an SD card. + +An alternative to downloading these images is to install Debian on the device and then install !FreedomBox on it. + +=== Build Image === + +!FreedomBox images for this hardware can be built using [[FreedomBox/Maker|Freedom Maker]]. Use the target 'arm64' with distribution 'testing' to build the image for this board. + +=== Availability === + + * Price: 35 USD (2GB RAM) + * Price: 50 USD (4GB RAM) + * Price: 75 USD (8GB RAM) + * [[https://www.raspberrypi.org/products/raspberry-pi-4-model-b/|List of official distributors]] + +=== Hardware === + + * Open Hardware: No + * CPU: Broadcom BCM2711 SOC (4x Cortex-A72``@1.5GHz) + * RAM: 2 GB or 4GB or 8 GB + * Storage: MicroSD card slot + * USB: 2x USB 2.0, 2x USB 3.0, USB Type-C power supply + * Architecture: arm64 + * Ethernet: 10/100/1000, RJ45 + * !WiFi: 802.11ac but requires non-free firmware, instead use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: None + +=== Non-Free Status === + + * Non-free blobs required: boot firmware + * !WiFi: Requires non-free firmware + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +Raspberry Pi 4 Model B image is licensed under Creative Commons Attribution-!ShareAlike 4.0 license by [[https://commons.wikimedia.org/wiki/File:Raspberry_Pi_4_Model_B_-_Top.jpg|Michael Henzler]]. diff --git a/doc/manual/en/ReleaseNotes.raw.wiki b/doc/manual/en/ReleaseNotes.raw.wiki new file mode 100644 index 000000000..e4f843c15 --- /dev/null +++ b/doc/manual/en/ReleaseNotes.raw.wiki @@ -0,0 +1,1319 @@ +<> + +Please check as well [[FreedomBox/Contribute|contribution]], [[FreedomBox/ProgressCalls|progress calls]], and [[FreedomBox/TODO|TODOs]] related pages. + +For more technical details, see the [[https://salsa.debian.org/freedombox-team/freedombox/blob/master/debian/changelog|FreedomBox changelog]]. + +## BEGIN_INCLUDE + += Release Notes = + +The following are the release notes for each !FreedomBox version. + +== FreedomBox 20.14 (2020-09-15) == + +=== Highlights === + + * apache: Disable mod_status (CVE-2020-25073) + * bepasty: New app for file upload and sharing + * matrixsynapse: Allow upgrade to version 1.19 + +=== Other Changes === + + * apps: Remove Coquelicot + * backups: Make app available by default + * debian: Add newline to end of /var/lib/plinth/firstboot-wizard-secret + * debian: Don't show first wizard secret on command line + * debian: Temporarily revert source package rename + * diagnostics: Prevent showing running status on diagnostics menu item + * doc: Add moinmoin wiki parser + * doc: Fix wiki links in manual + * ejabberd, mumble, wireguard: Update Apple app links + * ejabberd: Use new ruamel.yaml API and allow duplicate keys + * firewall: Show port forwarding info contextually + * firewall: Show port forwarding info in tabular format + * gitweb: Add ability to change default branch + * gitweb: Fix enable auth webserver component on app init + * help, networks: Clarify i18n different contexts for "Manual" + * i18n: Mark strings missed for translation + * ikiwiki: Validate a path when deleting wiki or blog + * js: Don't show running status on buttons pulled to right + * jsxc, sharing, wireguard: Add 'Learn more...' link for help pages + * locale: Update translations for Danish, Dutch, Galician, German, Hungarian, Italian, Spanish, Swedish, Russian, Turkish + * matrixsynapse: Perform a one time conversion to new config format + * matrixsynapse: Rename Riot to Element + * matrixsynapse: Use conf.d snippets + * radicale: Remove code to handle 1.x + * radicale: Stop service during backup and restore + * samba: Hide common system partitions + * snapshots: Clarify description for disabling yearly snapshots + * ssh: Disallow managing keys for the root user + * storage: Fix expanding partitions on GPT partition tables + * upgrades, security: Update the messages describing backports + * upgrades: Add first boot step to configure backports + * upgrades: Change backports activation message wording + * upgrades: Display correct backports info for unstable + * upgrades: security: Don't use technical term 'backports' in UI + * wireguard: Remove hardcoded Windows client version + +== FreedomBox 20.13 (2020-07-18) == + +=== Highlights === + + * upgrades: Update apt cache before manual update + * minidlna: Do not expose statistics over public web + +=== Other Changes === + + * backups: Allow remote repository usernames to start with numbers + * locale: Update translations for Chinese (Simplified), Hungarian, Kannada, Norwegian Bokmål, Spanish, Swedish + * security: Move backports notice to security page + * upgrades: Add button to activate backports if needed for current release + * debian: Rename source package from plinth to freedombox + +== FreedomBox 20.12.1 (2020-07-05) == + + * cfg, frontpage: Ignore errors while reading config and shortcuts + * locale: Update translations for French, German, and Norwegian Bokmål + +== FreedomBox 20.12 (2020-06-29) == + +=== Highlights === + + * apt: Recover from errors before installing apps or updating system + * apache: Add strict content security policy, sandbox and other security headers + * storage: Allow ejecting SATA disks + * configuration: Allow changes using .d drop-in files + +=== Other Changes === + + * configuration: Move default configuration into source code + * configuration: Read from multiple locations in /etc/ and /usr/share/ + * debian: Add ssl-cert and nscd as proper dependencies + * frontpage: Allow adding shotcuts using .d drop-in files + * frontpage: Read shortcuts from multiple locations in /etc/, /usr/share and /var/lib + * locale: Update translations for Czech, Danish, French, German, Russian, Spanish, Swedish, Telugu, Turkish + * storage: Automount system disks without partition table but ignore all loopback devices + * storage: Allow ejecting SATA disks + * storage: Show only physical disks and not all mount points + * upgrades: Skip enabling backports on testing and unstable + * upgrades: Show more logs + * ui: Show a spinner and disable button on form submit + +== FreedomBox 20.11 (2020-06-15) == + +=== Top Highlight === + + * locale: Add new translation for Arabic (Saudi Arabia) + +=== Other Changes === + + * javascript: Remove use of Turbolinks library + * locale: Update translations for French, Norwegian Bokmål, German, Swedish, Polish, and Spanish + * matrixsynapse: Handle upgrade to versions 1.15.x + * upgrades: Avoid manual update interruption when upgrading freedombox package + * upgrades: Don't enable backports on Debian derivatives + +== FreedomBox 20.10 (2020-06-01) == + +=== Top Highlights === + + * pagekite: Fix expired certificates causing connection failures + * tor: Fix problems with running a relay + +=== Other Changes === + + * backups: Add optional field - Name + * cockpit: Promote for advanced storage/firewalld/networking ops + * firewall: Don't show tun interface in internal zone warning + * firewall: Mention that internal services are available over VPN + * ikiwiki: Enable 'attachment' plugin by default + * locale: Update translations for Spanish, French, Russian, Norwegian Bokmål, Czech, Hungarian, and Greek + * minidlna: Add link to manual page + * minidlna: Fix internationalization for name of the app + * mldonkey: Add app to freedombox-share group + * openvpn: Use app toggle button and common app view + * radicale: Fix link in description to clients + * samba: Add clients information + * templates: Fix setup state check + * users: Avoid error when user's groups cannot be parsed + +== FreedomBox 20.9 (2020-05-18) == + +=== Top Highlights === + + * performance: Add app for system monitoring + * upgrades: Restart services and system when needed after upgrades + * System restart will happen at 02:00 local time + +=== Other Changes === + + * bind: Add service alias for bind9 -> named + * firewall: Reload firewalld so it works with newly installed services + * first_setup: Fix regression with logo not showing + * locale: Update translations for Norwegian Bokmål, German, Swedish, Spanish, and Russian + * mediawiki: Stop jobrunner during backup/restore + * minidlna: Stop service during backup/restore + * mumble: Stop service during backup/restore + * package: Fix error log when checking if package manager is busy + * performance: Launch the Cockpit graphs directly if possible + * quassel: Fix stopping service during backup/restore + * quassel: Use systemd sandboxing features + * samba: Change description to Network File Storage + * snapshot: Fix issues with restore and delete + * snapshot: Set as essential module + * storage: Auto-mount disks, notify of failing disks + * tor: Fix stopping service during backup/restore + +== FreedomBox 20.8 (2020-05-04) == + + * syncthing: Add service to freedombox-share group + * users: When adding service to sharing group, only restart if already running + * datetime: Ignore time synchronization service in containers and virtual machines + * minidlna: Make app installable inside unprivileged container + * web_server: Suppress warnings that static directories don't exist + * debian: Remove unused timer + * static: Use SVG logo during first wizard welcome step + * static: Reduce the size of the background noise image + * setup.py: Don't install/ship .po files + * static: Don't ship visual design file and unused images + * all: Update links to repository and project page + * coturn: Add app to manage Coturn TURN/STUN server + * mediawiki: Partial fix for installing on testing + * datetime: Disable diagnostics when no tests are available + * data: Print hostname and IP addresses before console login + * snapshot: Fix message when not available + * snapshot: Fix title + * mumble: Add Mumla to the list of clients + * locale: Update translations for Spanish, Telugu, Russian, German, French, and Swedish + +== FreedomBox 20.7 (2020-04-20) == + + * matrixsynapse: Fix initial installation and upgrade from backports + * gitweb: Improve error handling when creating repository + * locale: Update translations for French, Serbian, and Telugu + +== FreedomBox 20.6.1 (2020-04-11) == + + * users: Restore line of help text that was accidentally dropped + * debian: Add firmware-ath9k-htc to Recommends + * gitweb: Use proper ellipsis char when showing clone progress + * locale: Update translations for Norwegian Bokmål, German, French, Portuguese, Italian, Russian, and Serbian + +== FreedomBox 20.6 (2020-04-06) == + + * app: Ensure toggle buttons work independently of configuration form + * networks, monkeysphere: Make styling more specific to avoid interference + * syncthing: Update description to mention 'syncthing' group + * radicale: Support upgrade up to any 2.x version + * packages: Hold freedombox package during package installs + * users: Add component for managing users and groups + * app: Fix grammar in developer documentation string + * ikiwiki: Disable public edits of blog pages + * ikiwiki: Add moderation of blog comments + * firewalld: Support upgrade up to any 0.8.x version + * infinoted: Fix permissions of sync directory + * locale: Added Serbian translation + * locale: Update translations for Russian, French, German, Czech, Italian, Hindi, Telugu, and Spanish + +== FreedomBox 20.5.1 (2020-03-26) == + + * networks: Update label wording in topology form + * jsxc: Fix issue with serving static files + * debian: Separate binary packages for each language manual + * locale: Update translations for Norwegian Bokmål and German + +== FreedomBox 20.5 (2020-03-23) == + + * app: Fix description block in app header + * pagekite: Don't signal new domain on init if app is disabled + * pagekite: Don't attempt to notify about domain if app is disabled + * pagekite: Remove app enabled checking from getting configuration + * pagekite: On enable/disable, add/remove domain from names module + * pagekite: Fix an error message in custom services form + * matrixsynapse: Handle release of matrix-synapse 1.11 + * setup: Fix regression to force-upgrade caused by Info changes + * pagekite: Don't allow non-unique custom services + * index: Reintroduce clients button in front page + * upgrades: Don't ship apt backport preferences file + * upgrades: Use internal scheduler instead of systemd timer + * shadowsocks: Change default configuration + * shadowsocks: Fix incorrect setting of state directory + * shadowsocks: When editing configuration, don't re-enable + * mediawiki: Don't allow anonymous edits + * names: Fix Local Network Domain is not shown + * shadowshocks: Fix setting configuration on Buster + * locale: Update translations for Swedish, Spanish, and French + +== FreedomBox 20.4 (2020-03-09) == + + * apache: Handle transition to php 7.4 + * app: Fix showing app name in port forwarding information + * apps: Do not show status block if service is running + * i2p: New style app page layout + * locale: Update translations for French, Telugu, Spanish, and Swedish + * networks: Add first boot step for network topology wizard + * networks: Add form for network topology + * networks: Don't show router wizard if not behind a router + * networks, firewall: Support newer version of policykit + * networks: Fixes for networks wizards access and user experience + * networks: If topology wizard is skipped, skip router wizard too + * networks: Show router wizard before Internet connection type wizard + * plinth: Increase sqlite busy timeout from default 5s to 30s + * quassel: Fix unable to disable application without choosing a domain name + * shadowsocks: Move user settings to state directory + * storage: Directory selection form improvements + * transmission: Allow to submit download directory if it is creatable + * upgrades: Clean apt cache every week + * views: Improve template security + +== FreedomBox 20.3 (2020-02-24) == + + * apps: Update style for toggle button + * apps: Drop border shadow for app icon in mobile view + * apps: Show short description as secondary title + * apps: Remove css filters and glow from app icons + * cards: Remove the transition delay on hover effect + * system: Implement new style for cards + * framework: Generate secret key (existing sessions will get logged out) + * framework: Cleanup expired sessions every week + * networks: Add setting for internet connection type + * networks: Ask about internet connection type during setup + * shadowsocks: Fix shadowsocks not able to start + * jsxc: Bypass issue with stronghold to get the app working again + * monkeysphere: Fix regression with reading Apache configuration + * help: Fix attribute on download manual button + * firewall: Improve speed of some operations using DBus API + * css: Add missing license identifier on some CSS files + * deluge: Use safer method for editing configuration + * deluge: More reliable initial configuration setup + * samba: Add link to manual page + * searx: Update search engines for 0.16.0 + * openvpn: Fix spelling for Tunnelblick + * bind: Show served domains + * Update translations for German, Swedish, Italian, Spanish, Norwegian Bokmål, Hungarian, Polish, and French + +== FreedomBox 20.2 (2020-02-10) == + + * networks: Support virtual Ethernet (veth) devices + * diagnostics: Show firewall service status + * storage: Show disks if !FreedomBox is running in an unprivileged container + * service: Stop service not before but after disabling it + * users: Use more precise username validation + * sso, users: Turn off autocapitalization on the username field + * help: Fix anchor hidden under navbar + * searx: Fix installation issue for 0.16.0 + * firewall: Show Run Diagnostics button in app + * glib: Introduce method to schedule an operation at regular intervals + * notification: Show a drop down from main navbar for notifications + * storage: Show low disk space warning using notifications API + * upgrades: Show notification when !FreedomBox is updated + * security: Add Sandbox Coverage to report page + * matrixsynapse: Enable systemd sandboxing + * locale: Update translations for Telugu, French, Norwegian Bokmål, German, Spanish, and Swedish + +== FreedomBox 20.1 (2020-01-27) == + + * deluge: Allow to set a download directory + * deluge: Fix installation failure on slow machine + * storage: Make external disk mounts accessible to other users + * gitweb: Add link to the manual page + * style: Fix incorrect margins for containers in mobile view + * style: Fix responsiveness for app header + * network: Fix activating connections that don't have real devices + * wireguard: Add !WireGuard VPN app + * networks: Add router configuration page + * networks: Add first boot step for router config helper + * bind: Enable sandboxing for bind service + * locale: Updated translations for Dutch, Norwegian Bokmål, German, Spanish, Swedish, French, and Greek + +== FreedomBox 20.0 (2020-01-13) == + + * samba: Improve speed of actions + * deluge: Manage deluged service and connect automatically from web interface + * openvpn: Enable support for communication among all clients + * storage: Ignore errors resizing partition during initial setup + * storage: Make partition resizing work with parted 3.3 + * debian: Add powermgmt-base as recommended package + * openvpn: Enable IPv6 for server and client outside the tunnel + * networks: Fix crashing when accessing network manager D-Bus API + * mediawiki: Use a mobile-friendly skin by default + * mediawiki: Allow admin to set default skin + * matrixsynapse: Allow upgrade to 1.8.* + * security: Add explanation of sandboxing + * Update translations for Greek, German, Swedish, Hungarian, Norwegian Bokmål, and French + +== FreedomBox 19.24 (2019-12-30) == + + * app: Fix !JavaScript doesn't run on first visit + * samba: Add private shares + * firewall: Support upgrading firewalld to 0.8 + * deluge: Add systemd sandboxing features + * infinoted: Add systemd sandboxing features + * storage: Add systemd sandboxing features to udiskie service + * upgrades: Add systemd sandboxing features to repository setup service + * security: List whether each app is sandboxed + * mediawiki: Avoid delay in update script + * diagnostics: Use new component based API for all diagnostic tests + * minidlna: Fix showing clients information + * mediawiki: Fix problem with session cache failing logins + * locale: Update translations for French, German, Swedish, Greek, Hungarian, Norwegian Bokmål, and Dutch + +== FreedomBox 19.23 (2019-12-16) == + + * minidlna: New app for MiniDLNA (Simple Media Server) + * apps: Show app icons in app pages + * apps: Implement responsive layout for app pages + * samba: Recursively set open share directory permissions + * transmission: Add directory selection form + * mumble: Add option to set !SuperUser password + * cockpit: Extend apps description with access info + * cockpit: Add list of valid urls to access the app + * Update translations for French, German, Spanish, Portuguese, and Swedish + +== FreedomBox 19.22 (2019-12-02) == + + * samba: Add new app for Samba file sharing + * pagekite: Remove tabs in the configuration page + * openvpn: Fix text with manual link + * pagekite: Show existing services only if there are any + * pagekite: Move Custom Services under Configuration + * pagekite: Use the new app toggle button + * openvpn: Add client apps + * backups: Fix title not appearing + * diagnostics: Don't run on disabled modules + * apps: Remove link to webapps in app descriptions + * interface: Fix error with app toggle input + * templates: Add toolbar for apps + * toolbar: Move diagnostics button into dropdown menu + * ssh: Fix Avahi SFTP service file + * diagnostics: Fix IPv6 failures + * matrix-synapse: Fix installation of 1.5 from buster-backports + * app: Fix javascript constant redeclaration error + * ikiwiki: Move the create button to manage section + * gitweb: Move create button into manage section + * networks: Move actions button into connection section + * users: Move create button into users section + * locale: Update translations for French, German, and Swedish + +== FreedomBox 19.21 (2019-11-18) == + + * gitweb: Allow to import from a remote repository + * interface: Disable turbolinks on links that don't point to /plinth/... + * backups: Show proper error when SSH server is not reachable + * tor: Rename "Hidden Service" to "Onion Service" + * ejabberd: Handle case where domain name is not set + * tahoe: Mark Tahoe-LAFS as an advanced app + * searx: Set safe_search to Moderate by default + * backups: Make verify ssh host page string translatable + * backups: Simplify SSH fingerprint verification command + * doc: Fix unavailability of manual images + * tor: Fix port diagnostics by correcting port data type + * tor: Expect obfs service to be also available on IPv6 + * tor: Listen on IPv6 for !OrPort + * clients: implement launch button feature + * apps: Implement toggle button in apps pages + * Update translations for German, Hungarian, Swedish, Norwegian Bokmål, French, Polish + +== FreedomBox 19.20 (2019-11-04) == + + * doc: Add Spanish manual + * ssh: Add option to disable password authentication + * sharing: Fix wrong links on Apache2 directory index page + * gitweb: Set correct access rights after enabling application + * gitweb: Fix links leading to blank page + * gitweb: Set proper access after restoration of a backup + * snapshot: Sort snapshot list from newest to oldest + * infinoted: Add missing manual page link + * backups: Fix typo + * Update translations for German, Spanish, Swedish, Czech, French, Norwegian Bokmål, Hungarian + +== FreedomBox 19.19 (2019-10-21) == + + * gitweb: New app for simple git hosting + * ikiwiki: Allow full Unicode text in wiki/blog title names + * users: reload Apache2 to flush LDAP cache after user operations + * ssh: Show server fingerprints in SSH page + * frontpage: Show public shortcuts to all users regardless of group + * ikiwiki: Remove extra create button when no wiki/blog is present + * quassel: Add Let's Encrypt component for certificates + * Update translations for Czech, French, Bulgarian, Dutch, German, and Norwegian Bokmål + +== FreedomBox 19.18 (2019-10-07) == + + * diagnostics: Ensure that exceptions are reported as failures + * users: Rearrange UI to match with other apps + * upgrades, ikiwiki, networks, backups: Replace page tabs with buttons + * dynamicdns, i2p, pagekite, snapshot: Cleanup page templates + * deluge: Support deluge 2 by starting it properly + * minetest: Remove mod-torches no longer available in testing/unstable + * security: Add past vulnerabilities count, move report to new page + * Update translations for Spanish, Norwegian Bokmål, German + +== FreedomBox 19.17 (2019-09-23) == + + * firstboot: Add new help menu to firstboot navbar + * firstboot: Hide left menu during first boot as intended + * Update translations for Chinese (Simplified) and Czech + * Fix tests for letsencrypt and tor + +== FreedomBox 19.16 (2019-09-09) == + + * backups: Allow adding backup repositories on multiple disks + * help: Add buttons for contribute, support, and feedback + * action_utils: Workaround problem with setting debconf answers + * views: Fix failure in redirecting from language selection page + * manual: Move PDF download link to HTML manual page + * help: Convert help icon in the navbar to dropdown + * ejabberd: Fix listen port configuration for ejabberd 19.x + * cockpit, ejabberd: Prevent restart on freedombox startup + * ejabberd: Perform host/domain name operations only when installed + * logging: Improve formatting and reduce noise + * translations: Update Hungarian, German, Italian, French, and Norwegian Bokmål + +== FreedomBox 19.15 (2019-08-26) == + + * security: Hide vulnerability table by default + * names: Perform better layout of domain names table on small screens + * cockpit: Apply domain name changes immediately + * ejabberd: Prevent processing empty domain name + * config: Send hostname change signal only after fully processing it + * letsencrypt: Don't try to obtain certificates for .local domains + * avahi: Expose .local domain as a proper domain + * cockpit: Make essential and install by default + * tt-rss: Force upgrade to 18.12-1.1 and beyond + * updates: Allow matrix-synapse 1.3 to be installed for buster users + * javascript: Don't resubmit when refreshing the page + * storage: Fix regression with restoring backups with storage + * matrix-synapse: Use recommended reverse proxy configuration + * Update translations for German, Hungarian, and Norwegian Bokmål + +== FreedomBox 19.14 (2019-08-12) == + + * storage: Handle all device paths during eject + * storage: Fix incorrect internationalization when throwing an error + * upgrades: Use collapsible-button style for logs + * firewall: Allow automatic upgrade to 0.7.x + * upgrades: Handle release info change + * frontpage: Fix regression with loading custom shortcuts + * names: Add dynamic domain name + * names: Add button to configure each type of name + * names: Update page layout for clearer presentation + * names: Introduce new API for domain name handling + * api: Fix regression with listing only enabled apps in mobile app + * Update translations for Czech, Hungarian, French, Chinese (Simplified), Turkish, Polish, and Norwegian Bokmål + +== FreedomBox 19.13 (2019-07-29) == + + * backups: Make UI more consistent with other apps + * backups: Make backup location tables collapsible + * Updated translations for Chinese (Simplified), German, and Norwegian Bokmål + * help: Show security notice when backports are in use + * security: Show vulnerability counts + +== FreedomBox 19.12 (2019-07-22) == + + * sharing: Allow directories to be publicly shared + * backups: Add option to select/deselect all apps for backup or restore + * dbus: Allow plinth user to own !FreedomBox DBus service + * letsencrypt: Simplify renewal hooks implementation + * cockpit: Don't handle domains if app is not installed + * dynamicdns: Send domain added signal properly during init + * ejabberd: Backup and restore TLS certificates + * Started new Galician translation on Weblate + * Updated translations for Czech, Norwegian Bokmål, Hungarian, Spanish, Telugu, Chinese (Simplified), German, Turkish, and Russian + +== FreedomBox 19.2.2 (2019-07-17) == + +This release does not contain any functional changes, but fixes test failures when building the package. + +== FreedomBox 19.2.1 (2019-07-09) == + +This is a bugfix release for 19.2. + + * dbus: Allow plinth user to own !FreedomBox DBus service + +== FreedomBox 19.11 (2019-07-08) == + + * backups: Fixes to issues while adding SSH remotes: + * Improve UX of adding ssh remote + * Avoid creating duplicate SSH remotes + * Fix issue with repository not being initialized + * Verify SSH hostkey before mounting + * Allow SSH directory paths with : in them + * Require passphrase for encryption in add repository form + * Don't send passphrase on the command line + * Un-mount SSH repositories before deleting them + * matrixsynapse: Fix missing translation mark + * Started new Greek translation on Weblate + * Updated translations for Chinese (Simplified), Hungarian, Spanish, and Russian + +== FreedomBox 19.10 (2019-06-24) == + + * syncthing: Open firewall ports for listening and discovery + * radicale: Workaround issue with creating log directory + * Update translations for Turkish, German, Czech, Norwegian Bokmål, and Portuguese + * Introduce components for firewall, webserver, uwsgi, and daemons + +== FreedomBox 19.9 (2019-06-10) == + + * config: Add option to show advanced apps, which are hidden by default + * monkeysphere: Hide by default + * searx: Add option to allow public access to the application + * Introduce component architecture for apps, with components for menus and shortcuts + * Start new translation for Bulgarian + * Update translations for Turkish and Norwegian Bokmål + +== FreedomBox 19.8 (2019-05-27) == + + * Switch to using SVG icons for all apps. + * Updated translations for Czech, Norwegian Bokmål, Hungarian, German, Turkish, and Spanish. + +== FreedomBox 19.7 (2019-05-13) == + + * i2p: Include default favorites. + * Separate enabled and disabled apps. + * Display port forwarding info for apps. + * Added Slovenian translation. + * Updated translations for Dutch, German, Hungarian, Norwegian Bokmål, Polish, Portuguese, Telugu. + +== FreedomBox 19.6 (2019-04-29) == + + * i2p: Enable new application for I2P Anonymity Network. + * Updated translations for Czech, German, Norwegian Bokmål, and Turkish. + * letsencrypt: Provide link to configure domain if not configured. + * firewall: Show port numbers and types. + +== FreedomBox 19.5 (2019-04-15) == + + * storage: Use more reliable method to list disks and disk space usage. + * Updated translations for Russian and German. + +== FreedomBox 19.4 (2019-04-01) == + + * clients: Open web app in a new browser tab + * matrix-synapse: Change client diagnostics url + * minetest: Fix duplicate domain names being displayed in UI + * storage: Do not show an eject button on /boot partitions + * letsencrypt: Call letsencrypt manage_hooks with correct arguments + * dynamicdns: Install module by default + * storage: Don't check type of the disk for / and /boot + * storage: Don't log error when checking if partition is expandable + * Updated translations for Norwegian Bokmål, Czech, German, Hungarian, Spanish, German, and Russian. + +== FreedomBox 19.3 (2019-03-18) == + + * UI: Move tabs below descriptions. + * firewall: Style heading + * names: Add description + * pagekite: Change heading text + * ikiwiki: Consistent styling for delete warning page + * main: Show service version in logs + * setup: Organize data files into various apps + * Updated translations for Czech, Hungarian, Norwegian Bokmål, Spanish, German, French, Italian, and Turkish. + +== FreedomBox 19.2 (2019-03-02) == + + * config: Fix Ikiwiki entries not showing up as default apps + * config: Migrate default app configuration to new conf file + * config: Rename Default App to Webserver Home Page + * config: Add option to use Apache's default home page as home page + * config: Fix error when setting JSXC as the home page + * Disable Coquelicot for Buster release + * matrix-synapse: Fix LDAP login issue + * config: Revert changes in freedombox.conf to avoid conffile prompt + * openvpn: Migration from easy-rsa 2 to 3 for existing installations + * tor: Use fixed 9001 port for relaying + * package: Implement identifying packages that need conffile prompts + * setup: Trigger force upgrade for app that implement it + * bind: Handle conffile prompt during upgrade + * apache: Pre-enable necessary apache modules + * apache: Use cgid module instead of cgi + * openvpn: Make frontpage shortcut appear after an upgrade + * openvpn: Work around firewalld bug 919517 + * firewalld: Implement upgrading from 0.4.x to 0.6.x + * ttrss: Implement upgrade from 17.4 to 18.12 + * radicale: Add description of web interface + * ttrss: Add backup support + * security: Migrate access config to new file + * Updated translations for Czech, Hungarian, Norwegian Bokmål, Spanish, German, Telugu. + +== FreedomBox 19.1 (2019-02-14) == + + * radicale: Increment module version to trigger upgrade handling + * radicale: Remove obsolete diagnostics + * radicale: Fix server URLs in client info + * Updated translations for Czech, Norwegian Bokmål, and Spanish. + * setup: Add option to handle configuration prompts during install + * radicale: Simplify upgrading to newer packages + * matrixsynapse: Use Let's Encrypt certificates + +== FreedomBox 19.0 (2019-02-09) == + + * mldonkey: Add some more clients to the module page + * mldonkey: Add to the description the three available front-ends + * monkeysphere: Fix handling of multiple domains and keys + * monkeysphere: Fix regression with reading new apache domain config + * apache: Switch to mod_ssl from mod_gnutls + * mldonkey: Enable app + * upgrades: Fix priority for buster-backports version + * upgrades: Fix premature adding of buster-backports sources + * Updated translations for Czech, German, and Spanish + * Switched to a new version number scheme: YY.N + * YY is the year of release. + * N is the release number within that year. + +== Version 0.49.1 (2019-02-07) == + + * ui: Fix regression with configure button in home page. + * backups: Rename 'Abort' buttons to 'Cancel'. + * backups: Use icon for add repository button. + * backups: Move subsubmenu below description. + * backups: Add title and description to other pages. + * backups: Add link to manual page. + * backups: Fix styling for upload size warning. + * backups: Increase timeout for SSH operations to 30 seconds. + * letsencrypt: UI: Fix checkbox disabling. + * datetime: Switch from chrony to systemd-timesyncd. + * Updated translations for Czech, Norwegian Bokmål, and Spanish. + +== Version 0.49.0 (2019-02-05) == + + * security: Update javascript for Content Security Policy. + * help: Use correct package to determine available version. + * repro: Disable app due to issues with Debian package. + * ui: Fix regression with card icon style in front page. + * js: Support full librejs compatibility. + * js: Remove javascript license link from footer. + * backups: Remove incorrectly set buffer size during download. + * backups: Fix incomplete download archives. + * backups: Improve performance of backup download. + * radicale: Handle migration from 1.x to 2.x. + * datetime: Switch from ntp to chrony. + * backports: Add buster-backports to apt sources list. + * Updated translations for Czech, Norwegian Bokmål, and Hungarian. + +== Version 0.48.0 (2019-01-28) == + + * Updated translations for Czech, Hungarian, German, and Norwegian Bokmål. + * UI improvements: + * Fix top margin for content containers. + * Fix setting width of card-list at various page sizes. + * Show help nav item text when navbar is collapsed. + * Hide restart/shutdown items when navbar is collapsed. + * Compact pages on extra small screen sizes. + * Backups improvements: + * Add backup/restore support for syncthing and openvpn. + * Upgrade apps before restoring them + * Fix showing not-installed apps in create backup page + * Automatically install required apps before restore. + * Add a loader to the restore button to indicate progress. + * Serve default favicon for apps that don't provide one. + * radicale: Fix issue with configuration changes not applying. + * storage: Fix false error message in log when visiting home page. + * infinoted: Handle timeout issue when stopping daemon during setup. + * matrix-synapse: Fix startup error caused by bind_address setting. + * radicale: Avoid changes to conffile for radicale 2.x. + * help: Fix showing status logs when an error occurs. + * fail2ban: Enable bans for apache auth failures. + * mldonkey: Initial work on new module for the eDonkey network. + * Not available yet, due to bug in package. + +== Version 0.47.0 (2019-01-14) == + + * Show Gujarati in the list of languages. + * Replace glyphicons with forkawesome icons. + * Snapshots: + * Change configuration to avoid filling up disk. + * Handle "Config in use" error. + * Update descriptions and configuration options. + * Firewall: Fix issue with transition from iptables. + * Security: Switch to Argon2 password hash. + * Cockpit: Add link to manual page and update description. + * Radicale: Add initial support for radicale 2.x. + * Setup: + * Handle showing setup page after app completes installation. + * Optimize installation in-progress checks and refresh time. + +== Version 0.46.0 (2018-12-31) == + + * Updated translations for Czech, German, Spanish, Ukrainian, and Norwegian Bokmål. + * Use systemd journal for logging. + * Rename plinth binary package to "freedombox", and merge freedombox-setup package into it. + +== Version 0.45.0 (2018-12-17) == + + * Storage: Merge list of removable media into existing table. + * Backups: Allow remote backups to SSH servers using sshfs. + * Backups: Removed asking for backup archive name. + * Automatically handle future versions of PHP. + * Updated translations for Hungarian, Czech, Spanish, Chinese (Simplified), Italian, Norwegian Bokmål, French, and German. + +== Version 0.44.0 (2018-12-03) == + + * UI: Add card style and gray noise background to apps pages. + * UI: Fix distortion of the client apps buttons. + * ejabberd: Handle BOSH port change from TCP 5280 to 5443. + * Minetest: Update mods list to available Debian packages. + * Firewall: Use nftables instead of iptables. + * Snapshots: Fix default snapshot listing. + * Snapshots: Show description above either tab. + * Snapshots: Allow snapshots to be selected for deletion. + * Translations: Updated Czech, Norwegian Bokmål, Spanish, German, and Portuguese. + +== Version 0.43.0 (2018-11-19) == + + * Backups improvements: + * Allow backups to be downloaded directly, without export step. + * Restore directly from uploaded backup. + * Avoid error for apps with no data to backup. + * Show free disk space on upload and restore page. + * Do not limit maximum upload size. + * openvpn: Migrate to easy-rsa 3 and fix setup issues. + * Make single sign-on tickets valid for 12 hours. + * Use consistent terminology for updates. + * Updated translations for Czech and Portuguese. + +== Version 0.42.0 (2018-11-05) == + + * Fix wrong color in mobile menu + * snapshot: Fix broken snapshot management after snapper update + * Enable backup/restore for tor, upgrades, monkeysphere, letsencrypt, tahoe + * monkeysphere: Handle importing new OpenSSH format keys + * udiskie: unmount drive as superuser + * Updated translations for Telugu, Indonesian, and Italian + +== Version 0.41.0 (2018-10-22) == + + * Enable backup/restore for datetime, deluge, avahi, backups, bind, security, snapshot, ssh, firewall, diagnostics, names, power, and storage. + * snapshot: Fix issue with setting configuration. + * backups: Fix backup archives ownership issue. + * backups: Fix issue with showing exports from disks without labels. + * backups: Don't rely on disk labels during export/restore. + * backups: Fix downloading extracted archive files. + * Updated translations for Norwegian Bokmål, French, Russian, and Spanish. + +== Version 0.40.0 (2018-10-08) == + + * Backups + * Enable backup/restore for mumble, privoxy, roundcube, searx, jsxc, coquelicot, transmission, quassel, shadowsocks, sharing, pagekite, and cockpit. + * Allow backup archives to be downloaded/uploaded through browser. + * mediawiki: Backup/restore settings as well as data. + * User Interface + * Change card text style and position. + * Change maximum cards per row. + * Add tint effect on card icons under "Apps". + * mediawiki: Run update script for 1.31 upgrade. + * customization: Show custom shortcuts on frontpage. + * Updated translations for Norwegian Bokmål, Portuguese, Spanish, Czech, German, French, and Italian. + +== Version 0.39.0 (2018-09-24) == + + * Updated translations for Hungarian and Norwegian Bokmål. + * Merge Removable Media (udiskie) into Storage module. + * Add Backups module for backing up apps data. + +== Version 0.38.0 (2018-09-10) == + + * mediawiki: Enable SVG support for !MediaWiki + * upgrades: Clean up old kernel packages during automatic upgrades + * Make the progress bar at the top of the page more visible. + * Updated translations for Norwegian Bokmål, Czech, Russian, German, Hungarian, and Spanish. + +== Version 0.37.0 (2018-08-27) == + + * Updated translations for Czech, Norwegian Bokmål, Russian, Spanish, Hungarian, and Dutch. + * install: Use Post/Response/Get pattern for reloads. + +== Version 0.36.0 (2018-08-13) == + + * Updated translations for Hindi, Spanish, Russian, Telugu, German, Hungarian, Czech, and French + * ejabberd: Remove deprecated settings from already existing config files + * mediawiki: Fix issue with re-installation + * mediawiki: Enable Instant Commons + * mediawiki: Fix images throwing 403s + * turbolinks: Reload page using !JavaScript + * Add Lato woff2 fonts + * Disable launch button for web client when not installed + +== Version 0.35.0 (2018-07-30) == + + * configuration: Add an option to set a default app for !FreedomBox. The root URL path (`https://domainname/`) will redirect to the selected app. + * ejabberd: Remove deprecated `iqdisc` setting. To apply this fix, disable and then re-enable the Message Archive Management setting. + * ejabberd: Replace logo with original version. + * mediawiki: Enable short URLs, which look like `https://domainname/mediawiki/ArticleName`. + * radicale: Clarify description for shared calendar/addressbook. + * storage: Handle mount points with spaces. + * udiskie: Add button to eject drives. + * udiskie: Also show read-only filesystems. + * udiskie: Remove internal networks warning. + * udiskie: Show special message when no storage device available. + * Add turbolinks library for smoother navigation. + * Removed extra text from icons for mediawiki, radicale, and tahoe-lafs. + * Updated translations for Russian, Spanish, Dutch, Hungarian, Hindi, Italian, Telugu, German, and Norwegian Bokmål. + +== Version 0.34.0 (2018-07-16) == + + * Prompt for secret during firstboot welcome + * (Does not apply to downloadable !FreedomBox images, but only when installed using freedombox-setup package.) + * Updated translations for Italian, Dutch, Hindi, Hungarian + +== Version 0.33.1 (2018-07-04) == + + * Fix issue where editing a user would remove them from admin group + * Updated translations for Hungarian, Czech, Spanish, Russian, Hindi + +== Version 0.33.0 (2018-07-02) == + + * Updated translations for Hungarian, Norwegian Bokmål, Spanish, Russian, Czech, Hindi, Dutch, Italian + * firewall: Display information that a service is internal only + * users: Don't show Create User link to non-admin users + * users: Redirect to users list on successful user creation + * packages: Show button to refresh package lists when a package is not available for install + * Only show front page shortcuts that a user is allowed to access + * Restrict removal of last admin user + * Use logos instead of icons in the apps page + * udiskie: New module for automatic mounting of removable media + +== Version 0.32.0 (2018-06-18) == + + * Apply new card based design + * Fix client info table size and flickering + * first-setup: Automatically expand root partition + * mediawiki: Enable image uploads + * mediawiki: Make private mode and public registrations mutually exclusive + * mediawiki: Hide frontpage shortcut when private mode is enabled + * Updated translations for Norwegian Bokmål, Czech, Spanish, Russian, Hindi, Telugu, Italian, Dutch, German, and Hungarian + +== Version 0.31.0 (2018-06-04) == + + * Updated translations for Czech, Spanish, Russian, German, Italian, Hindi, Telugu, and Norwegian Bokmål + * mediawiki: Added private mode option + * users: Fix user permissions not being saved + * users: internationalize a string + * mediawiki: Run update script for 1.30 upgrade + * shortcuts: Fix urls for ikiwiki shortcuts + +== Version 0.30.0 (2018-05-21) == + + * Updated translations for Russian, Italian, Norwegian Bokmål, Hungarian, and Hindi + * setup: Remove unavailable as a state in setup_helper + +== Version 0.29.1 (2018-05-08) == + + * security: Fix issue with Plinth locked out from sudo + * Updated translations for Czech and Spanish + +== Version 0.29.0 (2018-05-07) == + + * security: Allow console login access to user plinth + * Add an option to enable/disable public registrations in mediawiki + * tt-rss: Skip the check for SELF_URL_PATH + * searx: Fix issue with uwsgi crashing + * Updated translations for Czech, Spanish, German, Norwegian Bokmål, and Italian + +== Version 0.28.0 (2018-04-23) == + + * setup: disable install button for currently unavailable apps + * Add locale for Lithuanian (lt) + * Translation updates for Italian, Czech, Russian, Spanish, German, Norwegian Bokmål, Telugu, and Dutch + +== Version 0.27.0 (2018-04-09) == + + * middleware: Skip 'installed' message for essential apps + * users: Fix admin group appearing twice in permissions + * apps: Fix app names and short descriptions not being translated + * snapshots: Move manual page link to the index page + * UI: Fix progress bar not appearing + * snapshots: Fix for permissions issue when updating configuration + * snapshots: Add option to enable/disable software installation snapshots + * Translation updates for Italian, Czech, Russian, Spanish, Dutch, German, Norwegian Bokmål, and Ukrainian + +== Version 0.26.0 (2018-03-26) == + + * snapshots: Update description + * searx: Rewrite url from /searx to /searx/ + * manual: Link to manual from each service + * Workaround security issues in django-axes + * apache: Only regenerate snake oil cert when needed + * apache: Explicitly enable the latest version of PHP module + * apache: Increase module version number to fix php7.2 + * Update translations for Chinese (Simplified), Russian, Czech, German, Norwegian Bokmål, Hungarian, Spanish, and Italian + +== Version 0.25.0 (2018-03-12) == + + * sharing: Add app for sharing disk folders. + * ttrss: Update list of client apps. + * infinoted: Allow setup to recover after timeout issue. + * snapshots: Add configuration tab with settings for time-based snapshots. + +== Plinth v0.24.0 (2018-02-26) == + + * Add file-sharing application Coquelicot. + * Add metasearch engine application Searx. + * Add locale for Hungarian (hu). + * mediawiki: Allow shortcut to be publicly visible on front page. + * clients: Add and correct Client Apps. + * locale: Preferred language can be set in each user's profile. + * locale: Anonymous users can select preferred language. + * config: Remove language selection from config page. + * matrixsynapse: Fix mail attribute for ldap login. + +== Plinth v0.23.0 (2018-02-12) == + + * snapshots: Modify configurations to reduce disk usage. + * snapshots: Skip currently active snapshot when deleting all snapshots. + * jsxc: Use consistent url format. + * sso: Increase timeout to 60 minutes. + * theme: Change font from Helvetica to Lato. + * Translation updates for Czech, German, Gujarati, and Telugu. + +== Plinth v0.22.0 (2018-01-30) == + + * matrix-synapse: Make sure configuration file does not get corrupted. + * tor: Show enabled status properly. + * first_setup: Fix not showing admin user creation step. + * Migrate from !GitHub to Salsa + * Migrate from CirceCI to !GitLab CI on Salsa. + * Translation updates for Czech, Dutch, Gujarati, Hindi, Russian and Telugu. + * Started new translation for Ukrainian. + +== Plinth v0.21.0 (2018-01-15) == + + * navigation bar: Change label from 'Configuration' to 'System'. + * storage: Removed beta warning for expanding partition. + * groups: Consistently show available user groups, even before applications are installed. + * syncthing: Restrict administration to users in "syncthing" group. + * help: Show menu on smaller screens also. + * diagnostics: Enable the "Run Diagnostics" button when applications are enabled but not running. + +== Plinth v0.20.0 (2018-01-01) == + + * bind: Don't use forwarders by default + * ejabberd: Remove redundant button Client Apps + * mediawiki: Add wiki application + * users: Make sure first run actually works + * bind: Add information about current utility + +== Plinth v0.19.0 (2017-12-18) == + + * ejabberd: Use dynamic reload instead of restart when changing configuration. + * manual: Make manual available as a PDF download. + * minetest: Show domain information for users to connect to minetest. + * snapshots: Add button to delete all snapshots. + * snapshots: Add option to enable/disable automatic timeline snapshots. + * users: Add groups for bit-torrent and feed-reader, available when these applications are installed. + +== Plinth v0.18.0 (2017-12-04) == + + * Add Shadowsocks client with socks5 proxy. + * Fix SSO regressions and conflict with captcha. + * transmission: Fix sso not being enabled on upgrade. + * avahi: Add service for !FreedomBox discovery. + * Add client information for modules. + +== Plinth v0.17.0 (2017-11-20) == + + * transmission: Enable Single Sign On. + * cockpit: Add short description to frontpage shortcut. + * fail2ban: Fix spelling and sentence structure. + +== Plinth v0.16.0 (2017-11-06) == + +=== Added === + * Add mobile, web and desktop client info for modules. + * Enable django !SecurityMiddleware to improve security ratings. + * cockpit: New module for server administration and web terminal. + +=== Fixed === + * letsencrypt: Fix internal server error when obtaining a certificate. + * ejabberd: Fix LDAP server entry in config file during setup. + * jsxc: Fix outdated URLs for connecting to local ejabberd server. + +== Plinth v0.15.3 (2017-10-20) == + +=== Changed === + + * Rename Disks to Storage. + * Rename Snapshot to Storage Snapshots. + * tt-rss: Enable API access by default. + * Allow access to Plinth from outside the LAN. + * matrix-synapse: Disable public registration by default. + * power: Merge actions into the user dropdown. + +=== Added === + + * Add locales for Kannada (kn) and for Bengali (bn). + * ejabberd: Use Let's Encrypt certificate, also across renewals. + * matrix-synapse: Add enable/disable public registrations. + * Add captcha validation on 3 failed attempts. + * matrix-synapse: Enable LDAP integration. + * letsencrypt: Automatically obtain and revoke SSL certificates. + +=== Fixed === + + * Fix front page label names. + * Fix vertical alignment of shortcut icons. + * storage: Fix issue with locales that use other decimal separators. + * Make tt-rss api accessible using Apache basic auth. + * letsencrypt: Handle case where current domain is empty. + * Handle both admin and non-admin user names in update user template. + +== Plinth v0.15.2 (2017-09-24) == + +=== Added === + + * letsencrypt: Show more info on cert validity status. + * letsencrypt: Add option to delete certificates. + * letsencrypt: Add option to let Plinth manage certbot's renewal hooks. + * power: Warn if a package manager is running before shutdown/restart. + * security: Install and manage fail2ban. + * names: Include domain and services from dynamicdns. + * disks: Add low disk space warning to system and disks page. + * ssh: New application to manage SSH server. + * Add api module to get enabled services and access info. + * Add Django password validators. + * ejabberd, ikiwiki, ttrss: Add user login descriptions. + +=== Removed === + + * diaspora: Disable for this release due to issues affecting package. + * Remove help from navbar before firstboot complete. + +=== Fixed === + + * i18n: Don't use backslash-newline for wrapping long lines. + * radicale: Update link to documentation. + * sso: Upgrade crypto to 4096-bit RSA and SHA-512. + * Users: Allow non-admin users to log out. + +=== Changed === + + * letsencrypt: Make Let's Encrypt an essential module. + * UI: Make apps and configure pages responsive on small screens. + * Make help accessible for logged-in non-admin users. + +== Plinth v0.15.0 (2017-07-01) == + + * Added Tahoe-LAFS module for distributed file storage. + * Added Diaspora* module for federated social networking. + * Currently only available in "contrib" repository. + * New Locales for Czech (cs) and Tamil (ta). + * Added SSO using auth_pubtkt for Syncthing, TT-RSS, and the Repro admin panel. + * If you are logged in to Plinth, you will be automatically logged in to these web apps. + * ejabberd: Added option to enable/disable Message Archive Management. + * help: Added Debian release name to about page. + * firstboot: De-bloat first welcome screen. + * Pinned footer to the bottom of the viewport. + * disks: Restrict precision of reported available space on root partition. + * diagnostics: Disable button if app/service is not running. + * help: Only show help pages if user is logged in. + * navbar: Moved logout to user drop-down and added a new power drop-down. + * disks: Show disabled partition resize option if no space is available. + * Added line break to titles to fix frontpage layout. + * syncthing: Fixed typos and clarity in description. + * firewall: Fix 500 error when firewalld is not running. + * setup: Disable install/upgrade when dpkg/apt is running. + * disks: Use information from lsblk for more accuracy. + * datetime: Show timezone properly when it not in expected list. + +== Plinth v0.14.0 (2017-04) == + + * tor: Added option to use upstream bridges. + * openvpn: Added shortcut to front page, shown only when logged-in. + * openvpn: Non-admin users can download their own profiles. + * Added new locales for Hindi (hi) and Gujarati (gu). + * Added Syncthing module for file synchronization. + * Added Matrix Synapse as chat server with groups, audio and video. + * Require admin access for all system configuration pages. + * Changed appearance of topbar and footer. + * openvpn: Regenerate user key or certificate if empty. + * disks: Workaround issue in parted during resize. + +== Plinth v0.13.1 (2017-01-22) == + + * Two new apps were added: + * Gobby Server (infinoted) for collaborative editing of text documents + * Domain Name Server (BIND), in system menu + * Added !JavaScript license web labels to provide partial support for LibreJS. + * Added basic configuration form for Minetest server. + * Added indicator to Help->About page if new Plinth version is available. + * Show app logos on front page instead of generic icons. + * Prevent anonymous users from accessing setup pages. + * Split Chat Server (XMPP) app into Chat Server (ejabberd) and Chat Client (jsxc). + +== Plinth v0.12.0 (2016-12-08) == + + * Open up RTP ports in the firewall for repro (SIP server). + * Front page shortcuts for services show a Configure button in the details box for logged-in users. + * Add mods packages to be installed with Minetest server. + * Fix issue with reading Dynamic DNS status as non-root user. + * After the hostname is changed, ensure the domain name is still set correctly. + * Allow the domain name to be cleared, and properly set the configuration in this case. + * On the Certificates (Let's Encrypt) page, show a more informative message when no domains are configured. + * On the Chat Server (XMPP) page, show more clearly if domain is not set. + * Apps that require login will not be shown on the front page, unless the user is logged in. + * Show status block for News Feed Reader (Tiny Tiny RSS). + * Change appearance of front page with larger icons and repositioned text. + * Firewall page only lists services that have been setup. The port lists are collapsible under each service. + * Support configuring IPv6 networks. + * Make it less likely to accidentally delete the only Plinth user. + * Updated to work with JSXC 3.0.0 (XMPP web client). + +== Plinth v0.11.0 (2016-09-29) == + + * Added loading icon for additional busy operations. + * Added basic front page with shortcuts to web apps, and information about enabled services. + * networks: Add batctl as dependency, required for batman-adv mesh networking. + * users: + * Fixed checking restricted usernames. + * Display error message if unable to set SSH keys. + * Flush nscd cache after user operations to avoid some types of errors. + * monkeysphere: + * Adopted to using SHA256 fingerprints. + * Sort items for consistent display. + * Handle new uid format of gpg2. + * Fixed handling of unavailable imported domains. + * minetest: Fixed showing status block and diagnostics. + * Fixed stretched favicon. + * Switched base template from container-fluid to container. This will narrow the content area for larger displays. + * Plinth is now able to run as "plinth" user instead of root user. + * xmpp: Replaced jwchat with jsxc. + * ikiwiki: Allow only alphanumerics in wiki/blog name to avoid invalid paths. + +== Plinth v0.10.0 (2016-08-21) == + + * Updated Plinth to support Django 1.10. + * Added a page to display recent status log from Plinth. It is accessible from the 500 error page. + * Tor: Added options to toggle relay and bridge relay modes. + * Radicale: Added access rights control. + * Ikiwiki: Updated suggested packages. + * Users and Groups: Fixed editing users without SSH keys. + * Networks: Added basic support for configuring batman-adv mesh networking. + * Networks: Fixed incorrect access for retrieving DNS entries. + * New languages: + * Persian (50% translated) + * Indonesian (not started, contributions needed) + * New modules added to Plinth: + * Disks: Shows free space of mounted partitions, and allows expanding the root partition. + * Security: Controls login restrictions. + * Snapshots: Manages Btrfs snapshots. + +== Version 0.9.4 (2016-06-24) == + + * Added Polish translation. + * Fixed issue preventing access to Plinth on a non-standard port. + * Dealt with ownCloud removal from Debian. The ownCloud page in Plinth will be hidden if it has not been setup. Otherwise, a warning is shown. + * Fixed issue in Privoxy configuration. Two overlapping listen-addresses were configured, which prevented privoxy service from starting. + * Fixed issue that could allow someone to start a module setup process without being logged in to Plinth. + * Fixed issues with some diagnostic tests that would show false positive results. + * Added check to Diagnostics to skip tests for modules that have not been setup. + * Fixed some username checks that could cause errors when editing the user. + * Added sorting of menu items per locale. + * Moved Dynamic DNS and Pagekite from Applications to System Configuration. + * Allowed setting IP for shared network connections. + * Switched Dreamplug image from "non-free" to "free". This means that we no longer include the non-free firmware for the built-in wifi on Dreamplug. + * Added the "userdir" module for the Apache web server. This allows users in the "admin" group to create a folder called "public_html" under their home folder, and to publicly share files placed in this folder. + * New wiki and manual content licence: ''[[https://creativecommons.org/licenses/by-sa/4.0/|Creative Commons Attribution-ShareAlike 4.0 International]]'' (from June 13rd 2016). + * Switched to using apt-get for module setup in Plinth. This fixes several issues that were seen during package installs. + +== Version 0.9 (2016-04-24) == + + * Fixed Wi-Fi AP setup. + * Prevent lockout of users in 'sudo' group after setup is complete. + * Improved setup mechanism for Plinth modules. Allows users to see what a module is useful for, before doing the setup and package install. Also allows essential modules to be setup by default during !FreedomBox install. + * Added HTTPS certificates to Monkeysphere page. Reorganized so that multiple domains can be added to a key. + * Added Radicale, a CalDAV and CardDAV server. + * Added Minetest Server, a multiplayer infinite-world block sandbox. + * Added Tiny Tiny RSS, a news feed reader. + +== Version 0.8 (2016-02-20) == + + * Added Quassel, an IRC client that stays connected to IRC networks and can synchronize multiple frontends. + * Improved first boot user interface. + * Fixed Transmission RPC whitelist issue. + * Added translations for Turkish, Chinese, and Russian. Fixed and updated translations in other languages. + * Added Monkeysphere, which uses PGP web of trust for SSH host key verification. + * Added Let's Encrypt, to obtain certificates for domains, so that browser certificate warnings can be avoided. + * Added repro, a SIP server for audio and video calls. + * Allow users to set their SSH public keys, so they can login over SSH without a password. + +== Version 0.7 (2015-12-13) == + + * Translations! Full translations of the interface in Danish, Dutch, French, German and Norwegian Bokmål, and partial Telugu. + * Support for OLinuXino A20 MICRO and LIME2 + * New Plinth applications: OpenVPN, reStore + * Improved first-boot experience + * Many bugfixes and cleanups + +== Version 0.6 (2015-10-31) == + + * New supported hardware target: Raspberry Pi 2 + * New modules in Plinth: + * Shaarli: Web application to manage and share bookmarks + * Date & Time: Configure time zone and NTP service + * Service Discovery: Configure Avahi service + * Documentation revamp including new user manual and developer guide + * Improved diagnostic tests, available in Plinth + * Avoid unnecessary changes when installing on existing Debian system + * Network configuration supports PPPoE connections + * Debian packages can be download over Tor + +== Version 0.5 (2015-08-07) == + + * New targets: !CubieTruck, i386, amd64 + * New apps in Plinth: Transmission, Dynamic DNS, Mumble, ikiwiki, Deluge, Roundcube, Privoxy + * !NetworkManager handles network configuration and can be manipulated through Plinth. + * Software Upgrades (unattended-upgrades) module can upgrade the system, and enable automatic upgrades. + * Plinth is now capable of installing ejabberd, jwchat, and privoxy, so they are not included in image but can be installed when needed. + * User authentication through LDAP for SSH, XMPP (ejabberd), and ikiwiki. + * Unit test suite is automatically run on Plinth upstream. This helps us catch at least some code errors before they are discovered by users! + * New, simpler look for Plinth. + * Performance improvements for Plinth. + +== Version 0.3 (2015-01-20) == + + * Tor Bridges: All boxes now act as non-exit Tor bridges, routing traffic for the Tor network. + * [[FreedomBox/Manual/Firewall|Firewall]]: firewall is on by default and is automatically managed. + * Add !BeagleBone support. We now have images for !BeagleBone, !RaspberryPi, !VirtualBox i386/amd64, and !DreamPlug. + * Ability to enable and use Tor Hidden Services. Works with Ejabberd/JWChat and ownCloud services. + * Enable Tor obfsproxy with scramblesuit. + * Drop well-known root password (an account with sudo capabilities still exists for now but will be removed soon). + * Switch to unstable as suite of choice for easier development. + * Newer images are built with systemd by default (due to Debian change). + * Install and operate firewall automatically (uses firewalld). + * Major restructuring of Plinth UI using Python3, Django web development framework and Bootstrap3. Code quality is much better and UI is more polished. + * Introduced packaging framework in Plinth UI for on-demand application installation. + +== Version 0.2 (2014-03-16) == + + * Support for Raspberry Pi and !VirtualBox (x86) in addition to the !DreamPlug. + * New Services: + * Configuration Management UI. + * Instant Messaging. + * !OwnCloud. + * dnsmasq. + * Low-Level Configuration Management. + * Service Announcement. + * LDAP Server. + * LXC Support. + * Source Packages. + * The privoxy setup is now the default from Debian. + +== Version 0.1 (2013-02-26) == + + * First !FreedomBox software release (0.1 image, developer release). + * Full hardware support in Debian + * Support for !DreamPlug. + * Basic software tools selected as common working environment: + * User interface system "plinth" + * Cryptography tools: gpg or "monkeysphere" + * Box-to-box communication design: Freedom-buddy (uses [[https://en.wikipedia.org/wiki/Tor_%28anonymity_network%29|TOR network]]) + * Web cleaning: "privoxy-freedombox". + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Repro.raw.xml b/doc/manual/en/Repro.raw.xml deleted file mode 100644 index 4e812c496..000000000 --- a/doc/manual/en/Repro.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Repro102020-05-30 18:08:11SunilMohanAdapaUpdate the title to emphasize app name over its generic name92020-05-23 19:56:15JamesValleroyadd TableOfContents82019-02-26 23:26:49JamesValleroyremove content from manual72019-02-26 23:25:03JamesValleroyadd note about removal62017-01-02 13:43:51JamesValleroyadd port forwarding info52016-12-31 03:57:09JamesValleroyadd basic info42016-12-26 18:56:31JamesValleroyadd screenshots32016-05-27 17:24:23JamesValleroyadd footer22016-05-27 17:21:48JamesValleroyRenamed from 'FreedomBox/Manual/repro'.12016-05-15 19:03:02JamesValleroystart page
repro (SIP Server)App removed repro has been removed from Debian 10 (Buster), and therefore is no longer available in FreedomBox. repro is a server for SIP, a standard that enables Voice-over-IP calls. A desktop or mobile SIP client is required to use repro.
How to set up the SIP serverConfigure the domain at /repro/domains.html on the FreedomBox. Repro Domains Add users at /repro/addUser.html. Repro Users Disable and re-enable the repro application in Plinth.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for repro: TCP 5060 TCP 5061 UDP 5060 UDP 5061 Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Rock64.raw.wiki b/doc/manual/en/Rock64.raw.wiki new file mode 100644 index 000000000..0eef1c1ae --- /dev/null +++ b/doc/manual/en/Rock64.raw.wiki @@ -0,0 +1,51 @@ +== Rock64 == + +{{attachment:rock64.jpg|Rock64|width=640,height=420}} + +Pine64's [[https://www.pine64.org/devices/single-board-computers/rock64/|Rock64]] is a powerful single board computer. It uses the Rockchip RK3328 Quad Core ARM64 processor. !FreedomBox images are built and tested for this device. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +Before downloading and using !FreedomBox you need to ensure that latest u-boot based firmware is installed into the SPI flash chip. Download the [[https://github.com/ayufan-rock64/linux-mainline-u-boot/releases/latest|latest u-boot]] to write to SPI flash and then see instructions on how to [[http://wiki.pine64.org/index.php?title=NOOB#Flashing_u-boot_to_SPI_Flash|write u-boot firmware into SPI flash]]. The gist is that you download and write an image to an SD card. Boot with SD card and wait for white LED to blink continuosly. After that power off remove SD card and proceed with !FreedomBox download. + +!FreedomBox [[FreedomBox/Download|images]] meant for all "arm64" hardware work well for this device. However, u-boot firmware must present in SPI flash (or on a separate SD card, which is not explained here). Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. These images also work well for eMMC disk which an optional attachment to this board and disk drives in USB 2.0 ports (but not in the USB 3.0 port). The process for preparing them is same as for an SD card. + +An alternative to downloading these images is to [[InstallingDebianOn|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: 25 USD (1GB) + * Price: 35 USD (2GB) + * Price: 45 USD (4GB) + * [[https://store.pine64.org/product/rockpro64-2gb-single-board-computer/|Pine64 Store]] + +=== Hardware === + + * Open Source Hardware (OSHW): No + * CPU: Rockchip RK3328 Quad-Core SOC (4x Cortex A53@1.5Ghz) + * GPU: Mali 450MP2 + * RAM: 1 GiB or 2 GiB or 4 GiB LPDDR3 + * Storage: eMMC module slot, microSD slot, 16 MiB SPI Flash + * USB: 2x USB 2.0, 1x USB 3.0 + * Architecture: arm64 + * Ethernet: 10/100/1000, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + +=== Known Issues === + + * !FreedomBox does not work when booted from USB 3.0 port (but works from eMMC, SD card or USB 2.0 disk). + * !FreedomBox does not work when booted form the top USB 2.0 port with some u-boot firmware versions (the one listed above). It only works with the bottom USB 2.0 port (the one closer to the board). + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/RockPro64.raw.wiki b/doc/manual/en/RockPro64.raw.wiki new file mode 100644 index 000000000..68c882516 --- /dev/null +++ b/doc/manual/en/RockPro64.raw.wiki @@ -0,0 +1,49 @@ +== RockPro64 == + +{{attachment:rockpro64.jpg|RockPro64|width=640,height=385}} + +Pine64's [[https://www.pine64.org/rockpro64/|RockPro64]] is a powerful single board computer. It uses the Rockchip RK3399 Hexa Core ARM64 processor. !FreedomBox images are built and tested for this device. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +Before downloading and using !FreedomBox you need to ensure that latest u-boot based firmware is installed into the SPI flash chip. See instructions on how to [[https://github.com/sigmaris/u-boot/wiki/Flashing-U-Boot-to-SPI|write u-boot firmware into SPI flash]]. The gist is that you download and write an image to an SD card. Boot with SD card and wait for white LED blinking to stop. After that power off, remove the SD card and proceed with !FreedomBox download. + +!FreedomBox [[FreedomBox/Download|images]] meant for all "arm64" hardware work well for this device. However, u-boot firmware must present in SPI flash (or on a separate SD card, which is not explained here). Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. These images also work well for USB 2.0 and USB 3.0 disk drives and the process for preparing them is same as for an SD card. + +An alternative to downloading these images is to [[InstallingDebianOn|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: 60 USD ([[https://store.pine64.org/product/rockpro64-2gb-single-board-computer/|RockPro64 2GB]]) + * Price: 80 USD ([[https://store.pine64.org/product/rockpro64-4gb-single-board-computer/|RockPro64 4GB]]) + +=== Hardware === + + * Open Source Hardware (OSHW): No + * CPU: Rockchip RK3399 SOC (2x Cortex A72@1.8Ghz, 4x Cortex A53@1.4Ghz) + * GPU: Mali T860 MP4 GPU + * RAM: 2 GiB or 4 GiB LPDDR4 + * Storage: eMMC module slot, microSD slot, 16 MiB SPI Flash + * USB: 2x USB 2.0, 1x USB 3.0, 1x USB-C + * Expansion slot: 1x PCIe 4x slot (NVMe disks, etc.) + * Architecture: arm64 + * Ethernet: 10/100/1000, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + +=== Known Issues === + + * !FreedomBox does not work when booted from eMMC module (but works from SD card, USB 2.0 disk or USB 3.0 disk). !FreedomBox on NMVe disk has not been tested. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Roundcube.raw.wiki b/doc/manual/en/Roundcube.raw.wiki new file mode 100644 index 000000000..1963a5857 --- /dev/null +++ b/doc/manual/en/Roundcube.raw.wiki @@ -0,0 +1,37 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Roundcube|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Roundcube (Email Client) == +|| {{attachment:Roundcube-icon_en_V01.png|Roundcube icon}} || + +'''Available since''': version 0.5 + +=== What is Roundcube? === + +Roundcube is a browser-based multilingual email client with an application-like user interface. Roundcube is using the Internet Message Access Protocol (IMAP) to access e-mail on a remote mail server. It supports MIME to send files, and provides particularly address book, folder management, message searching and spell checking. + +=== Using Roundcube === + +After Roundcube is installed, it can be accessed at {{{https:///roundcube}}}. Enter your username and password. The username for many mail services will be the full email address such as ''exampleuser@example.org'' and not just the username like ''exampleuser''. Enter the address of your email service's IMAP server address in the ''Server'' field. You can try providing your domain name here such as ''example.org'' for email address ''exampleuser@example.org'' and if this does not work, consult your email provider's documentation for the address of the IMAP server. Using encrypted connection to your IMAP server is strongly recommended. To do this, prepend 'imaps://' at the beginning of your IMAP server address. For example, ''imaps://imap.example.org''. + +{{attachment:roundcube-riseup.png|Logging into your IMAP server|width=606}} + +=== Using Gmail with Roundcube === + +If you wish to use Roundcube with your Gmail account, you need to first enable support for password based login in your Google account preferences. This is because Gmail won't allow applications to login with a password by default. To do this, visit [[https://www.google.com/settings/security/lesssecureapps|Google Account preferences]] and enable ''Less Secure Apps''. After this, login to Roundcube by providing your Gmail address as ''Username'', your password and in the server field use ''imaps://imap.gmail.com''. + +{{attachment:roundcube-gmail.png|Logging into Gmail|width=606}} + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Roundcube.raw.xml b/doc/manual/en/Roundcube.raw.xml deleted file mode 100644 index c693567a7..000000000 --- a/doc/manual/en/Roundcube.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Roundcube102020-05-30 17:57:13SunilMohanAdapaUpdate the title to emphasize app name over its generic name92020-05-23 19:51:01JamesValleroyadd TableOfContents82019-03-13 21:13:00SunilMohanAdapaMinor formatting.72019-03-13 21:11:10SunilMohanAdapaAdd information about how to login to Roundcube62016-12-31 03:41:20JamesValleroyadd link52016-09-01 19:12:35Drahtseiladapted title to Plinth wording42016-04-10 07:25:23PhilippeBaretAdded bottom navigation link32015-12-15 19:04:22PhilippeBaretText finishing22015-12-15 19:03:29PhilippeBaretAdded ## END_INCLUDE12015-12-15 19:02:17PhilippeBaretAdded Rouncube page with definition
Roundcube (Email Client)
What is Roundcube?Roundcube is a browser-based multilingual email client with an application-like user interface. Roundcube is using the Internet Message Access Protocol (IMAP) to access e-mail on a remote mail server. It supports MIME to send files, and provides particularly address book, folder management, message searching and spell checking.
Using RoundcubeAfter Roundcube is installed, it can be accessed at https://<your freedombox>/roundcube. Enter your username and password. The username for many mail services will be the full email address such as exampleuser@example.org and not just the username like exampleuser. Enter the address of your email service's IMAP server address in the Server field. You can try providing your domain name here such as example.org for email address exampleuser@example.org and if this does not work, consult your email provider's documentation for the address of the IMAP server. Using encrypted connection to your IMAP server is strongly recommended. To do this, prepend 'imaps://' at the beginning of your IMAP server address. For example, imaps://imap.example.org. Logging into your IMAP server
Using Gmail with RoundcubeIf you wish to use Roundcube with your Gmail account, you need to first enable support for password based login in your Google account preferences. This is because Gmail won't allow applications to login with a password by default. To do this, visit Google Account preferences and enable Less Secure Apps. After this, login to Roundcube by providing your Gmail address as Username, your password and in the server field use imaps://imap.gmail.com. Logging into Gmail Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Samba.raw.wiki b/doc/manual/en/Samba.raw.wiki new file mode 100644 index 000000000..a2e89d7cc --- /dev/null +++ b/doc/manual/en/Samba.raw.wiki @@ -0,0 +1,65 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Samba|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Samba (Network File Storage) == +|| {{attachment:Samba-icon_en_V01.png|Samba icon}} || + +'''Available since''': version 19.22 + +Samba lets you have shared folders over the local network that can be +used from multiple computers running different operating systems. We refer to these shared folders as "shares". + +You can have a personal folder shared between your own devices (Home share), a folder shared with a trusted group (Group share) or one that is shared with every device on the network (Open share). + +Samba lets you to treat a share as if it's a local folder on your computer. However, shares are available only on the local network. + +To learn more about Samba, please refer to the [[https://wiki.samba.org/index.php/User_Documentation|user documentation]] on their wiki. + +=== Using Samba === + +After installation, you can choose which disks to use for sharing. Enabled shares are accessible in the file manager on your computer at location \\freedombox (on Windows) or smb://freedombox.local (on Linux and Mac). There are three types of shares you can choose from: + +'''Open share''' - accessible to everyone in your local network.<
> +'''Group share''' - accessible only to !FreedomBox users who are in the ''freedombox-share'' group.<
> +'''Home share''' - every user in the ''freedombox-share group'' can have their own private space. + +==== On Android ==== + +To access Samba shares on an Android device, install "Android Samba Client" from F-Droid or Google Play. Enter ''smb://freedombox.local/'' as the share path in the app. Your shared folders should then be visible in the file manager app. Samba shares can also be used by VLC for Android which automatically discovers them. + +=== Integration with other apps === + +Transmission app on !FreedomBox provides a setting to allow downloads to be saved directly to a Samba share. + +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 > 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. + +=== Comparison with other apps === + +==== Syncthing ==== + +[[FreedomBox/Manual/Syncthing|Syncthing]] maintains a copy of the shared folder +on each device that it is shared with. Samba maintains only one copy on your +!FreedomBox device. + +Syncthing can synchronize your shared folders between devices over the Internet. +Samba shares are only available on the local network. + +Since Syncthing is primarily a synchronization solution, it has features like +conflict resolution and versioning. Samba has only copy of the file, so it +doesn't need such features. For example, if two people are editing a spreadsheet +stored on a Samba share, the last one to save the file wins. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Samba.raw.xml b/doc/manual/en/Samba.raw.xml deleted file mode 100644 index 9e6013222..000000000 --- a/doc/manual/en/Samba.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Samba112020-05-30 18:01:25SunilMohanAdapaUpdate the title to emphasize app name over its generic name102020-05-25 08:15:46SunilMohanAdapaAdd mention of VLC for Android92020-05-23 19:53:30JamesValleroyadd TableOfContents82020-05-18 23:18:48JamesValleroysimplify wording72020-05-12 02:24:02JosephNuthalapatiChange short description to Network File Storage62020-04-23 13:57:36NektariosKatakis52020-04-23 13:54:36NektariosKatakis42020-04-23 13:50:01NektariosKatakis32020-02-02 07:06:36JosephNuthalapatiAndroid Samba Client needs disk path as well22020-02-01 17:15:51JosephNuthalapatiAdd comparison with Syncthing12020-02-01 17:08:21JosephNuthalapatiFirst draft
Samba (Network File Storage)Samba lets you have shared folders over the local network that can be used from multiple computers running different operating systems. We refer to these shared folders as "shares". You can have a personal folder shared between your own devices (Home share), a folder shared with a trusted group (Group share) or one that is shared with every device on the network (Open share). Samba lets you to treat a share as if it's a local folder on your computer. However, shares are available only on the local network. To learn more about Samba, please refer to the user documentation on their wiki. Available since version: 19.22
Using SambaAfter installation, you can choose which disks to use for sharing. Enabled shares are accessible in the file manager on your computer at location \\freedombox (on Windows) or smb://freedombox.local (on Linux and Mac). There are three types of shares you can choose from: Open share - accessible to everyone in your local network. Group share - accessible only to FreedomBox users who are in the freedombox-share group. Home share - every user in the freedombox-share group can have their own private space.
On AndroidTo access Samba shares on an Android device, install "Android Samba Client" from F-Droid or Google Play. Enter smb://freedombox.local/<disk> as the share path in the app. Your shared folders should then be visible in the file manager app. Samba shares can also be used by VLC for Android which automatically discovers them.
Integration with other appsTransmission app on FreedomBox provides a setting to allow downloads to be saved directly to a Samba share. 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 > 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.
Comparison with other apps
SyncthingSyncthing maintains a copy of the shared folder on each device that it is shared with. Samba maintains only one copy on your FreedomBox device. Syncthing can synchronize your shared folders between devices over the Internet. Samba shares are only available on the local network. Since Syncthing is primarily a synchronization solution, it has features like conflict resolution and versioning. Samba has only copy of the file, so it doesn't need such features. For example, if two people are editing a spreadsheet stored on a Samba share, the last one to save the file wins. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Searx.raw.wiki b/doc/manual/en/Searx.raw.wiki new file mode 100644 index 000000000..fc9e1c381 --- /dev/null +++ b/doc/manual/en/Searx.raw.wiki @@ -0,0 +1,61 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Searx|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Searx (Web Search) == +|| {{attachment:Searx-icon_en_V01.png|Searx icon}} || + +'''Available since''': version 0.24.0 + +=== About Searx === + +Searx is a [[https://en.wikipedia.org/wiki/Metasearch_engine|metasearch engine]]. A metasearch engine aggregates the results from various search engines and presents them in a unified interface. + +Read more about Searx on their [[https://asciimoo.github.io/searx/|official website]]. + +=== Screenshot === +{{attachment:searx-screenshot.png|Searx Screenshot|width=800}} + +=== Screencast === +[[attachment:Searx.webm|Searx installation and first steps|&do=get]] (14 MB) + +=== Why use Searx? === + +==== Personalization and Filter Bubbles ==== + +Search engines have the ability to profile users and serve results most relevant to them, putting people into [[https://en.wikipedia.org/wiki/Filter_bubble|filter bubbles]], thus distorting people's view of the world. Search engines have a financial incentive to serve interesting advertisements to their users, increasing their chances of clicking on the advertisements. + +A metasearch engine is a possible solution to this problem, as it aggregates results from multiple search engines thus bypassing personalization attempts by search engines. + +Searx avoids storing cookies from search engines as a means of preventing tracking and profiling by search engines. + +==== Advertisement filtering ==== + +Searx filters out advertisements from the search results before serving the results, thus increasing relevance the of your search results and saving you from distractions. + +==== Privacy ==== + +Searx uses HTTP POST instead of GET by default to send your search queries to the [[https://en.wikipedia.org/wiki/Web_search_engine|search engines]], so that anyone snooping your traffic wouldn't be able to read your queries. The search queries wouldn't stored in browser history either. + +'''Note:''' Searx used from Chrome browser's omnibar would make GET requests instead of POST. + +=== Searx on FreedomBox === + + + * Searx on !FreedomBox uses Single Sign On. This means that you should be logged in into your !FreedomBox in the browser that you're using Searx. + * SearX is easily accessible via Tor. + * Searx can be added as a search engine to the Firefox browser's search bar. See [[https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox|Firefox Help]] on this topic. Once Searx is added, you can also set it as your default search engine. + * Searx also offers search results in csv, json and rss formats, which can be used with scripts to automate some tasks. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Searx.raw.xml b/doc/manual/en/Searx.raw.xml deleted file mode 100644 index 5b0682062..000000000 --- a/doc/manual/en/Searx.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Searx112020-05-30 18:12:17SunilMohanAdapaUpdate the title to emphasize app name over its generic name102020-05-23 19:40:54JamesValleroymove TableOfContents above BEGIN_INCLUDE92020-04-12 16:07:28JamesValleroyadd links back to top level pages82019-05-22 17:08:56David JonesAdded information that SearX is accessible via Tor.72018-11-01 09:17:25JosephNuthalapatiAdd ToC62018-03-08 15:08:44JosephNuthalapatiAdd screenshot. Remove last 20 seconds from screencast to reduce size.52018-03-08 14:23:24JosephNuthalapatiAdd query param to make the video play within the browser42018-03-07 20:43:27Drahtseil32018-03-07 20:37:05DrahtseilScreencast of the installation and first steps22018-02-26 17:15:26JamesValleroyincluded in 0.2412018-02-22 12:12:50JosephNuthalapatisearx: Initial draft
Searx (Web Search)
About SearxSearx is a metasearch engine. A metasearch engine aggregates the results from various search engines and presents them in a unified interface. Read more about Searx on their official website. Available since: version 0.24.0
ScreenshotSearx Screenshot
ScreencastSearx installation and first steps (14 MB)
Why use Searx?
Personalization and Filter BubblesSearch engines have the ability to profile users and serve results most relevant to them, putting people into filter bubbles, thus distorting people's view of the world. Search engines have a financial incentive to serve interesting advertisements to their users, increasing their chances of clicking on the advertisements. A metasearch engine is a possible solution to this problem, as it aggregates results from multiple search engines thus bypassing personalization attempts by search engines. Searx avoids storing cookies from search engines as a means of preventing tracking and profiling by search engines.
Advertisement filteringSearx filters out advertisements from the search results before serving the results, thus increasing relevance the of your search results and saving you from distractions.
PrivacySearx uses HTTP POST instead of GET by default to send your search queries to the search engines, so that anyone snooping your traffic wouldn't be able to read your queries. The search queries wouldn't stored in browser history either. Note: Searx used from Chrome browser's omnibar would make GET requests instead of POST.
Searx on FreedomBoxSearx on FreedomBox uses Single Sign On. This means that you should be logged in into your FreedomBox in the browser that you're using Searx. SearX is easily accessible via Tor. Searx can be added as a search engine to the Firefox browser's search bar. See Firefox Help on this topic. Once Searx is added, you can also set it as your default search engine. Searx also offers search results in csv, json and rss formats, which can be used with scripts to automate some tasks. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/SecureShell.raw.wiki b/doc/manual/en/SecureShell.raw.wiki new file mode 100644 index 000000000..d64408a56 --- /dev/null +++ b/doc/manual/en/SecureShell.raw.wiki @@ -0,0 +1,154 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/SecureShell|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Secure Shell (SSH) Sever == + +=== What is Secure Shell? === + +!FreedomBox runs `openssh-server` server by default allowing remote logins from all interfaces. If your hardware device is connected to a monitor and a keyboard, you may login directly as well. Regular operation of !FreedomBox does not require you to use the shell. However, some tasks or identifying a problem may require you to login to a shell. + +=== Setting Up A User Account === + +==== FreedomBox First Log In: Admin Account ==== + +When creating an account in !FreedomBox's web interface for the first time, this user will automatically have administrator capabilities. `Admin` users are able to log in using ssh (see Logging In below) and have superuser privileges via ``sudo``. + +==== Default User Account ==== + + * Note: If you can access !FreedomBox's web interface, then you don't need to do this. You can use the user account created in !FreedomBox's web interface to connect to SSH. + +The pre-built !FreedomBox images have a default user account called "fbx". However the password is not set for this account, so it will not be possible to log in with this account by default. + +There is a script included in the freedom-maker program, that will allow you to set the password for this account, if it is needed. To set a password for the "fbx" user: + +1. Decompress the image file. + +2. Get a copy of freedom-maker from https://salsa.debian.org/freedombox-team/freedom-maker/. + +3. Run {{{sudo ./bin/passwd-in-image fbx}}}. + +4. Copy the image file to SD card and boot device as normal. + +The "fbx" user also has superuser privileges via ``sudo``. + +=== Logging In === + +==== Local ==== + +To login via SSH, to your !FreedomBox: + +{{{ +$ ssh fbx@freedombox +}}} + +Replace `fbx` with the name of the user you wish to login as. `freedombox` should be replaced with the hostname or IP address of you !FreedomBox device as found in the [[FreedomBox/Manual/QuickStart|Quick Start]] process. + +`fbx` is the default user present on !FreedomBox with superuser privileges. Any other user created using !FreedomBox and belonging to the group `admin` will be able to login. The `root` account has no password set and will not be able to login. Access will be denied to all other users. + +`fbx` and users in `admin` group will also be able to login on the terminal directly. Other users will be denied access. + +If you repeatedly try to login as a user and fail, you will be blocked from logging in for some time. This is due to `libpam-abl` package that !FreedomBox installs by default. To control this behavior consult `libpam-abl` documentation. + +==== SSH over Tor ==== + +If in !FreedomBox you have enabled onion services via Tor, you can access your !FreedomBox using ssh over Tor. On a GNU/Linux computer, install netcat-openbsd. + +{{{ +$ sudo apt-get install netcat-openbsd +}}} + +Edit ~/.ssh/config to enable connections over Tor. + +{{{ +$ nano ~/.ssh/config +}}} + +Add the following: + +{{{ +Host *.onion + user USERNAME + port 22 + ProxyCommand nc -X 5 -x 127.0.0.1:9050 %h %p +}}} + +Replace USERNAME with, e.g., an `admin` username (see above). + +Note that in some cases you may need to replace 9050 with 9150. + +Now to connect to the !FreedomBox, open a terminal and type: + +{{{ +$ ssh USERNAME@ADDRESS.onion +}}} + +Replace USERNAME with, e.g., an `admin` username, and ADDRESS with the onion service address for your !FreedomBox. + +==== SSH Over Pagekite ==== + +If in !FreedomBox you are using Pagekite to expose services to the Internet, you can access your !FreedomBox using SSH over Pagekite. On a GNU/Linux computer install netcat-openbsd. + +{{{ +$ sudo apt-get install netcat-openbsd +}}} + +Edit ~/.ssh/config to enable connections over Pagekite. + +{{{ +$ nano ~/.ssh/config +}}} + +Add the following: + +{{{ +Host *.pagekite.me + CheckHostIP no + ProxyCommand /bin/nc -X connect -x %h:443 %h %p +}}} + +Now to connect to !FreedomBox, open a terminal and type: + +{{{ +$ ssh USERNAME@KITENAME.pagekite.me +}}} + +Replace USERNAME with, e.g., an `admin` username, and KITENAME with your kite name provided by pagekite.net as configured in !FreedomBox. + + +=== Becoming Superuser === + +After logging in, if you want to become the superuser for performing administrative activities: + +{{{ +$ sudo su +}}} + +Make a habit of logging in as root ''only when you need to''. If you aren't logged in as root, you can't accidentally break everything. + +<> +=== Changing Password === + +To change the password of a user managed by !FreedomBox's web interface, use the change password page. However, the `fbx` default user is not managed by !FreedomBox's web interface and its password cannot be changed through it. + +To change password on the terminal, log in to your !FreedomBox as the user whose password you want to change. Then, run the following command: + +{{{ +$ passwd +}}} + +This will ask you for your current password before giving you the opportunity to set a new one. + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/SecureShell.raw.xml b/doc/manual/en/SecureShell.raw.xml deleted file mode 100644 index aa226de15..000000000 --- a/doc/manual/en/SecureShell.raw.xml +++ /dev/null @@ -1,6 +0,0 @@ -
FreedomBox/Manual/SecureShell202020-06-22 21:27:55SunilMohanAdapaAdd section for connecting via Pagekite.192020-05-30 18:32:15SunilMohanAdapaMatch title with FreedomBox interface182020-05-23 20:45:18JamesValleroyadd TableOfContents172020-05-23 17:10:07JamesValleroyrename plinth -> freedombox162020-04-12 16:07:49JamesValleroyadd links back to top level pages152020-04-04 20:22:52fioddorPlinth as FreedomBox's web interface142020-04-04 20:03:23fioddorPlinth as FreedomBox's web interface132019-11-11 17:01:45JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service122019-02-26 03:46:55JamesValleroyremove wiki links112018-01-30 07:55:33SunilMohanAdapaUpdate GitHub links with Salsa102017-03-06 23:17:08JamesValleroyadd note92016-10-13 21:49:06David JonesAdded infromation about connecting to the FBX using ssh over Tor82016-10-13 21:09:31David JonesAdded information about admin account for first log in to Plinth72016-09-05 09:42:36ElViroloRemoving my previous contribution, as info already present in original version.62016-09-05 09:39:05ElVirolo52016-09-05 09:26:15ElViroloAdded "Users created via Plinth" paragraph42015-12-21 19:42:10JamesValleroyupdate default account32015-12-21 19:33:56JamesValleroyfix outline level22015-12-15 19:31:18PhilippeBaretAdded definition title12015-09-16 16:22:37SunilMohanAdapaNew manual page for secure shell access
Secure Shell (SSH) Sever
What is Secure Shell?FreedomBox runs openssh-server server by default allowing remote logins from all interfaces. If your hardware device is connected to a monitor and a keyboard, you may login directly as well. Regular operation of FreedomBox does not require you to use the shell. However, some tasks or identifying a problem may require you to login to a shell.
Setting Up A User Account
FreedomBox First Log In: Admin AccountWhen creating an account in FreedomBox's web interface for the first time, this user will automatically have administrator capabilities. Admin users are able to log in using ssh (see Logging In below) and have superuser privileges via sudo.
Default User AccountNote: If you can access FreedomBox's web interface, then you don't need to do this. You can use the user account created in FreedomBox's web interface to connect to SSH. The pre-built FreedomBox images have a default user account called "fbx". However the password is not set for this account, so it will not be possible to log in with this account by default. There is a script included in the freedom-maker program, that will allow you to set the password for this account, if it is needed. To set a password for the "fbx" user: 1. Decompress the image file. 2. Get a copy of freedom-maker from . 3. Run sudo ./bin/passwd-in-image <image-file> fbx. 4. Copy the image file to SD card and boot device as normal. The "fbx" user also has superuser privileges via sudo.
Logging In
LocalTo login via SSH, to your FreedomBox: Replace fbx with the name of the user you wish to login as. freedombox should be replaced with the hostname or IP address of you FreedomBox device as found in the Quick Start process. fbx is the default user present on FreedomBox with superuser privileges. Any other user created using FreedomBox and belonging to the group admin will be able to login. The root account has no password set and will not be able to login. Access will be denied to all other users. fbx and users in admin group will also be able to login on the terminal directly. Other users will be denied access. If you repeatedly try to login as a user and fail, you will be blocked from logging in for some time. This is due to libpam-abl package that FreedomBox installs by default. To control this behavior consult libpam-abl documentation.
SSH over TorIf in FreedomBox you have enabled onion services via Tor, you can access your FreedomBox using ssh over Tor. On a GNU/Linux computer, install netcat-openbsd. Edit ~/.ssh/config to enable connections over Tor. Add the following: Replace USERNAME with, e.g., an admin username (see above). Note that in some cases you may need to replace 9050 with 9150. Now to connect to the FreedomBox, open a terminal and type: Replace USERNAME with, e.g., an admin username, and ADDRESS with the onion service address for your FreedomBox.
SSH Over PagekiteIf in FreedomBox you are using Pagekite to expose services to the Internet, you can access your FreedomBox using SSH over Pagekite. On a GNU/Linux computer install netcat-openbsd. Edit ~/.ssh/config to enable connections over Pagekite. Add the following: Now to connect to FreedomBox, open a terminal and type: Replace USERNAME with, e.g., an admin username, and KITENAME with your kite name provided by pagekite.net as configured in FreedomBox.
Becoming SuperuserAfter logging in, if you want to become the superuser for performing administrative activities: Make a habit of logging in as root only when you need to. If you aren't logged in as root, you can't accidentally break everything.
Changing PasswordTo change the password of a user managed by FreedomBox's web interface, use the change password page. However, the fbx default user is not managed by FreedomBox's web interface and its password cannot be changed through it. To change password on the terminal, log in to your FreedomBox as the user whose password you want to change. Then, run the following command: This will ask you for your current password before giving you the opportunity to set a new one. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Security.raw.wiki b/doc/manual/en/Security.raw.wiki new file mode 100644 index 000000000..9b9f521db --- /dev/null +++ b/doc/manual/en/Security.raw.wiki @@ -0,0 +1,32 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Security|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Security == + +Press the ''Show security report'' button to see a report including the following: + * Number of security vulnerabilities in installed version of !FreedomBox. + * Number of security vulnerabilities for each installed app. + * Whether each installed app supports security sandboxing. + * For each enabled app, the security sandbox coverage as a percentage. + +=== Configuration === + +When the ''Restrict console logins'' option is enabled, only users in the ''admin'' group will be able to log in via console, secure shell (SSH) or graphical login. When this option is disabled, any user with an account on !FreedomBox will be able to log in. They may be able to access some services without further authorization. This option should only be disabled if all the users of the system are well trusted. If you wish to use your !FreedomBox machine also as a desktop and allow non-admin users to login via GUI, this option must be disabled. You can define the list of users belonging to ''admin'' group in the [[../Users|Users]] section. + +{{attachment:Security.png}} + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Security.raw.xml b/doc/manual/en/Security.raw.xml deleted file mode 100644 index 1b13f0e07..000000000 --- a/doc/manual/en/Security.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Security32019-10-11 23:17:39SunilMohanAdapaClarify information regarding restricting console logins22016-08-31 17:40:56DrahtseilScreenshot12016-08-31 17:37:33Drahtseilcreation
SecurityWhen the Restrict console logins option is enabled, only users in the admin group will be able to log in via console, secure shell (SSH) or graphical login. When this option is disabled, any user with an account on FreedomBox will be able to log in. They may be able to access some services without further authorization. This option should only be disabled if all the users of the system are well trusted. If you wish to use your FreedomBox machine also as a desktop and allow non-admin users to login via GUI, this option must be disabled. You can define the list of users belonging to admin group in the Users section. Security.png Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/ServiceDiscovery.raw.wiki b/doc/manual/en/ServiceDiscovery.raw.wiki new file mode 100644 index 000000000..cd679f18f --- /dev/null +++ b/doc/manual/en/ServiceDiscovery.raw.wiki @@ -0,0 +1,25 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/ServiceDiscovery|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Service Discovery == + +Service discovery allows other devices on the network to discover your !FreedomBox and services running on it. If a client on the local network supports mDNS, it can find your !FreedomBox at .local (for example: freedombox.local). + +It also allows !FreedomBox to discover other devices and services running on your local network. + +Service discovery is not essential and works only on internal networks. It may be disabled to improve security especially when connecting to a hostile local network. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/ServiceDiscovery.raw.xml b/doc/manual/en/ServiceDiscovery.raw.xml deleted file mode 100644 index e282a68b0..000000000 --- a/doc/manual/en/ServiceDiscovery.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/ServiceDiscovery22017-01-02 13:17:40JamesValleroymention .local address12016-08-21 09:48:13DrahtseilCreated Service Discovery
Service DiscoveryService discovery allows other devices on the network to discover your FreedomBox and services running on it. If a client on the local network supports mDNS, it can find your FreedomBox at <hostname>.local (for example: freedombox.local). It also allows FreedomBox to discover other devices and services running on your local network. Service discovery is not essential and works only on internal networks. It may be disabled to improve security especially when connecting to a hostile local network. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Shadowsocks.raw.wiki b/doc/manual/en/Shadowsocks.raw.wiki new file mode 100644 index 000000000..70e405b3b --- /dev/null +++ b/doc/manual/en/Shadowsocks.raw.wiki @@ -0,0 +1,41 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Shadowsocks|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Shadowsocks (SOCKS5 proxy) == +|| {{attachment:Shadowsocks-icon_en_V01.png|Shadowsocks icon}} || + +'''Available since''': version 0.18.0 + +=== What is Shadowsocks? === +[[https://shadowsocks.org/en/index.html|Shadowsocks]] is a lightweight and secure SOCKS5 proxy, designed to protect your Internet traffic. It can be used to bypass Internet filtering and censorship. Your !FreedomBox can run a Shadowsocks client which can connect to a Shadowsocks server. It will also run a SOCKS5 proxy. Local devices can connect to this proxy, and their data will be encrypted and proxied through the Shadowsocks server. + +=== Using the Shadowsocks client? === + +The current implementation of Shadowsocks in !FreedomBox only supports configuring !FreedomBox as a Shadowsocks client. The current use case for Shadowsocks is as follows: + * Shadowsocks client (!FreedomBox) is in a region where some parts of the Internet are blocked or censored. + * Shadowsocks server is in a different region, which doesn't have these blocks. + * The !FreedomBox provides SOCKS proxy service on the local network for other devices to make use of its Shadowsocks connection. + +At a future date it will be possible to configure !FreedomBox as Shadowsocks server. + +=== Configuring your FreedomBox for the Shadowsocks client === + +To enable Shadowsocks, first navigate to the Socks5 Proxy (Shadowsocks) page and install it. + +Server: the Shadowsocks server is not the !FreedomBox IP or URL; rather, it will be another server or VPS that has been configured as a Shadowsocks server. There are also some public Shadowsocks servers listed on the web, but be aware that whoever operates the server can see where requests are going, and any non-encrypted data will be visible to them. + +To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, browser or application to http://freedombox_address:1080/ + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Shadowsocks.raw.xml b/doc/manual/en/Shadowsocks.raw.xml deleted file mode 100644 index 350d51d8a..000000000 --- a/doc/manual/en/Shadowsocks.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Shadowsocks52020-05-30 18:09:03SunilMohanAdapaUpdate the title to emphasize app name over its generic name42020-05-23 19:56:36JamesValleroyadd TableOfContents32020-05-23 17:04:27JamesValleroyremove redundant reference to Plinth22019-05-10 22:54:33JamesValleroyremove wiki links12018-01-04 19:59:57David Jones
Shadowsocks (SOCKS5 proxy)
What is Shadowsocks?Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect your Internet traffic. It can be used to bypass Internet filtering and censorship. Your FreedomBox can run a Shadowsocks client which can connect to a Shadowsocks server. It will also run a SOCKS5 proxy. Local devices can connect to this proxy, and their data will be encrypted and proxied through the Shadowsocks server. Note: Shadowsocks is available in FreedomBox starting with version 0.18.
Using the Shadowsocks client?The current implementation of Shadowsocks in FreedomBox only supports configuring FreedomBox as a Shadowsocks client. The current use case for Shadowsocks is as follows: Shadowsocks client (FreedomBox) is in a region where some parts of the Internet are blocked or censored. Shadowsocks server is in a different region, which doesn't have these blocks. The FreedomBox provides SOCKS proxy service on the local network for other devices to make use of its Shadowsocks connection. At a future date it will be possible to configure FreedomBox as Shadowsocks server.
Configuring your FreedomBox for the Shadowsocks clientTo enable Shadowsocks, first navigate to the Socks5 Proxy (Shadowsocks) page and install it. Server: the Shadowsocks server is not the FreedomBox IP or URL; rather, it will be another server or VPS that has been configured as a Shadowsocks server. There are also some public Shadowsocks servers listed on the web, but be aware that whoever operates the server can see where requests are going, and any non-encrypted data will be visible to them. To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, browser or application to Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Sharing.raw.wiki b/doc/manual/en/Sharing.raw.wiki new file mode 100644 index 000000000..3b5462af0 --- /dev/null +++ b/doc/manual/en/Sharing.raw.wiki @@ -0,0 +1,52 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Sharing|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Sharing (File Publishing) == +|| {{attachment:Sharing-icon_en_V01.png|Sharing icon}} || + +'''Available since''': version 0.25 + +=== What Is Sharing App? === + +Sharing app allows you to share content over the web. Shared content can be individual files or whole directories. + +The content can be shared publicly or restricted to the users of listed allowed groups. Allowed users will be able to access the shared content from their web browser at {{{https://your_freedombox/share/content_name}}}. Users not belonging to any of the allowed groups won't see or access the content through this mechanism. + +=== Setting Up Shares === + +For the users to access the content through their browser it must exist and have a share. A share is an entry in the Sharing app relating: + * the Name (an thereby the URL) with which the users will ask for the content, + * the Disk Path of the content to be served and + * the sharing mode. On restricted mode, it also has the list of allowed groups. +Many shares can coexist in the same server. + +Only admins can create, edit or remove shares. They'll find the Sharing app in the Apps section of !FreedomBox web interface. Sharing app is an easy to use web application with an evident interface. + +Each share has its own sharing mode (public or restricted) setting. Only groups recognized by !FreedomBox service can be combined in the list of allowed groups. Groups created in the CLI won't be offered by the Sharing app. + +=== Providing/Updating Content === + +The content can be created before or after the share is created and they can be updated independently. + +The content doesn't need to be provided by an admin either. Any user with write access to the share's disk path can create or update it. + +Multiple shares might point to the same content. + +If you are user of !FreedomBox and your admin refuses to create shares for you, and you don't need to restrict the access to your content, you still can fall back to the [[FreedomBox/Manual/Apache_userdir|User Websites]] mechanism or the P2P networks ([[FreedomBox/Manual/Deluge|Deluge]] or [[FreedomBox/Manual/Transmission|Transmission]] for Torrent, or [[FreedomBox/Manual/MLDonkey|MLDonkey]]) to publish your files. + +=== Technicalities === +Sharing will share the content using the built-in Apache web server. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Snapshots.raw.wiki b/doc/manual/en/Snapshots.raw.wiki new file mode 100644 index 000000000..ceebbfafd --- /dev/null +++ b/doc/manual/en/Snapshots.raw.wiki @@ -0,0 +1,32 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Snapshots|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Storage Snapshots == + +''Snapshots'' allows you to create filesystem snapshots, and rollback the system to a previous snapshot. + + * Note: This feature requires a Btrfs filesystem. All of the !FreedomBox stable disk images use Btrfs. + +{{attachment:snapshots_v2.png|Snapshots|width=800}} + +There are three types of snapshots: + * boot: Taken when the system boots up + * Software Installation (apt): Taken when software is installed or updated + * Timeline: Taken hourly, daily, weekly, monthly, or yearly + +The Timeline and Software Installation snapshots can be turned on or off, and you can limit the number of each type of Timeline snapshot. You can also set a percentage of free disk space to be maintained. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Snapshots.raw.xml b/doc/manual/en/Snapshots.raw.xml deleted file mode 100644 index 83af2468b..000000000 --- a/doc/manual/en/Snapshots.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Snapshots32020-05-30 18:33:06SunilMohanAdapaMatch title with FreedomBox interface22018-03-10 15:11:41JosephNuthalapatiFix oversized image12017-11-14 02:24:01JamesValleroynew page for snapshots module
Storage SnapshotsSnapshots allows you to create filesystem snapshots, and rollback the system to a previous snapshot. Note: This feature requires a Btrfs filesystem. All of the FreedomBox stable disk images use Btrfs. Snapshots Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Storage.raw.wiki b/doc/manual/en/Storage.raw.wiki new file mode 100644 index 000000000..fbb1ae797 --- /dev/null +++ b/doc/manual/en/Storage.raw.wiki @@ -0,0 +1,39 @@ +## page was renamed from FreedomBox/Manual/Disks +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Storage|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Storage == + +''Storage'' allows you to see the storage devices attached to your !FreedomBox and their disk space usage. + +!FreedomBox can automatically detect and mount removable media like USB flash drives. They are listed under the ''Removable Devices'' section along with an option to eject them. + +If there is some free space left after the root partition, the option to expand the root partition is also available. This is typically not shown, since expanding the root partition happens automatically when the !FreedomBox starts up for the first time. + +{{attachment:Storage.png||width=800}} + +=== Advanced Storage Operations === + +Cockpit provides many advanced storage features over those offered by !FreedomBox. Both !FreedomBox and Cockpit operate over Udisks2 storage daemon and are hence compatible with each other. Some of the functions provided by Cockpit include: + + * Format a disk or partition with a fresh filesystem + * Add, remove partitions or wipe the partition table + * Create and unlock encrypted file systems + * Create and manage RAID devices + +{{attachment:storage-cockpit.png}} + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Storage.raw.xml b/doc/manual/en/Storage.raw.xml deleted file mode 100644 index 6bc831cc7..000000000 --- a/doc/manual/en/Storage.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Storage122020-05-24 02:11:30SunilMohanAdapaAdd advanced storage operations section referring to Cockpit112018-12-18 00:01:12JamesValleroyfix screenshot parameter102018-12-04 06:20:20JosephNuthalapatiRestrict screenshot width to 800px92018-09-25 06:01:56JosephNuthalapatiUpdate description to match current functionality82018-09-25 05:51:15JosephNuthalapatiReplace screenshot with the latest version72018-03-05 12:17:19JosephNuthalapatiRenamed from 'FreedomBox/Manual/Disks'.62018-03-05 12:16:41JosephNuthalapatiRenaming Disks to Storage52017-04-09 13:45:57JamesValleroyupdate note about issue42017-03-31 20:16:25Drahtseilupdate screenshot with "expand partition"32017-02-10 22:33:01JamesValleroyadd warning about non-functional feature22016-08-31 17:10:11Drahtseilscreenshot12016-08-31 17:09:10DrahtseilDisks creation
StorageStorage allows you to see the storage devices attached to your FreedomBox and their disk space usage. FreedomBox can automatically detect and mount removable media like USB flash drives. They are listed under the Removable Devices section along with an option to eject them. If there is some free space left after the root partition, the option to expand the root partition is also available. This is typically not shown, since expanding the root partition happens automatically when the FreedomBox starts up for the first time. Storage.png
Advanced Storage OperationsCockpit provides many advanced storage features over those offered by FreedomBox. Both FreedomBox and Cockpit operate over Udisks2 storage daemon and are hence compatible with each other. Some of the functions provided by Cockpit include: Format a disk or partition with a fresh filesystem Add, remove partitions or wipe the partition table Create and unlock encrypted file systems Create and manage RAID devices storage-cockpit.png Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Syncthing.raw.wiki b/doc/manual/en/Syncthing.raw.wiki new file mode 100644 index 000000000..6cfb734aa --- /dev/null +++ b/doc/manual/en/Syncthing.raw.wiki @@ -0,0 +1,65 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Syncthing|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Syncthing (File Synchronization) == +|| {{attachment:Syncthing-icon_en_V01.png|Syncthing icon}} || + +'''Available since''': version 0.14 + +With ''Syncthing'' installed on your !FreedomBox, you can synchronize content from other devices to your !FreedomBox and vice-versa. For example, you can keep the photos taken on your mobile phone synchronized to your !FreedomBox. + +Users should keep in mind that Syncthing is a peer-to-peer synchronization solution, not a client-server one. This means that the !FreedomBox isn't really the server and your other devices clients. They're all devices from Syncthing's perspective. You can use Syncthing to synchronize your files between any of your devices. The advantage that !FreedomBox provides is that it is a server that's always running. Suppose you want your photos on your phone to be synchronized to your laptop, if you simply sync the photos to the !FreedomBox, the laptop can get them from the !FreedomBox whenever it comes online the next time. You don't have to be worried about your other devices being online for synchronization. If your !FreedomBox is one of the devices set up with your Syncthing shared folder, you can rest assured that your other devices will eventually get the latest files once they come online. + +After installation follow the instructions in the [[https://docs.syncthing.net/intro/getting-started.html|getting started of the Syncthing project]]. +Syncthing allows individual folders to be selectively shared with other devices. Devices must be paired up before sharing by scanning QR codes or entering the device ids manually. Syncthing has a discovery service for easily identifying the other devices on the same network having Syncthing installed. + +In order to access to the web client of the Syncthing instance running on your !FreedomBox, use the path ''/syncthing''. This web client is currently only accessible to the users of the !FreedomBox that have administrator privileges, though it might be accessible to all !FreedomBox users in a future release. + +{{attachment:Syncthing_GUI.png|Syncthing web interface|width=800}} + +Syncthing has android apps available on the [[https://f-droid.org/repository/browse/?fdid=com.nutomic.syncthingandroid | F-Droid]] and [[https://play.google.com/store/apps/details?id=com.nutomic.syncthingandroid |Google Play]] app stores. Cross-platform desktop apps are also available. + + +To learn more about Syncthing, please visit their [[https://syncthing.net | official website]] and [[https://docs.syncthing.net | documentation]]. + +=== Synchronizing over Tor === + +Syncthing should automatically sync with your !FreedomBox even if it is only accessible as a Tor Onion Service. + +If you would like to proxy your Syncthing client over Tor, set the `all_proxy` environment variable: + +{{{ +$ all_proxy=socks5://localhost:9050 syncthing +}}} + +For more information, see the Syncthing documentation on [[https://docs.syncthing.net/users/proxying.html | using proxies]]. + +=== Avoiding Syncthing Relays === + +Syncthing uses dynamic connections by default to connect with other peers. This means that if you are synchronizing over the Internet, the data might have to go through public Syncthing relays to reach your devices. This doesn't take advantage of the fact that your !FreedomBox has a public IP address. + +When adding your !FreedomBox as a device in other Syncthing clients, set the address like "tcp://" instead of "dynamic". This allows your Syncthing peers to directly connect to your !FreedomBox avoiding the need for relays. It also allows for fast on-demand syncing if you don't want to keep Syncthing running all the time on your mobile devices. + +=== Using Syncthing with other applications === + +==== Password Manager ==== + +Password managers that store their databases in files are suitable for synchronization using Syncthing. The following example describes using a free password manager called KeePassXC in combination with Syncthing to serve as a replacement for proprietary password managers that store your passwords in the cloud. + +KeePassXC stores usernames, passwords etc. in files have the .kdbx extension. These kdbx files can be stored in a Syncthing shared folder to keep them synchronized on multiple machines. Free software applications which can read this file format are available for both desktop and mobile. You typically have to just point the application at the .kdbx file and enter the master password to access your stored credentials. For example, the same kdbx file can be accessed by using KeePassXC on desktop and KeePassDX on Android. KeePassXC can also be used to fill credentials into login fields in the browser by installing a browser extension. + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Syncthing.raw.xml b/doc/manual/en/Syncthing.raw.xml deleted file mode 100644 index 1d868891a..000000000 --- a/doc/manual/en/Syncthing.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Syncthing202020-05-30 18:00:50SunilMohanAdapaUpdate the title to emphasize app name over its generic name192020-05-23 19:53:08JamesValleroyadd TableOfContents182019-11-11 17:00:38JosephNuthalapatiRename Tor Hidden Service to Tor Onion Service172019-11-01 01:09:33JosephNuthalapatiMinor formatting changes162019-10-31 15:01:33JosephNuthalapatiMinor change to headings152019-10-31 14:42:33JosephNuthalapatiAdd synchronized password manager142019-10-27 05:53:05JosephNuthalapatiAdd tip to avoid using Syncthing relays132019-09-11 15:33:32fioddorCode decoration122019-06-09 11:07:46David Jones112019-06-09 11:00:48David Jonesadded information about syncthing and tor hidden service102018-03-10 04:32:57JosephNuthalapatiFix oversized image92017-10-22 14:57:58Drahtseil82017-10-22 14:57:09DrahtseilSyncthing GUI image72017-10-22 14:54:54DrahtseilSome rewording etc.62017-10-21 14:59:53DrahtseilTitel same as in Plinth GUI; standard footer; some basic restructuring before I will update the docu more in detail52017-04-04 10:39:36JosephNuthalapati42017-03-23 10:54:49JosephNuthalapatiRewrote the section on Syncthing's role in FreedomBox32017-03-23 05:12:13SunilMohanAdapaMinor formatting22017-03-23 05:11:43SunilMohanAdapaAdd note about availability of Syncthing12017-03-23 02:11:00JosephNuthalapatiCreated wiki page for Syncthing
Syncthing (File Synchronization)With Syncthing installed on your FreedomBox, you can synchronize content from other devices to your FreedomBox and vice-versa. For example, you can keep the photos taken on your mobile phone synchronized to your FreedomBox. Available since version: 0.14 Users should keep in mind that Syncthing is a peer-to-peer synchronization solution, not a client-server one. This means that the FreedomBox isn't really the server and your other devices clients. They're all devices from Syncthing's perspective. You can use Syncthing to synchronize your files between any of your devices. The advantage that FreedomBox provides is that it is a server that's always running. Suppose you want your photos on your phone to be synchronized to your laptop, if you simply sync the photos to the FreedomBox, the laptop can get them from the FreedomBox whenever it comes online the next time. You don't have to be worried about your other devices being online for synchronization. If your FreedomBox is one of the devices set up with your Syncthing shared folder, you can rest assured that your other devices will eventually get the latest files once they come online. After installation follow the instructions in the getting started of the Syncthing project. Syncthing allows individual folders to be selectively shared with other devices. Devices must be paired up before sharing by scanning QR codes or entering the device ids manually. Syncthing has a discovery service for easily identifying the other devices on the same network having Syncthing installed. In order to access to the web client of the Syncthing instance running on your FreedomBox, use the path /syncthing. This web client is currently only accessible to the users of the FreedomBox that have administrator privileges, though it might be accessible to all FreedomBox users in a future release. Syncthing web interface Syncthing has android apps available on the F-Droid and Google Play app stores. Cross-platform desktop apps are also available. To learn more about Syncthing, please visit their official website and documentation.
Synchronizing over TorSyncthing should automatically sync with your FreedomBox even if it is only accessible as a Tor Onion Service. If you would like to proxy your Syncthing client over Tor, set the all_proxy environment variable: For more information, see the Syncthing documentation on using proxies.
Avoiding Syncthing RelaysSyncthing uses dynamic connections by default to connect with other peers. This means that if you are synchronizing over the Internet, the data might have to go through public Syncthing relays to reach your devices. This doesn't take advantage of the fact that your FreedomBox has a public IP address. When adding your FreedomBox as a device in other Syncthing clients, set the address like "tcp://<my.freedombox.domain>" instead of "dynamic". This allows your Syncthing peers to directly connect to your FreedomBox avoiding the need for relays. It also allows for fast on-demand syncing if you don't want to keep Syncthing running all the time on your mobile devices.
Using Syncthing with other applications
Password ManagerPassword managers that store their databases in files are suitable for synchronization using Syncthing. The following example describes using a free password manager called KeePassXC in combination with Syncthing to serve as a replacement for proprietary password managers that store your passwords in the cloud. KeePassXC stores usernames, passwords etc. in files have the .kdbx extension. These kdbx files can be stored in a Syncthing shared folder to keep them synchronized on multiple machines. Free software applications which can read this file format are available for both desktop and mobile. You typically have to just point the application at the .kdbx file and enter the master password to access your stored credentials. For example, the same kdbx file can be accessed by using KeePassXC on desktop and KeePassDX on Android. KeePassXC can also be used to fill credentials into login fields in the browser by installing a browser extension. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/TinyTinyRSS.raw.wiki b/doc/manual/en/TinyTinyRSS.raw.wiki new file mode 100644 index 000000000..b89ac70bb --- /dev/null +++ b/doc/manual/en/TinyTinyRSS.raw.wiki @@ -0,0 +1,93 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/TinyTinyRSS|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Tiny Tiny RSS (News Feed Reader) == +|| {{attachment:TinyTinyRSS-icon_en_V01.png|Tiny Tiny RSS icon}} || + +'''Available since''': version 0.9 + +Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to allow reading news from any location, while feeling as close to a real desktop application as possible. + +Any user created through !FreedomBox web interface will be able to login and use this app. Each user has their own feeds, state and preferences. + +=== Using the Web Interface === + +When enabled, Tiny Tiny RSS will be available from ''/tt-rss'' path on the web server. Any user created through !FreedomBox will be able to login and use this app. + +{{attachment:ttrss.png|Tiny Tiny RSS|width=800}} + +==== Adding a new feed ==== + +1. Go to the website you want the RSS feed for and copy the RSS/Atom feed link from it. + +{{attachment:Select-RSS-feed.png|Selecting feeds|width=800}} + +2. Select "Subscribe to feed.." from the Actions dropdown. + +{{attachment:Subscribe-to-feed.png|Subscribe to feed}} + +3. In the dialog box that appears, paste the URL for copied in step 1 and click the '''Subscribe''' button. + +{{attachment:Subscribe-dialog.png|Subscription dialog box|width=800}} + +Give the application a minute to fetch the feeds after clicking Subscribe. + +In some websites, the RSS feeds button isn't clearly visible. In that case, you can simply paste the website URL into the Subscribe dialog (step 3) and let TT-RSS automatically detect the RSS feeds on the page. + +You can try this now with the homepage of [[https://en.wikinews.org/wiki/Main_Page|WikiNews]] + +As you can see in the image below, TT-RSS detected and added the Atom feed of !WikiNews to our list of feeds. + +{{attachment:WikiNews-feed.png|WikiNews feed added}} + +If you don't want to keep this feed, right click on the feed shown in the above image, select '''Edit feed''' and click '''Unsubscribe''' in the dialog box that appears. + +{{attachment:Unsubscribe.png|Unsubscribe from a feed|width=800}} + + +==== Importing your feeds from another feed reader ==== + +In your existing feed reader, find an option to ''Export'' your feeds to a file. Prefer the OPML file format if you have to choose between multiple formats. Let's say your exported feeds file is called Subscriptions.opml + +Click on the ''Actions'' menu at the top left corner and select ''Preferences''. You will be taken to another page. + +Select the second tab called ''Feeds'' in the top header. Feeds has several sections. The second one is called ''OPML''. Select it. + +{{attachment:OPML.png| OPML feeds page|width=960}} + +To import your Subscriptions.opml file into TT-RSS, + 1. Click ''Browse'' and select the file from your file system + 2. Click ''Import my OPML'' + +After importing, you'll be taken to the '''Feeds''' section that's above the OPML section in the page. You can see that the feeds from your earlier feed reader are now imported into Tiny Tiny RSS. You can now start using Tiny Tiny RSS as your primary feed reader. + +In the next section, we will discuss setting up the mobile app, which can let you read your feeds on the go. + +=== Using the Mobile App === + +The official Android app from the Tiny Tiny RSS project works with !FreedomBox's Tiny Tiny RSS Server. The older TTRSS-Reader application is known '''not''' to work. + +The official Android app is unfortunately only available on the Google Play Store and not on F-Droid. You can still obtain the source code and build the apk file yourself. + +To configure, first install the application, then in the setting page, set URL as ''https:///tt-rss-app/''. Set your user name and password in the Login details as well as HTTP Authentication details. If your !FreedomBox does not have a valid HTTPS certificate, then in settings request allowing any SSL certificate and any host. + +{{attachment:ttrssapp1.png|Tiny Tiny RSS|width=288}} +{{attachment:ttrssapp2.png|Tiny Tiny RSS|width=288}} +{{attachment:ttrssapp3.png|Tiny Tiny RSS|width=288}} +{{attachment:ttrssapp4.png|Tiny Tiny RSS|width=288}} +{{attachment:ttrssapp5.png|Tiny Tiny RSS|width=288}} + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/TinyTinyRSS.raw.xml b/doc/manual/en/TinyTinyRSS.raw.xml deleted file mode 100644 index 1ff031e3b..000000000 --- a/doc/manual/en/TinyTinyRSS.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/TinyTinyRSS132020-05-30 18:06:10SunilMohanAdapaUpdate the title to emphasize app name over its generic name122020-05-23 19:55:19JamesValleroyadd TableOfContents112020-05-23 17:03:46JamesValleroyrename plinth -> freedombox102018-03-11 03:05:29JosephNuthalapatiFix oversized images92017-10-18 13:51:27JosephNuthalapatiRemove link to source code as this wiki seems to have banned anything that starts with git.tt82017-10-18 13:47:46JosephNuthalapatiAdd importing OPML feeds and link to source code of TT-RSS Android App72017-10-18 12:58:46JosephNuthalapatiAdd documentation for automatic detection of RSS feeds and the Unsubscribe option62017-10-18 12:37:03JosephNuthalapatiAdd screenshots for subscribing to a new RSS feed52017-10-16 12:11:52SunilMohanAdapaMinor styling42017-10-16 12:08:36SunilMohanAdapaAdd information about mobile application32016-12-31 03:49:54JamesValleroyadd screenshot22016-12-31 03:44:56JamesValleroyadd user info12016-09-04 10:18:59Drahtseilstub created
Tiny Tiny RSS (News Feed Reader)Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to allow reading news from any location, while feeling as close to a real desktop application as possible. Any user created through FreedomBox web interface will be able to login and use this app. Each user has their own feeds, state and preferences.
Using the Web InterfaceWhen enabled, Tiny Tiny RSS will be available from /tt-rss path on the web server. Any user created through FreedomBox will be able to login and use this app. Tiny Tiny RSS
Adding a new feed1. Go to the website you want the RSS feed for and copy the RSS/Atom feed link from it. Selecting feeds 2. Select "Subscribe to feed.." from the Actions dropdown. Subscribe to feed 3. In the dialog box that appears, paste the URL for copied in step 1 and click the Subscribe button. Subscription dialog box Give the application a minute to fetch the feeds after clicking Subscribe. In some websites, the RSS feeds button isn't clearly visible. In that case, you can simply paste the website URL into the Subscribe dialog (step 3) and let TT-RSS automatically detect the RSS feeds on the page. You can try this now with the homepage of WikiNews As you can see in the image below, TT-RSS detected and added the Atom feed of WikiNews to our list of feeds. WikiNews feed added If you don't want to keep this feed, right click on the feed shown in the above image, select Edit feed and click Unsubscribe in the dialog box that appears. Unsubscribe from a feed
Importing your feeds from another feed readerIn your existing feed reader, find an option to Export your feeds to a file. Prefer the OPML file format if you have to choose between multiple formats. Let's say your exported feeds file is called Subscriptions.opml Click on the Actions menu at the top left corner and select Preferences. You will be taken to another page. Select the second tab called Feeds in the top header. Feeds has several sections. The second one is called OPML. Select it. OPML feeds page To import your Subscriptions.opml file into TT-RSS, Click Browse and select the file from your file system Click Import my OPML After importing, you'll be taken to the Feeds section that's above the OPML section in the page. You can see that the feeds from your earlier feed reader are now imported into Tiny Tiny RSS. You can now start using Tiny Tiny RSS as your primary feed reader. In the next section, we will discuss setting up the mobile app, which can let you read your feeds on the go.
Using the Mobile AppThe official Android app from the Tiny Tiny RSS project works with FreedomBox's Tiny Tiny RSS Server. The older TTRSS-Reader application is known not to work. The official Android app is unfortunately only available on the Google Play Store and not on F-Droid. You can still obtain the source code and build the apk file yourself. To configure, first install the application, then in the setting page, set URL as . Set your user name and password in the Login details as well as HTTP Authentication details. If your FreedomBox does not have a valid HTTPS certificate, then in settings request allowing any SSL certificate and any host. Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Tor.raw.wiki b/doc/manual/en/Tor.raw.wiki new file mode 100644 index 000000000..28c50ae45 --- /dev/null +++ b/doc/manual/en/Tor.raw.wiki @@ -0,0 +1,96 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Tor|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Tor (Anonymity Network) == +|| {{attachment:Tor-icon_en_V01.png|Tor icon}} || + +'''Available since''': version 0.3 + +=== What is Tor? === + +Tor is a network of servers operated by volunteers. It allows users of these servers to improve their privacy and security while surfing on the Internet. You and your friends are able to access to your !FreedomBox via Tor network without revealing its IP address. Activating Tor application on your !FreedomBox, you will be able to offer remote services (chat, wiki, file sharing, etc...) without showing your location. This application will give you a better protection than a public web server because you will be less exposed to intrusive people on the web. + +=== Using Tor to browse anonymously === +Tor Browser is the recommended way to browse the web using Tor. You can download the Tor Browser from https://www.torproject.org/projects/torbrowser.html and follow the instructions on that site to install and run it. + +=== Using Tor Onion Service to access your FreedomBox === +Tor Onion Service provides a way to access your !FreedomBox, even if it's behind a router, firewall, or carrier-grade NAT (i.e., your Internet Service Provider does not provide a public IPv4 address for your router). + +To enable Tor Onion Service, first navigate to the Anonymity Network (Tor) page. (If you don't see it, click on the !FreedomBox logo at the top-left of the page, to go to the main Apps page.) On the Anonymity Network (Tor) page, under Configuration, check "Enable Tor Onion Service", then press the Update setup button. Tor will be reconfigured and restarted. + +After a while, the page will refresh and under Status, you will see a table listing the Onion Service .onion address. Copy the entire address (ending in .onion) and paste it into the Tor Browser's address field, and you should be able to access your !FreedomBox. (You may see a certificate warning because !FreedomBox has a self-signed certificate.) + +{{attachment:tor_browser_plinth.png|Tor Configuration - FreedomBox|width=800}} + +Currently only HTTP (port 80), HTTPS (port 443), and SSH (port 22) are accessible through the Tor Onion Service configured on the !FreedomBox. + +=== Apps accessible via Tor === + +The following apps can be accessed over Tor. Note that this list is not exhaustive. + + * Calendar and Addressbook ([[FreedomBox/Manual/Radicale|Radicale]]) + * File Synchronization ([[FreedomBox/Manual/Syncthing|Syncthing]]) + * Feed reader ([[FreedomBox/Manual/TinyTinyRSS|TinyTinyRSS]]) + * Web Search ([[FreedomBox/Manual/Searx|Searx]]) + * Wiki ([[FreedomBox/Manual/MediaWiki|MediaWiki]]) + * Wiki and Blog ([[FreedomBox/Manual/Ikiwiki|Ikiwiki]]) + +=== Running a Tor relay === + +When Tor is installed, it is configured by default to run as a bridge relay. The relay or bridge option can be disabled through the Tor configuration page in !FreedomBox. + +At the bottom of the Tor page in !FreedomBox, there is a list of ports used by the Tor relay. If your !FreedomBox is behind a router, you will need to configure port forwarding on your router so that these ports can be reached from the public Internet. + +The requirements to run a relay are listed in the [[https://community.torproject.org/relay/|Tor Relay Guide]]. In short, it is + * recommended that a relay has at least 16 Mbit/s (Mbps) upload and download bandwidth available for Tor. More is better. + * required that a Tor relay be allowed to use a minimum of 100 GByte of outbound and of incoming traffic per month. + * recommended that a <40 Mbit/s non-exit relay should have at least 512 MB of RAM available; A relay faster than 40 Mbit/s should have at least 1 GB of RAM. + +=== (Advanced) Usage as a SOCKS proxy === +!FreedomBox provides a Tor SOCKS port that other applications can connect to, in +order to route their traffic over the Tor network. This port is accessible on +any interfaces configured in the internal firewall zone. To configure the +application, set SOCKS Host to the internal network connection's IP address, and +set the SOCKS Port to 9050. + +==== Example with Firefox ==== + +Your web browser can be configured to use the Tor network for all of your +browsing activity. This allows for censorship circumvention and also hides your +IP address from websites during regular browsing. For anonymity, using tor +browser is recommended. + +Configure your local !FreedomBox IP address and port 9050 as a SOCKS v5 proxy in +Firefox. There are extensions to allow for easily turning the proxy on and off. + +{{attachment:tor-socks-firefox.png|Configuring Firefox with Tor SOCKS proxy|width=800}} + +With the SOCKS proxy configured, you can now access any onion URL directly +from Firefox. !FreedomBox itself has an onion v3 address that you can connect to +over the Tor network (bookmark this for use in emergency situations). + +=== Circumventing Tor censorship === +If your ISP is trying to block Tor traffic, you can use tor bridge relays to connect to the tor network. + +1. Get the bridge configuration from the [[https://bridges.torproject.org/bridges|Tor BridgeDB]] + +{{attachment:tor-bridge-db.png|Tor BridgeDB|width=800}} + +2. Add the lines to your !FreedomBox Tor configuration as show below. + +{{attachment:tor-bridge-configuration.png|Tor Configuration Page|width=800}} + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Tor.raw.xml b/doc/manual/en/Tor.raw.xml deleted file mode 100644 index b9e0d7c81..000000000 --- a/doc/manual/en/Tor.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Tor262020-05-30 17:52:23SunilMohanAdapaUpdate the title to emphasize app name over its generic name252020-05-23 19:44:12JamesValleroyadd TableOfContents242020-05-23 17:00:18JamesValleroyrename plinth -> freedombox232019-11-28 22:24:36SunilMohanAdapaUpdate link to Tor Relay Guide Closes freedom-maker#169, thanks to Jamie Campbell222019-11-11 16:55:49JosephNuthalapatiRename Hidden Service to Onion Service212019-10-27 06:23:30JosephNuthalapatiAdd screenshot for using Tor SOCKS proxy with Firefox202019-10-27 06:18:47JosephNuthalapatiAdd example for using Tor SOCKS proxy with Firefox192019-06-09 10:47:56David Jonesadded two more apps to list182019-05-22 17:10:34David JonesCorrected formatting; added transition sentence.172019-05-22 17:05:45David JonesStarted a list of apps accessible via Tor162018-12-30 19:13:56Drahtseilrelay requirements152018-03-19 06:27:56JosephNuthalapatiAdd section on circumventing tor censorship142018-03-19 06:25:43JosephNuthalapatiAdd section on circumventing tor censorship132017-01-07 16:00:24JamesValleroyadd image122017-01-07 15:21:27JamesValleroyplural112016-12-31 02:19:46JamesValleroymention ssh102016-12-31 02:19:03JamesValleroyadd relay info92016-12-23 18:31:29JamesValleroyundo outline level change82016-12-23 18:30:06JamesValleroymove down outline level72016-04-10 07:14:17PhilippeBaretAdded bottom navigation link62015-12-15 16:54:58PhilippeBaretText finishing52015-12-15 16:40:11PhilippeBaret42015-12-15 16:34:38PhilippeBaretAdded Tor definition32015-09-13 14:54:59SunilMohanAdapaDemote headings one level for inclusion into manual22015-09-13 14:53:54SunilMohanAdapaAdd FreedomBox category and portal12015-09-12 15:55:05JamesValleroycreate tor page
Tor (Anonymity Network)
What is Tor?Tor is a network of servers operated by volunteers. It allows users of these servers to improve their privacy and security while surfing on the Internet. You and your friends are able to access to your FreedomBox via Tor network without revealing its IP address. Activating Tor application on your FreedomBox, you will be able to offer remote services (chat, wiki, file sharing, etc...) without showing your location. This application will give you a better protection than a public web server because you will be less exposed to intrusive people on the web.
Using Tor to browse anonymouslyTor Browser is the recommended way to browse the web using Tor. You can download the Tor Browser from and follow the instructions on that site to install and run it.
Using Tor Onion Service to access your FreedomBoxTor Onion Service provides a way to access your FreedomBox, even if it's behind a router, firewall, or carrier-grade NAT (i.e., your Internet Service Provider does not provide a public IPv4 address for your router). To enable Tor Onion Service, first navigate to the Anonymity Network (Tor) page. (If you don't see it, click on the FreedomBox logo at the top-left of the page, to go to the main Apps page.) On the Anonymity Network (Tor) page, under Configuration, check "Enable Tor Onion Service", then press the Update setup button. Tor will be reconfigured and restarted. After a while, the page will refresh and under Status, you will see a table listing the Onion Service .onion address. Copy the entire address (ending in .onion) and paste it into the Tor Browser's address field, and you should be able to access your FreedomBox. (You may see a certificate warning because FreedomBox has a self-signed certificate.) Tor Configuration - FreedomBox Currently only HTTP (port 80), HTTPS (port 443), and SSH (port 22) are accessible through the Tor Onion Service configured on the FreedomBox.
Apps accessible via TorThe following apps can be accessed over Tor. Note that this list is not exhaustive. Calendar and Addressbook (Radicale) File Synchronization (Syncthing) Feed reader (TinyTinyRSS) Web Search (Searx) Wiki (MediaWiki) Wiki and Blog (Ikiwiki)
Running a Tor relayWhen Tor is installed, it is configured by default to run as a bridge relay. The relay or bridge option can be disabled through the Tor configuration page in FreedomBox. At the bottom of the Tor page in FreedomBox, there is a list of ports used by the Tor relay. If your FreedomBox is behind a router, you will need to configure port forwarding on your router so that these ports can be reached from the public Internet. The requirements to run a relay are listed in the Tor Relay Guide. In short, it is recommended that a relay has at least 16 Mbit/s (Mbps) upload and download bandwidth available for Tor. More is better. required that a Tor relay be allowed to use a minimum of 100 GByte of outbound and of incoming traffic per month. recommended that a <40 Mbit/s non-exit relay should have at least 512 MB of RAM available; A relay faster than 40 Mbit/s should have at least 1 GB of RAM.
(Advanced) Usage as a SOCKS proxyFreedomBox provides a Tor SOCKS port that other applications can connect to, in order to route their traffic over the Tor network. This port is accessible on any interfaces configured in the internal firewall zone. To configure the application, set SOCKS Host to the internal network connection's IP address, and set the SOCKS Port to 9050.
Example with FirefoxYour web browser can be configured to use the Tor network for all of your browsing activity. This allows for censorship circumvention and also hides your IP address from websites during regular browsing. For anonymity, using tor browser is recommended. Configure your local FreedomBox IP address and port 9050 as a SOCKS v5 proxy in Firefox. There are extensions to allow for easily turning the proxy on and off. Configuring Firefox with Tor SOCKS proxy With the SOCKS proxy configured, you can now access any onion URL directly from Firefox. FreedomBox itself has an onion v3 address that you can connect to over the Tor network (bookmark this for use in emergency situations).
Circumventing Tor censorshipIf your ISP is trying to block Tor traffic, you can use tor bridge relays to connect to the tor network. 1. Get the bridge configuration from the Tor BridgeDB Tor BridgeDB 2. Add the lines to your FreedomBox Tor configuration as show below. Tor Configuration Page Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Transmission.raw.wiki b/doc/manual/en/Transmission.raw.wiki new file mode 100644 index 000000000..edc0f667c --- /dev/null +++ b/doc/manual/en/Transmission.raw.wiki @@ -0,0 +1,42 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Transmission|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Transmission (BitTorrent Web Client) == +|| {{attachment:Transmission-icon_en_V01.png|Transmission icon}} || + +'''Available since''': version 0.5 + +=== What is Transmission ? === + +!BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two !BitTorrent web clients available in !FreedomBox: Transmission and [[FreedomBox/Manual/Deluge|Deluge]]. They have similar features, but you may prefer one over the other. + +Transmission is a lightweight !BitTorrent client that is well known for its simplicity and a default configuration that "Just Works". + +=== Screenshot === + +{{attachment:transmission.png|Transmission Web Interface|width=800}} + +=== Using Transmission === + +After installing Transmission, it can be accessed at {{{https:///transmission}}}. Transmission uses single sign-on from !FreedomBox, which means that if you are logged in on your !FreedomBox, you can directly access Transmission without having to enter the credentials again. Otherwise, you will be prompted to login first and then redirected to the Transmission app. + +=== Tips === + +==== Transferring Downloads from the FreedomBox ==== + + 1. Transmission's downloads directory can be added as a shared folder in the "Sharing" app. You can then access your downloads from this shared folder using a web browser. + 2. (Advanced) If you have the ssh access to your !FreedomBox, you can use sftp to browse the downloads directory using a suitable file manager or web browser (e.g. dolphin or Konqueror). + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Transmission.raw.xml b/doc/manual/en/Transmission.raw.xml deleted file mode 100644 index e4eff62ed..000000000 --- a/doc/manual/en/Transmission.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Transmission162020-05-30 17:53:11SunilMohanAdapaUpdate the title to emphasize app name over its generic name152020-05-23 19:44:47JamesValleroyadd TableOfContents142019-10-27 04:42:42JosephNuthalapatiRemove irrelevant known issue132019-10-27 04:41:18JosephNuthalapatiMinor fixes122019-10-27 04:40:38JosephNuthalapati112019-09-04 09:19:59fioddorSecurity recommendation102019-03-22 07:08:45JosephNuthalapatiAdd tips on how to transfer downloads from FreedomBox to local PC92016-12-31 02:07:57JamesValleroyadd login info82016-12-30 19:20:51JamesValleroyreword72016-12-30 19:13:09JamesValleroyadd intro paragraph62016-12-30 18:59:46JamesValleroyno space in "BitTorrent"52016-12-26 18:00:44JamesValleroyadd screenshot42016-09-01 19:04:35Drahtseiladapted title to Plinth wording32016-04-10 07:27:22PhilippeBaretAdded bottom navigation link22015-12-15 20:42:02PhilippeBaret12015-12-15 18:23:33PhilippeBaretAdded Transmission page and definition
Transmission (BitTorrent Web Client)
What is Transmission ?BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two BitTorrent web clients available in FreedomBox: Transmission and Deluge. They have similar features, but you may prefer one over the other. Transmission is a lightweight BitTorrent client that is well known for its simplicity and a default configuration that "Just Works".
ScreenshotTransmission Web Interface
Using TransmissionAfter installing Transmission, it can be accessed at https://<your freedombox>/transmission. Transmission uses single sign-on from FreedomBox, which means that if you are logged in on your FreedomBox, you can directly access Transmission without having to enter the credentials again. Otherwise, you will be prompted to login first and then redirected to the Transmission app.
Tips
Transferring Downloads from the FreedomBoxTransmission's downloads directory can be added as a shared folder in the "Sharing" app. You can then access your downloads from this shared folder using a web browser. (Advanced) If you have the ssh access to your FreedomBox, you can use sftp to browse the downloads directory using a suitable file manager or web browser (e.g. dolphin or Konqueror). Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/USBWiFi.raw.wiki b/doc/manual/en/USBWiFi.raw.wiki new file mode 100644 index 000000000..b5832790e --- /dev/null +++ b/doc/manual/en/USBWiFi.raw.wiki @@ -0,0 +1,31 @@ +== USB Wi-Fi == +!FreedomBox works on many single board computers. However, many of these boards do not have built-in Wi-Fi capabilities. Even when Wi-Fi capability is available, non-free proprietary firmware is required to make them work. + +A solution to the problem is to plug-in a USB Wi-Fi device into one of the available USB ports. There are many such devices available which do not require non-free firmware to work. The following is a list of such devices that work with !FreedomBox devices. Some devices based on these chips have tested to work well with !FreedomBox including functions such as access point mode. + + * [[https://wikidevi.com/wiki/AR7010|Devices with Atheros AR7010 chip]] + * [[https://wikidevi.com/wiki/AR9271|Devices with Atheros AR9271 chip]] + +=== Firmware Installation === + +The free firmware for these devices is not packaged in Debian yet. You can manually download and install the firmware as follows: + +{{{ +sudo su [enter password] +cd /lib/firmware +wget https://www.thinkpenguin.com/files/ath9k-htc/version-1.4-beta/htc_9271.fw +wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw +}}} + +=== Resources === + + * [[WiFi#USB_Devices|Debian Wiki on WiFi drivers]] + * [[https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers#Linux_drivers_for_802.11_.22wireless.22|Wikipedia: Comparison of open-source Linux wireless network drivers]] + * [[https://wikidevi.com/wiki/Main_Page|WikiDevi: database of computer hardware]] + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Upgrades.raw.wiki b/doc/manual/en/Upgrades.raw.wiki new file mode 100644 index 000000000..2c76b7228 --- /dev/null +++ b/doc/manual/en/Upgrades.raw.wiki @@ -0,0 +1,74 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Upgrades|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Software Updates == + +!FreedomBox can automatically install security updates. On the ''Update'' page of the ''System'' section in !FreedomBox web interface you can turn on automatic updates. This feature is enabled by default and there is no manual action necessary. It is strongly recommended that you have this option enabled to keep your !FreedomBox secure. + +Updates are performed every day at night. If you wish to shutdown !FreedomBox every day after use, keep it running at night once a week or so to let the automatic updates happen. Alternatively, you can perform manual updates as described below. + +Note that once the updates start, it may take a long time to complete. During automatic update process that runs every night or during manual update process, you will not be able to install apps from !FreedomBox web interface. + +{{attachment:update.png}} + +=== When Will I Get the Latest Features? === + +Although updates are done every day for security reasons, latest features of !FreedomBox will not propagate to all the users. The following information should help you understand how new features become available to users. + +'''Stable Users''': This category of users include users who bought the [[FreedomBox/Hardware/PioneerEdition|FreedomBox Pioneer Edition]], installed !FreedomBox on a [[FreedomBox/Hardware/Debian|Debian]] stable distribution or users who downloaded the ''stable'' images from [[https://freedombox.org|freedombox.org]]. As a general rule, only security updates to various packages are provided to these users. One exception to this rule is where !FreedomBox service itself is updated when a release gains high confidence from developers. This means that latest !FreedomBox features may become available to these users although not as quickly or frequently as ''testing'' users. If an app is available only in ''testing'' distribution but not in ''stable'' distribution, then that app will show up in the web interface but will not be installable by ''stable'' users. Some apps are also provided an exception to the rule of "security updates only" when the app is severely broken otherwise. Every two years, a major release of Debian stable happens with the latest versions of all the software packages and !FreedomBox developers will attempt to upgrade these users to the new release without requiring manual intervention. + +'''Testing Users''': This category of users include users who installed !FreedomBox on a [[FreedomBox/Hardware/Debian|Debian]] ''testing'' distribution or users who downloaded the ''testing'' images from [[https://freedombox.org|freedombox.org]]. Users who use Debian ''testing'' are likely to face occasional disruption in the services and may even need manual intervention to fix the issue. As a general rule, these users receive all the latest features and security updates to all the installed packages. Every two weeks, a new version of !FreedomBox is released with all the latest features and fixes. These releases will reach ''testing'' users approximately 2-3 days after the release. + +'''Unstable Users''': This category of users include users who installed !FreedomBox on a [[FreedomBox/Hardware/Debian|Debian]] ''unstable'' distribution or users who downloaded the ''unstable'' images from [[https://freedombox.org|freedombox.org]]. Users who use Debian ''unstable'' are likely to face occasional disruption in the services and may even need manual intervention to fix the issue. As a general rule, these users receive all the latest features to all the installed packages. Every two weeks, a new version of !FreedomBox is released with all the latest features and fixes. Theses releases will reach ''unstable'' users on the day of the release. Only developers, testers and other contributors to the !FreedomBox project should use the ''unstable'' distribution and end users and advised against using it. + +=== Manual Updates from Web Interface === + +To get updates immediately and not wait until the end of the day, you may want to trigger updates manually. You can do this by pressing the ''Update now'' button in ''Manual update'' tab for ''Update'' page in ''System'' section. Note that this step is not necessary if you have enabled ''Auto-updates'' as every night this operation is performed automatically. + +When installing apps you may receive an error message such as + +{{{ +Error installing packages: E: dpkg was interrupted, you must manually run 'dpkg --configure -a' to correct the problem +}}} + +This is typically caused by shutting down !FreedomBox while it is installing apps, while performing daily updates or during some other operations. This situation can be rectified immediately by running manual update. + +=== Manual Updates from Terminal === + +Some software packages may require manual interaction for updating due to questions related to configuration. In such cases, !FreedomBox updates itself and brings in new knowledge necessary to update the package by answering configuration questions. After updating itself, !FreedomBox acts on behalf of the user and updates the packages by answering the questions. Until !FreedomBox has a chance to update the package, such packages should not be be updated manually. The manual update triggered from the web interface is already mindful of such packages and does not update them. + +In some rare situations, !FreedomBox itself might fail to update or the update mechanism might fall into a situation that might need manual intervention from a terminal. To perform manual upgrades on the terminal, login into !FreedomBox on a terminal (if you have monitor and keyboard connected), via a web terminal (using [[FreedomBox/Manual/Cockpit]]) or using a remote secure shell (see [[FreedomBox/Manual/SecureShell|Secure Shell]] section). Then run the following commands: + +{{{ +$ sudo su - +Password: +# dpkg --configure -a +# apt update +# apt -f install +# unattended-upgrade --debug +# apt install freedombox +# apt update +}}} + +If `apt-get update` asks for a confirmation to change ''Codename'' or other release information, confirm ''yes''. If during update of ''freedombox'' package, if a question about overwriting configuration files is asked, answer to install new configuration files from the latest version of the package. This process will upgrade only packages that don't require configuration file questions (except for ''freedombox'' package). After this, let !FreedomBox handle the upgrade of remaining packages. Be patient while new releases of !FreedomBox are made to handle packages that require manual intervention. + +If you want to go beyond the recommendation to upgrade all the packages on your !FreedomBox and if you are really sure about handling the configuration changes for packages yourself, run the following command: + +{{{ +$ apt dist-upgrade +}}} + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Upgrades.raw.xml b/doc/manual/en/Upgrades.raw.xml deleted file mode 100644 index ef61627d6..000000000 --- a/doc/manual/en/Upgrades.raw.xml +++ /dev/null @@ -1,8 +0,0 @@ -
FreedomBox/Manual/Upgrades92020-05-23 20:46:38JamesValleroyadd TableOfContents82020-04-12 15:55:49JamesValleroyadd links back to top level pages72019-08-22 02:42:27SunilMohanAdapaProvide information about properly updating FreedomBox62019-06-19 07:42:18fioddorLack of feedback is not specific to manual procedure.52017-03-31 20:11:01DrahtseilScreenshot automatic upgrades42016-09-01 19:20:27Drahtseiladapted title to Plinth wording32016-01-16 07:41:43StacyCockrum22016-01-16 07:35:56StacyCockrum12015-09-16 15:01:05SunilMohanAdapaAdd upgrades manual page
Software UpdatesFreedomBox can automatically install security updates. On the Update page of the System section in FreedomBox web interface you can turn on automatic updates. This feature is enabled by default and there is no manual action necessary. It is strongly recommended that you have this option enabled to keep your FreedomBox secure. Updates are performed every day at night. If you wish to shutdown FreedomBox every day after use, keep it running at night once a week or so to let the automatic updates happen. Alternatively, you can perform manual updates as described below. Note that once the updates start, it may take a long time to complete. During automatic update process that runs every night or during manual update process, you will not be able to install apps from FreedomBox web interface. upgrades.png
When Will I Get the Latest Features?Although updates are done every day for security reasons, latest features of FreedomBox will not propagate to all the users. The following information should help you understand how new features become available to users. Stable Users: This category of users include users who bought the FreedomBox Pinoeer Edition, installed FreedomBox on a Debian stable distribution or users who downloaded the stable images from freedombox.org. As a general rule, only security updates to various packages are provided to these users. One exception to this rule is where FreedomBox service itself is updated when a release gains high confidence from developers. This means that latest FreedomBox features may become available to these users although not as quickly or frequently as testing users. If an app is available only in testing distribution but not in stable distribution, then that app will show up in the web interface but will not be installable by stable users. Some apps are also provided an exception to the rule of "security updates only" when the app is severely broken otherwise. Every two years, a major release of Debian stable happens with the latest versions of all the software packages and FreedomBox developers will attempt to upgrade these users to the new release without requiring manual intervention. Testing Users: This category of users include users who installed FreedomBox on a Debian testing distribution or users who downloaded the testing images from freedombox.org. Users who use Debian testing are likely to face occasional disruption in the services and may even need manual intervention to fix the issue. As a general rule, these users receive all the latest features and security updates to all the installed packages. Every two weeks, a new version of FreedomBox is released with all the latest features and fixes. These releases will reach testing users approximately 2-3 days after the release. Unstable Users: This category of users include users who installed FreedomBox on a Debian unstable distribution or users who downloaded the unstable images from freedombox.org. Users who use Debian unstable are likely to face occasional disruption in the services and may even need manual intervention to fix the issue. As a general rule, these users receive all the latest features to all the installed packages. Every two weeks, a new version of FreedomBox is released with all the latest features and fixes. Theses releases will reach unstable users on the day of the release. Only developers, testers and other contributors to the FreedomBox project should use the unstable distribution and end users and advised against using it.
Manual Updates from Web InterfaceTo get updates immediately and not wait until the end of the day, you may want to trigger updates manually. You can do this by pressing the Update now button in Manual update tab for Update page in System section. Note that this step is not necessary if you have enabled Auto-updates as every night this operation is performed automatically. When installing apps you may receive an error message such as This is typically caused by shutting down FreedomBox while it is installing apps, while performing daily updates or during some other operations. This situation can be rectified immediately by running manual update.
Manual Updates from TerminalSome software packages may require manual interaction for updating due to questions related to configuration. In such cases, FreedomBox updates itself and brings in new knowledge necessary to update the package by answering configuration questions. After updating itself, FreedomBox acts on behalf of the user and updates the packages by answering the questions. Until FreedomBox has a chance to update the package, such packages should not be be updated manually. The manual update triggered from the web interface is already mindful of such packages and does not update them. In some rare situations, FreedomBox itself might fail to update or the update mechanism might fall into a situation that might need manual intervention from a terminal. To perform manual upgrades on the terminal, login into FreedomBox on a terminal (if you have monitor and keyboard connected), via a web terminal (using FreedomBox/Manual/Cockpit) or using a remote secure shell (see Secure Shell section). Then run the following commands: -# dpkg --configure -a -# apt update -# apt -f install -# unattended-upgrade --debug -# apt install freedombox -# apt update]]>If apt-get update asks for a confirmation to change Codename or other release information, confirm yes. If during update of freedombox package, if a question about overwriting configuration files is asked, answer to install new configuration files from the latest version of the package. This process will upgrade only packages that don't require configuration file questions (except for freedombox package). After this, let FreedomBox handle the upgrade of remaining packages. Be patient while new releases of FreedomBox are made to handle packages that require manual intervention. If you want to go beyond the recommendation to upgrade all the packages on your FreedomBox and if you are really sure about handling the configuration changes for packages yourself, run the following command: Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/Users.raw.wiki b/doc/manual/en/Users.raw.wiki new file mode 100644 index 000000000..cfc77642c --- /dev/null +++ b/doc/manual/en/Users.raw.wiki @@ -0,0 +1,45 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/Users|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Users and Groups == + +You can grant access to your !FreedomBox for other users. Provide the Username with a password and assign a group to it. Currently the groups + * admin + * bit-torrent + * ed2k + * feed-reader + * freedombox-share + * git-access + * i2p + * minidlna + * syncthing + * web-search + * wiki +are supported. + +The user will be able to log in to services that support single sign-on through LDAP, if they are in the appropriate group. + +Users in the admin group will be able to log in to all services. They can also log in to the system through SSH and have administrative privileges (sudo). + +A user's groups can also be changed later. + +It is also possible to set an SSH public key which will allow this user to securely log in to the system without using a password. You may enter multiple keys, one on each line. Blank lines and lines starting with # will be ignored. + +The interface language can be set for each user individually. By default, the language preference set in the web browser will be used. + +A user's account can be deactivated, which will temporarily disable the account. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/Users.raw.xml b/doc/manual/en/Users.raw.xml deleted file mode 100644 index 3b431d72f..000000000 --- a/doc/manual/en/Users.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/Users92020-05-23 20:47:07JamesValleroyadd TableOfContents82019-07-29 22:34:11JamesValleroybetter wording72019-07-29 22:22:17JamesValleroyremove "Plinth"62019-07-29 22:10:39JamesValleroymention which releases known issue applies to52019-07-29 22:08:21JamesValleroyadd more supported groups42017-01-14 20:13:01JamesValleroyadd known issue32016-12-31 04:15:09JamesValleroyreword22016-09-01 19:21:25Drahtseiladapted title to Plinth wording12016-08-21 16:48:45DrahtseilCreated Users
Users and GroupsYou can grant access to your FreedomBox for other users. Provide the Username with a password and assign a group to it. Currently the groups admin bit-torrent ed2k feed-reader syncthing web-search wiki are supported. The user will be able to log in to services that support single sign-on through LDAP, if they are in the appropriate group. Users in the admin group will be able to log in to all services. They can also log in to the system through SSH and have administrative privileges (sudo). A user's groups can also be changed later-on. It is also possible to set an SSH public key which will allow this user to securely log in to the system without using a password. You may enter multiple keys, one on each line. Blank lines and lines starting with # will be ignored. A user's account can be deactivated, which will temporarily disable the account.
Known IssuesIn Debian Stretch, the FreedomBox web interface does not distinguish between users and administrators. Every user added will have full access to the web interface. This issue is fixed in Debian Buster and later. Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/VirtualBox.raw.wiki b/doc/manual/en/VirtualBox.raw.wiki new file mode 100644 index 000000000..5e140a3b7 --- /dev/null +++ b/doc/manual/en/VirtualBox.raw.wiki @@ -0,0 +1,214 @@ +== VirtualBox == + +{{attachment:virtualbox.png|VirtualBox|width=726,height=475}} + +This page will help you get started with using !FreedomBox on a [[https://en.wikipedia.org/wiki/Virtual_machine|virtual machine]] using !VirtualBox. While !VirtualBox images are primarily used for testing and development, they can also be used for regular use if you have spare resources on one of your machines. This setup is useful if: + + * You don't own one of the [[FreedomBox/Hardware|supported hardware]] devices. + * You don't use Debian GNU/Linux as your operating system. + * You don't want to disturb your Debian installation to try out !FreedomBox. + +Prebuilt !FreedomBox images for !VirtualBox are routinely made available in !VirtualBox's own [[https://www.virtualbox.org/manual/ch05.html#vdidetails|VDI image file format]]. They contain a Debian GNU/Linux operating system and an installation of !FreedomBox with all dependencies ready to run on any OS supported by !VirtualBox (Windows, Linux, Macintosh, and Solaris). + +A more adventurous alternative to downloading one of these images is to [[InstallingDebianOn|install Debian]] on !VirtualBox and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +!VirtualBox itself is available from https://www.virtualbox.org/ (or your distribution's package manager). + +=== Download === + +Follow the instructions on the [[FreedomBox/Download|download]] page to download and verify a !VirtualBox image. The latest images are available on [[https://freedombox.org/download/|freedombox.org]]. + +=== Creating a Virtual Machine === + + 1. Decompress the downloaded VDI image (tool for [[http://www.7-zip.org/|Windows]], [[http://unarchiver.c3.cx/unarchiver|Mac]]). + + 1. Create a new VM in the !VirtualBox UI with OS type ''Linux'' and Version ''Debian'' (32/64-bit according to the downloaded image). +{{attachment:virtualbox_os_type.png|VirtualBox Name and OS dialog}} + + 1. In the ''Hard disk'' dialog choose ''Use an existing virtual hard disk file'' and select the .vdi file you extracted in step 1. + +{{attachment:virtualbox_harddisk_file.png|VirtualBox Hard disk dialog}} + + 1. When created, go to the virtual machine's Settings -> [Network] -> [Adapter 1]->[Attached to:] and choose the network type your want the machine to use according to the explanation in Network Configuration below. The recommended type is the ''Bridged adapter'' option, but be aware that this exposes the !FreedomBox's services to your entire local network. + +{{attachment:virtualbox_network_type.png|VirtualBox recommended network setting}} + +'''Note:''' It is important to make sure that you have provided the correct network interface in the above step. For example, if the virtual machine is running on a laptop connected to a Wi-Fi network, then the wireless interface (starts with ''wlp'') must be chosen as shown in the screenshot. + +=== First Boot === + +When satisfied with the VM settings click the start button in the !VirtualBox UI and your new !FreedomBox will boot. + +The console of the VM will show the textual screen below when finished booting, from here most interaction with !FreedomBox will be through the [[FreedomBox/Plinth|web interface]] in a browser. + +{{attachment:virtualbox_console_after_boot.png|FreedomBox console after booting successfully}} + +If everything went well so far, you should be able to access the web interface of !FreedomBox by pointing a browser on the host machine to https://freedombox.local. + +In case freedombox.local cannot be resolved, you need to find out your !FreedomBox's IP address as described in [[#finding-ip-address-of-vm|Finding out the IP address of the virtual machine]]. Then access this IP from a web browser which is on the same network as the VM (for example, the host). If all is well, you are now presented with a welcome message and invited to complete the ''first boot'' process. + +{{attachment:plinth_first_boot.png|FreedomBox welcomes you to the first boot}} + +This mainly consist of creating an administrative user for the system. + +=== Using === + +See the !FreedomBox [[FreedomBox/Manual/QuickStart|usage]] page for more details. + +You can log in to the Debian GNU/Linux system as the user created during !FreedomBox first boot on the !VirtualBox console or remotely via ssh. + +After logging in, you can become root with the command `sudo su`. + +=== Build Image === + +If you wish to build your own images instead of downloading available images, it can be done using [[FreedomBox/Maker|Freedom Maker]]. + +=== Tips & Troubleshooting === + +==== Network Configuration ==== + +!VirtualBox provides many types of networking options. Each has its +advantages and disadvantages. For more information about how various +networking types work in !VirtualBox, see !VirtualBox's networking +documentation. https://www.virtualbox.org/manual/ch06.html + +For a simple setup, it is recommended that you use a single network +interface in your guest machine. This will make the first boot script +automatically configure that interface as an `internal` network with +`automatic` network configuration. Inside the guest machine, the +networking is configured automatically and all the services are made +available on this network interface. For more information on how +networks are configured by default in !FreedomBox, see +[[FreedomBox/Manual/Networks|Networks]] section. + +What remains is to make those services available to the host machine +or to other machines in the network. You must then choose one of the +following types of networking for the network interface on your guest +machine. To set a particular type of network for the guest's network +adapter, go to the guest VM's settings then the network options and +then select the adapter you wish to configure. There, set the network +type from the available list of networks. + + 1. First and the recommended option is to use the ''Bridged'' type of + network. This option exposes the guest machine to the same network + that host network is connected to. The guest obtains network + configuration information from a router or DHCP server on the + network. The guest will appear as just another machine in the + network. A major advantage of this of setup is that the host and all + other machines in the network will be able to access the services + provided by guest without requiring any further setup. + + The only drawback of this approach is that if the host is not + connected to any network, the guest's network will remain + unconfigured making it inaccessible even from the host. + + 1. Second method is ''Host only'' type of networking. With a + guest's network interface configured in this manner, it will only be + accessible from the host machine. The guest will not able access any + other machine but the host, so you do not have internet access on the guest. + All services on the guest are available to the host machine without any + configuration such as port forwarding. + + 1. The third option is to use the ''NAT'' type of network. This the + networking type that !VirtualBox assigns to a freshly created virtual + machine. This option works even when host is not connected to any + network. The guest is automatically configured and is able to access + the internet and local networks that host is able to connect to. + However, the services provided by the guest require port forwarding + configuration setup to be available outside. + + To configure this go to VM settings -> [Network] -> [Adapter] -> + [Port Forwarding]. Map a port such as 2222 from host to guest port + 22 and you will be able to ssh into !FreedomBox from host machine as + follows: + + {{{ + ssh -p 2222 fbx@localhost + }}} + + Map 4443 on host to 443 on the guest. This make !FreedomBox HTTPS + service available on host using the URL https://localhost:4443/ + + You will need to add a mapping for each such services from host to + guest. + + 1. The final option is to create two network interfaces, one ''host only'' + and one ''NAT'' type. This way you can access the guest without + any additional configuration, and you have internet access on the guest. + The guest will be invisible to any other machines on the network. + + +Summary of various network types: + +|| - ||'''Guest accessible from other machines'''||'''Guest accessible from host'''||'''Works without port forwarding'''||'''Works without host connected to network'''||'''Guest has internet access'''|| +|| '''Bridged''' || (./) || (./) || (./) || {X} || (./) || +|| '''Host only''' || {X} || (./) || (./) || (./) || {X} || +|| '''NAT''' || (./) || (./) || {X} || (./) || (./) || +|| '''NAT and Host || {X} || (./) || (./) || (./) || (./) || + +<> +==== Finding out the IP address of the virtual machine ==== + +This depends on the network configuration you chose. With a ''bridged adapter'', +your virtual machine gets its IP address from the DHCP server of your network, most likely of your Router. You can try the first couple of IP addresses or check your router web interface for a list of connected devices. + +If you chose ''host-only adapter'', the IP address is assigned by the DHCP server of your !VirtualBox network. In the !VirtualBox Manager, go to File -> Preferences -> Network -> Host-only Networks. You can see and edit the DHCP address range there, typically you get assigned addresses close to the ''Lower Address Bound''. + +Another possibility of finding the IP address is to login via the !VirtualBox Manager (or similar software). The !FreedomBox images do not have any default user accounts, so you need to set an initial user and password using the [[https://salsa.debian.org/freedombox-team/freedom-maker/blob/master/bin/passwd-in-image|passwd-in-image script]]. + +See also [[FreedomBox/Manual/QuickStart|QuickStart]] for instructions on how to scan your network to discover the IP of the VM. + +==== Networking Problems with macchanger ==== + +The package `macchanger` can cause network problems with !VirtualBox. If you have a valid IP address on your guest's host network adapter (like 192.168.56.101) but are not able to ping or access the host (like 192.168.56.1), try uninstalling `macchanger`: + +{{{ +$ dpkg --ignore-depends=freedombox-setup --remove macchanger +}}} + +You might have to manually remove the script `/etc/network/if-prep-up/macchanger`. +If Debian complains about unmet dependencies when you use a package manager (apt-get, aptitude, dpkg), try to remove 'macchanger' from the dependencies of 'freedombox-setup' in the file `/var/lib/dpkg/status`. + +==== Mounting Images Locally ==== + +If you want to mount images locally, use the following to copy built images off the !VirtualBox: + +{{{ +$ mkdir /tmp/vbox-img1 /tmp/vbox-root1 +$ vdfuse -f freedombox-unstable_2013.0519_virtualbox-i386-hdd.vdi /tmp/vbox-img1/ +$ sudo mount -o loop /tmp/vbox-img1/Partition1 /tmp/vbox-root1 +$ cp /tmp/vbox-root1/home/fbx/freedom-maker/build/freedom*vdi ~/ +$ sudo umount /tmp/vbox-root1 +# $ sudo umount /tmp/vbox-img1 # corruption here. +}}} + +==== Fixing the time after suspend and resume ==== + +The virtual machine loses the correct time/date after suspending and resuming. One way to fix this is to create a cron-job that restarts the time service `ntp`. You can add a crontab entry as root to restart ntp every 15 minutes by typing +`'crontab -e'` and adding this line: +{{{ +*/15 * * * * /etc/init.d/ntp restart +}}} + +Do not restart this service too often as this increases the load of publicly and freely available NTP servers. + +==== UUID collision in VB ==== + +Whenever this happens !VirtualBox shows following error message: ''Cannot register the hard disk A with UUID ... because a hard disk B with UUID ... already exists in the media registry'' + +Creating several VMs from the same image causes collisions due to ID's (hostname, IP, UUID, etc) that are expected to be universally unique. +Most can be handeled operating the running VM. But !VirtualBox complains before that (at the very creation of the VM) about the hard disk's UUID. This is usual stuff when you develop/test e.g. !FreedomBox. + +You can change a clone's UUID in the terminal as follows: +{{{ +$ VBoxManage internalcommands sethduuid path/to/the/hd/vdi/file +}}} + + + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/WireGuard.raw.wiki b/doc/manual/en/WireGuard.raw.wiki new file mode 100644 index 000000000..1f7a85988 --- /dev/null +++ b/doc/manual/en/WireGuard.raw.wiki @@ -0,0 +1,75 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/WireGuard|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== WireGuard (Virtual Private Network) == +|| {{attachment:WireGuard-icon_en_V01.png|alt="WireGuard icon"}} || + + +=== About WireGuard === + +'''!WireGuard''' is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It can be a useful replacement for IPSec or [[FreedomBox/Manual/OpenVPN|OpenVPN]]. + +Official website: https://www.wireguard.com + +=== Installation === + +On [[DebianBuster]], wireguard is available from [[Backports]]. If your sources list contains the backports stanza, you can install wireguard from the Apps section of !FreedomBox web interface. +{{{#!wiki caution + WireGuard cannot be installed in !FreedomBox on buster-backports yet, because a newer version of NetworkManager is required by the !FreedomBox service to complete the setup. +}}} + +=== Configuration - Debian Peers === + + * [[WireGuard|Step 1 - Generating Keypairs]] + * [[WireGuard|Step 2 - Alternative A - Manual Configuration]] + + +=== Usage === + + * Point-to-point tunnel + * VPN client with default route + +=== Configuration - Mobile Clients === + +WireGuard has a user space implementation for mobile devices available via the WireGuard app - available for Android and iOS (a full list of supported operating systems is available [[https://www.wireguard.com/install/|here]]). + +The client can be configured in several ways: + +==== Alternative A - Create configuration manually ==== + +This is self-explanatory, you actually create the config on the mobile device then transfer the relevant keys to the server's config. + +==== Alternative B - Create configuration from archive ==== + +Here you have to create a .zip archive of the client configuration file, transfer it to the device then import it into the app. + +==== Alternative C - Import by reading a QR code (most secure method) ==== + +The mobile client as of version 0.0.20180724 supports QR code based input. + +DebianPackage:qrencode can be used to generate qr codes, even in a terminal/console using UTF8 characters. + +The syntax is: + +{{{ +# qrencode -t ansiutf8 < client.conf +}}} + +This will generate a QR code that is readable by the mobile client. + +The advantage of this approach is that there is no need to transfer sensitive information via data channels that can potentially be compromised and there is no need for any additional software. + + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/bepasty.raw.wiki b/doc/manual/en/bepasty.raw.wiki new file mode 100644 index 000000000..fdc1b7d68 --- /dev/null +++ b/doc/manual/en/bepasty.raw.wiki @@ -0,0 +1,77 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/bepasty|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Bepasty (File & Snippet Sharing) == +|| {{attachment:bepasty-icon_en_V01.png|bepasty icon}} || + +'''Available since''': version 20.14 + +=== What is bepasty? === + +bepasty is a web application that allows large files to be uploaded and shared. Text and code snippets can also be pasted and shared. Text, image, audio, video and PDF documents can be previewed in the browser. Shared files can be set to expire after a time period. + +=== Screenshot === + +{{attachment:bepasty_logged_in_page.png|Screenshot of bepasty|width=800}} + +=== Passwords and Permissions === + +bepasty uses only passwords (without usernames) to control access. Depending on which password is used to login to bepasty, the user will have different permissions. They can have any combination of the following permissions: + * '''read''': Read a file, if they know the URL. + * '''list''': List all files. + * '''create''': Paste or upload a new file. + * '''delete''': Delete a file. + * '''admin''': Can lock and unlock files. + +After bepasty is installed, it comes pre-configured for the following roles: + * Viewer: can view and list files + * Editor: can view, list, create, and delete files + * Administrator: has all permissions + +These roles support a use-case of file sharing between known, authorized users. If needed, you can re-configure bepasty to support other roles and use-cases. + +=== Distributing passwords === + +By default, the Public Access configuration is set to ''None'', so a password is required for any use of bepasty. This means that you will need to distribute the passwords to the appropriate users, through any communication channels that you have. + +Note that you may want to create multiple passwords with the same permissions. This allows you to distribute a unique password to each user (or to a group of users). Then if you want to revoke access to one user, you can simply delete their password. The other users with their own passwords will not be affected. + +=== Using bepasty === + +After logging in to bepasty, if you have the Create permission, you will see a large text box where you can paste any text. Optionally, you can provide a filename or Content-Type for the data. After clicking Submit, the file is created. + +You can also drag and drop files in the area at the bottom. They are uploaded immediate after dropping them in this area. You can also create a list to track a collection of uploaded files. + +For either case, you can set a maximum lifetime value. After this time expires, the file will be deleted. + +If you have the List permission, then you will see a link ''List all Items'' at the top of the page. This will show all files that have been created or uploaded. + +If you have the Delete or Admin permission, you will see extra actions shown next to each file on the list page. + +If you only have the Read permission, then to read files, you will need to have both a password and one or more URLs for existing files. + +=== Managing passwords === + +The bepasty configuration page in !FreedomBox interface allows you to create new passwords, or to remove a password. When you create a password, you can choose any combination of the permissions described above. Note that a typical Administrator should have all of the permissions (not just "Admin"). + +You can also set a Comment. This is recommended, and you should use the comment to help yourself remember the purpose of the password, or who will be using the password. + +You can also configure Public Access, which sets the default permissions that are available even without logging in with a password. You can set this to allow reading files by their URL, or reading and listing all files. + +=== External links === + +https://bepasty-server.readthedocs.io/en/latest/user.html + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/ejabberd.raw.wiki b/doc/manual/en/ejabberd.raw.wiki new file mode 100644 index 000000000..71471437c --- /dev/null +++ b/doc/manual/en/ejabberd.raw.wiki @@ -0,0 +1,63 @@ +## page was renamed from FreedomBox/Manual/XMPP +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual/ejabberd|Español]] -~ + +<> + +## BEGIN_INCLUDE + +== Ejabberd (Chat Server) == +|| {{attachment:ejabberd-icon_en_V01.png|ejabberd icon}} || + +'''Available since''': version 0.3 + +=== What is XMPP? === + +XMPP is a federated server-client protocol for Instant Messaging. This means that users who have accounts on one server, can talk to users that are on another server. + +XMPP can also be used for voice and video calls, if supported by the clients. + +Currently !FreedomBox offers both, a server (ejabberd) and a web client ([[FreedomBox/Manual/JSXC|JSXC]]) from its web interface. + +=== Privacy === +With XMPP, there are two ways that conversations can be secured: + 1. TLS: This secures the connection between the client and server, or between two servers. This should be supported by all clients and is highly recommended. + 1. End-to-end: This secures the messages sent from one client to another, so that even the server cannot see the contents. The latest and most convenient protocol is called OMEMO, but it is only supported by a few clients. There is another protocol called OTR that may be supported by some clients that lack OMEMO support. Both clients must support the same protocol for it to work. + +=== Setting the Domain Name === + +For XMPP to work, your !FreedomBox needs to have a Domain Name that can be accessed over the network. + +If you only need the local network (LAN) users to chat with each other you can invent your domain name, but if you want users from the internet to join your rooms you need a public domain name. You can read more about obtaining a Domain Name in the [[../DynamicDNS|Dynamic DNS section of this manual]]. + +Once you have a Domain Name, you can tell your !FreedomBox to use it by setting the Domain Name in the System [[../Configure|Configuration]]. + +'''Note''': After changing your Domain Name, the Chat Server (XMPP) page may show that the service is not running. After a minute or so, it should be up and running again. + +Please note that [[FreedomBox/Manual/PageKite|PageKite]] does not support the XMPP protocol at this time. + +=== Registering FreedomBox users to use XMPP === + +Currently, all users created through !FreedomBox will be able to login to the XMPP server. You can add new users through the System Users and Groups module. It does not matter which Groups are selected for the new user. + +=== Port Forwarding === + +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 XMPP: + * TCP 5222 (client-to-server) + * TCP 5269 (server-to-server) + * TCP 5280 (?) + +=== Compatible clients === + + * !FreedomBox provides a web client: [[FreedomBox/Manual/JSXC|JSXC]]. + * [[https://xmpp.org/software/clients.html|XMPP clients]] are available for various desktop and mobile platforms. + +## END_INCLUDE + +Back to [[FreedomBox/Features|Features introduction]] or [[FreedomBox/Manual|manual]] pages. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/ejabberd.raw.xml b/doc/manual/en/ejabberd.raw.xml deleted file mode 100644 index d1931ce3f..000000000 --- a/doc/manual/en/ejabberd.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
FreedomBox/Manual/ejabberd152020-05-30 17:55:47SunilMohanAdapaUpdate the title to emphasize app name over its generic name142020-05-23 19:50:10JamesValleroyadd TableOfContents132020-05-23 17:01:56JamesValleroyrename plinth -> freedombox122019-03-01 17:43:12JosephNuthalapatiFix PageKite url112019-02-27 00:06:38JamesValleroymake title consistent with FreedomBox interface102018-03-02 13:01:38JosephNuthalapatiConsistent naming conventions92017-01-07 17:42:27JamesValleroyadd note about service restart82017-01-02 13:48:30JamesValleroyadd port forwarding info72016-12-31 03:11:19JamesValleroyclarify62016-12-31 03:10:19JamesValleroymention web client52016-12-31 02:35:52JamesValleroyadd security info42016-09-04 10:31:37Drahtseiladded links32016-04-10 07:18:35PhilippeBaretAdded bottom navigation link22015-12-15 18:37:29PhilippeBaretAdded definition to Chat server page12015-09-20 23:52:11JamesValleroyadd xmpp page
ejabberd (Chat Server)
What is XMPP?XMPP is a federated protocol for Instant Messaging. This means that users who have accounts on one server, can talk to users that are on another server. XMPP can also be used for voice and video calls, if supported by the clients. With XMPP, there are two ways that conversations can be secured: TLS: This secures the connection between the client and server, or between two servers. This should be supported by all clients and is highly recommended. End-to-end: This secures the messages sent from one client to another, so that even the server cannot see the contents. The latest and most convenient protocol is called OMEMO, but it is only supported by a few clients. There is another protocol called OTR that may be supported by some clients that lack OMEMO support. Both clients must support the same protocol for it to work.
Setting the Domain NameFor XMPP to work, your FreedomBox needs to have a Domain Name that can be accessed over the public Internet. You can read more about obtaining a Domain Name in the Dynamic DNS section of this manual. Once you have a Domain Name, you can tell your FreedomBox to use it by setting the Domain Name in the System Configuration. Note: After changing your Domain Name, the Chat Server (XMPP) page may show that the service is not running. After a minute or so, it should be up and running again. Please note that PageKite does not support the XMPP protocol at this time.
Registering XMPP users through SSOCurrently, all users created through FreedomBox will be able to login to the XMPP server. You can add new users through the System Users and Groups module. It does not matter which Groups are selected for the new user.
Using the web clientAfter the XMPP module install completes, the JSXC web client for XMPP can be accessed at https://<your freedombox>/plinth/apps/xmpp/jsxc/. It will automatically check the BOSH server connection to the configured domain name.
Using a desktop or mobile clientXMPP clients are available for various desktop and mobile platforms.
Port ForwardingIf your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports for XMPP: TCP 5222 (client-to-server) TCP 5269 (server-to-server) Back to Features introduction or manual pages. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/en/freedombox-manual.raw.wiki b/doc/manual/en/freedombox-manual.raw.wiki new file mode 100644 index 000000000..3f75e1653 --- /dev/null +++ b/doc/manual/en/freedombox-manual.raw.wiki @@ -0,0 +1,132 @@ +#language en + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[es/FreedomBox/Manual|Español]] -~ + +## BEGIN_INCLUDE + +<> + + +<> +<> +<> +<> + += Apps = +/* Add entries here sorted after the level 2 heading inside the page to keep the list alphabetically sorted */ +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + += System = +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + += Hardware = +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + +<> + += Contributing = + +<> + += Developer Guide = + +<> + += Hacking = + +!FreedomBox consists of two main projects: + + * !FreedomBox Service (Plinth), the web interface + * Freedom Maker, a script to build disk images for various hardware + +<> +<> + += 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 + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/en/freedombox-manual.raw.xml b/doc/manual/en/freedombox-manual.raw.xml deleted file mode 100644 index 2b7dffdb1..000000000 --- a/doc/manual/en/freedombox-manual.raw.xml +++ /dev/null @@ -1,14294 +0,0 @@ - - -
- - FreedomBox/Manual - - - 92 - 2020-05-30 18:28:47 - SunilMohanAdapa - Sort apps and system items according to their new titles - - - 91 - 2020-05-26 13:39:35 - fioddor - Bind moved to sort on headers. - - - 90 - 2020-05-26 13:37:10 - fioddor - Include Bind DNS Server under System - - - 89 - 2020-05-24 19:21:23 - JamesValleroy - fix broken includes due to space after page name - - - 88 - 2020-05-24 08:18:14 - fioddor - Improved readability - - - 87 - 2020-05-23 20:53:09 - JamesValleroy - skip TOCs for system pages - - - 86 - 2020-05-23 20:01:24 - JamesValleroy - skip TOCs for included app pages - - - 85 - 2020-05-23 19:47:32 - JamesValleroy - don't include TableOfContents from included pages - - - 84 - 2020-05-06 06:02:24 - SunilMohanAdapa - Include Coturn app - - - 83 - 2020-05-04 07:46:54 - FredLeMeur - manual page entry for Performance (cockpit-pcp) - - - 82 - 2020-05-03 16:44:06 - JamesValleroy - Fix from markers for Contribute and Developer included pages - - - 81 - 2020-02-21 15:51:40 - JosephNuthalapati - Add entry for Samba - - - 80 - 2019-12-25 18:43:42 - Drahtseil - added MiniDLNA - - - 79 - 2019-12-20 19:58:30 - Drahtseil - Placed Simple Gitweb in the correct place - - - 78 - 2019-12-15 19:26:31 - Drahtseil - Added Gitweb (to the end of the manual, but I have no clue how this is sorted) - - - 77 - 2019-04-30 00:45:49 - SunilMohanAdapa - Include I2P application - - - 76 - 2019-04-24 03:14:10 - SunilMohanAdapa - Add link to Pioneer Edition - - - 75 - 2019-04-24 01:39:13 - SunilMohanAdapa - Include Pine A64+ - - - 74 - 2019-02-27 00:28:00 - JamesValleroy - rename Plinth -> FreedomBox Service (Plinth) - - - 73 - 2019-02-27 00:24:53 - JamesValleroy - add link to home page - - - 72 - 2019-02-26 23:20:47 - JamesValleroy - add infinoted page - - - 71 - 2019-02-26 12:50:28 - JamesValleroy - remove reference to freedombox-setup - - - 70 - 2019-02-26 12:41:20 - JamesValleroy - add link to Mastodon account - - - 69 - 2019-02-13 23:16:48 - MikkelKirkgaardNielsen - place dlmonkey after sort order in app. list, add comment about sorting, add draft userdir page - - - 68 - 2019-01-31 00:46:47 - SunilMohanAdapa - Add backups links to manual - - - 67 - 2019-01-28 04:35:54 - JosephNuthalapati - Include MLDonkey manual page - - - 66 - 2019-01-10 21:46:53 - SunilMohanAdapa - Include Cockpit manual page - - - 65 - 2019-01-03 04:17:54 - SunilMohanAdapa - Update link to rpi3b and add link to rpi3b+ - - - 64 - 2018-03-05 12:22:59 - JosephNuthalapati - Renamed Disks to Storage - - - 63 - 2018-03-05 03:57:14 - SunilMohanAdapa - Update link to XMPP to ejabberd - - - 62 - 2018-03-02 12:03:07 - JosephNuthalapati - Rename Matrix to MatrixSynapse - - - 61 - 2018-02-22 12:14:31 - JosephNuthalapati - Include Searx manual entry - - - 60 - 2018-02-10 03:19:17 - JosephNuthalapati - Add Coquelicot and sort Apps section in alphabetical order - - - 59 - 2018-01-17 10:27:42 - JosephNuthalapati - Include MediaWiki manual entry - - - 58 - 2018-01-04 20:04:28 - David Jones - - - 57 - 2017-11-14 02:27:58 - JamesValleroy - include Snapshots page - - - 56 - 2017-10-21 14:53:00 - Drahtseil - Adding Syncthing - - - 55 - 2017-06-06 04:07:40 - SunilMohanAdapa - Include pcDuino3 and RaspberryPi3 - - - 54 - 2017-03-23 06:34:36 - rahulde - - - 53 - 2017-01-21 17:18:07 - JamesValleroy - drop shaarli - - - 52 - 2017-01-18 23:32:13 - JamesValleroy - move release notes down - - - 51 - 2017-01-18 15:25:21 - JamesValleroy - Drop planned apps -- no reason to include them in manual yet - - - 50 - 2017-01-02 13:54:14 - JamesValleroy - include LetsEncrypt page - - - 49 - 2016-12-23 18:52:10 - JamesValleroy - Drop ownCloud page from manual. It has not been available in Debian for some time now. - - - 48 - 2016-12-23 18:32:35 - JamesValleroy - move available apps / planned apps to top level - - - 47 - 2016-12-23 18:27:34 - JamesValleroy - move not available apps to separate section - - - 46 - 2016-12-23 17:49:13 - JamesValleroy - Drop Advanced page from manual. The plugserver repo has not been updated in a long time, and would conflict with our current setup. - - - 45 - 2016-12-23 14:58:06 - JamesValleroy - remove links to old manuals (deleted pages) - - - 44 - 2016-09-04 10:16:09 - Drahtseil - - - 43 - 2016-08-31 17:50:53 - Drahtseil - added security, reordered alphabetically apps and system; dynamic DNS + pagekite -> system; kept secureshell, unhosted, gnusocial - - - 42 - 2016-08-31 17:13:30 - Drahtseil - added Disks - - - 41 - 2016-08-21 17:19:00 - Drahtseil - added NameServices - - - 40 - 2016-08-21 09:50:21 - Drahtseil - added Service Discovery - - - 39 - 2016-08-21 09:44:45 - Drahtseil - added Diagnostics, typo in Power - - - 38 - 2016-08-21 09:30:28 - Drahtseil - added Power - - - 37 - 2016-08-17 20:11:37 - Drahtseil - added include Quassel - - - 36 - 2016-05-27 17:24:54 - JamesValleroy - add repro page - - - 35 - 2016-04-10 07:04:38 - PhilippeBaret - Cleaned Radicale feature link made for page creation - - - 34 - 2016-04-10 06:35:00 - PhilippeBaret - Created manual page "Radicale" [FreedomBox/Manual/Radicale] - - - 33 - 2016-04-10 06:31:49 - PhilippeBaret - Added to FreedomBox manuel new page to do = Radicale - - - 32 - 2016-02-15 12:50:14 - JamesValleroy - use BEGIN_INCLUDE for Debian page - - - 31 - 2016-01-20 16:40:56 - PhilippeBaret - Added GnuSocial Include in the Manual tree - - - 30 - 2015-12-16 00:31:47 - PhilippeBaret - Added OpenVPN page to Apps manual - - - 29 - 2015-11-29 20:55:54 - PhilippeBaret - Added ## BEGIN_INCLUDE - - - 28 - 2015-11-29 20:54:55 - PhilippeBaret - Added ## BEGIN_INCLUDE for [QuickStart] - - - 27 - 2015-11-29 20:20:46 - PhilippeBaret - Fixing include for manual - - - 26 - 2015-11-29 19:27:21 - PhilippeBaret - Text finishing - - - 25 - 2015-11-29 19:20:25 - PhilippeBaret - Fixing TOC [hardware content] - - - 24 - 2015-11-29 19:11:48 - PhilippeBaret - Bug fixing - - - 23 - 2015-11-29 19:10:45 - PhilippeBaret - Added from="## BEGIN_INCLUDE" [fbx/download] - - - 22 - 2015-11-21 16:42:45 - SunilMohanAdapa - Add A20 OLinuXino Lime2/MICRO pages - - - 21 - 2015-11-08 23:03:14 - PhilippeBaret - Added Use page content [Other resources] + [Tell People] - - - 20 - 2015-11-08 22:49:24 - PhilippeBaret - <<TableOfContents(1)>> >> <<TableOfContents(2)>> - - - 19 - 2015-11-08 22:48:14 - PhilippeBaret - TableOfContents(3) >> TableOfContents(1) - - - 18 - 2015-11-08 22:10:12 - PhilippeBaret - Added Introduction page - - - 17 - 2015-11-06 15:23:56 - SunilMohanAdapa - Add APU as supported hardware - - - 16 - 2015-10-23 20:16:08 - MarkusSabadello - adding Unhosted to Apps - - - 15 - 2015-10-04 11:17:00 - SunilMohanAdapa - Include Download page - - - 14 - 2015-09-16 16:38:33 - SunilMohanAdapa - Don't include TOC from developer guide - - - 13 - 2015-09-16 16:24:02 - SunilMohanAdapa - Include the secure shell page - - - 12 - 2015-09-16 12:35:53 - SunilMohanAdapa - Relocate and rename developer section - - - 11 - 2015-09-16 12:18:57 - SunilMohanAdapa - Add hacking section - - - 10 - 2015-09-16 12:01:25 - SunilMohanAdapa - Add contributing section - - - 9 - 2015-09-16 08:29:07 - SunilMohanAdapa - Add USBWiFi page - - - 8 - 2015-09-14 03:41:12 - SunilMohanAdapa - Temporarily remove portal link to avoid Dockbook export issue - - - 7 - 2015-09-14 03:27:32 - SunilMohanAdapa - Remove Dreamplug TOC - - - 6 - 2015-09-13 16:03:28 - SunilMohanAdapa - Add release notes - - - 5 - 2015-09-13 15:26:24 - SunilMohanAdapa - Minor fix to title - - - 4 - 2015-09-13 15:20:46 - SunilMohanAdapa - Move getting help to the top of the manual - - - 3 - 2015-09-13 15:01:14 - SunilMohanAdapa - Don't bottom parts of each page - - - 2 - 2015-09-13 14:45:33 - SunilMohanAdapa - Add FreedomBox category and portal - - - 1 - 2015-09-13 14:43:38 - SunilMohanAdapa - Initial page for FreedomBox aggregated manual - - - -
- FreedomBox: take your online privacy back - FreedomBox is a ready made personal server, designed with privacy and data ownership in mind. It is a subset of the Debian universal operating system and includes free software only. You can run it on a small, inexpensive and power-efficient computer box in your home that is dedicated for that use. It can also be installed on any computer running Debian or in a virtual machine. - In order to replace third-party communication services that are data mining your entire life, you will be able to host services yourself and use them at home or over the Internet through a browser or specialized apps. These services include chat and voice calls, webmail, file sharing and calendar, address book and news feed synchronization. For example, to start using a private chat service, activate the service from the administration interface and add your friends as authorized users of the service. They will be able to connect to the service hosted on your FreedomBox, using XMPP chat clients such as Conversations on Android, Pidgin on Windows and Linux, or Messages on Mac OS, for encrypted communications. - FreedomBox is a product you can just buy, set up and use. Once installed the interface is easy to use, similar to a smart phone. - User documentation: - - - List of applications offered by FreedomBox. - - - - Manual - - - - - Live Help from the community - - - - FreedomBox can also host a Wi-Fi access point, ad blocking proxy and a virtual private network (VPN). More advanced users can replace their router with a FreedomBox. - Setting up FreedomBox on a specific hardware or on your computer running Debian may require a bit of technical expertise or help from the community. - Related technical documentation: - - - - Machines that support FreedomBox - - - - - Download and Install - - - - - FreedomBox Developer Manual - - - -
- Typical usage: Private Cloud - FreedomBox provides services to the computers and mobile devices in your home, and to your friends. This includes secure instant messaging and low-bandwidth, high-quality voice conference calling. FreedomBox lets you publish your content in a blog and wiki to collaborate with the rest of the world. On the roadmap are a personal email server and federated social networking using GNU Social and Diaspora, to provide privacy-respecting alternatives to Gmail and Facebook. -
-
- Advanced usage: Smart Home Router - FreedomBox runs in a physical computer and can route your traffic. It can sit between various devices at home such as mobiles, laptops and TVs and the Internet, replacing a home wireless router. By routing traffic, FreedomBox can remove tracking advertisements and malicious web bugs before they ever reach your devices. FreedomBox can cloak your location and protect your anonymity by "onion routing" your traffic over Tor. FreedomBox provides a VPN server that you can use while you are away from home to keep your traffic secret on untrusted public wireless networks and to securely access various devices at home. - It can also be carried along with your laptop and used to connect to public networks at work, school or office to avail its services. - It could be used in a village to make available digital communications throughout the village. In the future, FreedomBox intends to deliver support for alternative ways of connecting to the Internet such as Mesh networking. -
-
- Advanced usage: For Communities - The primary design goal of FreedomBox is to be used as a personal server at home for use by a single family and their friends. However, at the core, it is a server software that can aid a non-technical user to setup services and maintain them with ease. Security is automatically managed and many of the technical choices in system administration are taken care by the software automatically thereby reducing complexity for a non-technical user. This nature of FreedomBox makes it well-suited for hosting services for small communities like villages or small firms. Communities can host their own services using FreedomBox with minimal effort. They can setup Wi-Fi networks that span the entire area of the community and draw Internet connections from long distances. Community members can enjoy previously unavailable Internet connectivity, ubiquitous Wi-Fi coverage, free VOIP services, offline education and entertainment content, etc. This will also boost privacy for individuals in the community, reduce dependence on centralized services provided by large companies and make them resistant to censorship. - The free e-book FreedomBox for Communities describes the motivation and provides detailed instructions to setup FreedomBox for this use case. Members of the FreedomBox project are involved in setting up Wi-Fi networks with free Internet connectivity in rural India. This e-book documents their knowledge and experiences. -
-
- FreedomBox Interface -
- Screenshot - - - - - - - FreedomBox front page - - - -
-
- Screencast introduction - - Plinth_Introduction.webm - - (36 MB, 13 Min.) -
-
- More video resources - Eben Moglen's talk, Eben Moglen - Freedom in the cloud, delivered before the FreedomBox project was started gives insights into the philosophy behind FreedomBox. - First demonstration of FreedomBox at SFLC, University of Columbia by Sunil Mohan Adapa. -
-
-
-
- Quick Start -
- What you need to get started - The easy way is to buy a FreedomBox kit. - Alternatively you may choose to build it yourself, by gathering all the components: - - - A supported device (including any device that can run Debian). We will call that the FreedomBox in the rest of this manual. - - - A power cable for your device. - - - An ethernet cable. - - - A microSD card (or equivalent storage media for your device), prepared according to the instructions on the Download page. - - -
-
- How to get started - - - Plug one end of your ethernet cord into your FreedomBox's ethernet port, and plug the other end into your router. - - - Power on the FreedomBox. - - - Note: On most single board computers, don't expect any output on a monitor connected via HDMI as the support may not exist in the kernel. See below to access and control your FreedomBox via network. - - - - - On first boot, FreedomBox will perform its initial setup (older versions of FreedomBox reboot after this step). This process may take several minutes on some machines. After giving it about 10 minutes, proceed to the next step. - - - Note: Currently, due a known bug, you need to restart your FreedomBox after 10m and then proceed to the next step. - - - - - After the FreedomBox has finished its initial setup, you can access its web interface through your web browser. - - - If your computer is connected directly to the FreedomBox through a second (LAN) ethernet port, you can browse to: or . - - - If your computer supports mDNS (GNU/Linux, Mac OSX or Windows with mDNS software installed), you can browse to: (or ) - - - If you know your way around the router's web interface, you can look up the IP address of the FreedomBox there, and browse to that address. - - - If none of these methods are available, then you will need to figure out the IP address of your FreedomBox. You can use the "nmap" program from your computer to find its IP address: - - In most cases you can look at your current IP address, and change the last digits with zero to find your home network, like so: XXX.XXX.XXX.0/24 - Your FreedomBox will show up as an IP address with an open tcp port 80 using Apache httpd service on Debian, such as the example below which would make it accessible at : - - If nmap does not find anything with the above command, you can try replacing 192.168.0.0/24 with 10.42.0.255/24. - - The scan report will show something similar to the following: - - In this example, the FreedomBox is accessible at . (10.42.0.1 is my laptop.) - - - - - On accessing FreedomBox's web interface your browser will warn you that it communicates securely but that it regards the security certificate for doing so as invalid. This is a fact you need to accept because the certificate is auto generated on the box and therefore "self-signed" (the browser might also use words such as "untrusted", "not private", "privacy error" or "unknown issuer/authority"). Telling your browser that you are aware of this might involve pressing buttons such as "I understand the Risks", "proceed to ... (unsafe)" or "Add exception". After installation this certificate can be changed to a normal one using the Let's Encrypt option. - - - - - - - - - Self-signed certificate warning - - - - - - - - - - - - Add Security Exception - - - - - - - - The first time you access the FreedomBox web interface, you will see a welcome page. Click the "Start Setup" button to continue. - - - - - - - - - Welcome - - - - If you have installed FreedomBox using a Debian package, you will be asked for a secret key. This secret must have been provided during the installation of the Debian package. It can also be read from the file /var/lib/plinth/firstboot-wizard-secret. - - - - - The next page asks you to provide a user name and password. Fill in the form, and then click "Create Account." - - - Note: The user that you create here has Admin privileges and can also log in using ssh. You might not want to use the user account you will want to use in daily usage, to prevent security issues. You can later add more users. - - - - - - - - - Account - - - - - - - - After completing the form, you will be logged in to FreedomBox's web interface and able to access apps and configuration through the interface. - - - - - - - - - Complete - - - - - - - - Now you can try any of the Apps that are available on FreedomBox. -
-
- Finding your way around -
- Front page - The front page is the page that you will see when accessing the web root of your FreedomBox. You can also access it by clicking the FreedomBox logo in the top-left corner of the FreedomBox's web interface. - The front page includes shortcuts to apps that have been installed and are enabled. For web apps, clicking the shortcut will take you directly to the app's web page. For other services, clicking the shortcut will show more information about the service. - - - - - - - Front page - - - - - - - - - - Front page - - - -
-
- Apps menu - The Apps menu can be accessed by clicking the grid icon, next to the FreedomBox logo. This page lists all of the apps that are available for installing on FreedomBox. Click the name of an app to visit its page, where you can install and configure it. - - - - - - - Apps - - - -
-
- Help menu - The Help menu can be accessed by clicking the question mark icon in the top-right corner. It includes helpful links and the FreedomBox manual. - - - - - - - Help - - - -
-
- System menu - The System menu can be accessed by clicking the gear icon in the top-left corner. It includes a number of pages related to system configuration. - - - - - - - System - - - -
-
- User menu - In the top-right corner, the name of the currently logged-in user is shown. A drop-down menu includes options for editing the current user or logging out of the user interface. - - - - - - - User - - - -
-
- Burger menu - FreedomBox's web interface is responsive. Eventually you might miss the menu options on slim windows. - - - - - - - User - - - - That's because the top menu options collapsed into the burger icon shown at the top right corner of the window. Clicking on it the menu drops down. - - - - - - - User - - - -
-
-
-
- Getting Help - - - - This manual is intended to give you the information you need to get started with your FreedomBox. However, if you have any questions after reading this document, you can get help from community contributors by: - - - Searching/asking on our discussion forum (recommended). - - - Emailing to our mailinglist at freedombox-discuss@lists.alioth.debian.org. You can also sign up to receive copies of every discussion that happens on the mailing list or read the archives. - - - Chatting at #freedombox@irc.oftc.net. - - - Reading the wiki. - - - Reading the FreedomBox Foundation's website. - - - Reading the FreedomBox Project Page. - - -
-
- Download and Install - Welcome to the FreedomBox download page. - - - Note: If you purchased a FreedomBox kit this section is not meant for you, so you can just skip it entirely. (Unless you specifically want to build an alternative software image). - - - You may either install FreedomBox on one of the supported inexpensive hardware devices, on any Debian operating system, or deploy it on a virtual machine. - Installing on a machine running a Debian system is easy because FreedomBox is available as a package. We do recommend to install FreedomBox on a supported single board computer (SBC). The board will be dedicated for FreedomBox use from home, this will prevent a lot of risks, such as accidental misconfiguration by the user. In case of trouble deciding which hardware is best for you or during the installation, please use the support page or read the Questions and Answers page based on posts on the Freedombox-discuss mailing list archives. -
- Downloading on Debian - If you are installing on an existing Debian installation, you don't need to download these images. Instead read the instructions on setting up FreedomBox on Debian. -
-
- Downloading for SBC or Virtual Machine -
- Prepare your device - Read the hardware specific instructions on how to prepare your device at the Hardware section. On the web is a lot of documentation about setting your device up and flashing USB or SD Cards to boot your hardware. -
-
- Downloading Images - Recent images for supported targets are available here: - - - Official Images: - - - Official Images: - - -
-
- Verifying the Downloaded Images - It is important to verify the images you have downloaded to ensure that the file has not be corrupted during the transmission and that it is indeed the image built by FreedomBox developers. - Note: Testing and nightly images are automatically signed by the FreedomBox CI server. - - - First open a terminal and import the public keys of the FreedomBox developers who built the images: - - If this command shows an error such as new key but contains no user ID - skipped, then use a different keyserver to download the keys: - - Or - - - - Next, verify the fingerprint of the public keys: - -sub 4096R/4C1D4B57 2011-11-12 - -$ gpg --fingerprint 7D6ADB750F91085589484BE677C0C75E7B650808 -pub 4096R/7B650808 2015-06-07 [expires: 2020-06-05] - Key fingerprint = 7D6A DB75 0F91 0855 8948 4BE6 77C0 C75E 7B65 0808 -uid James Valleroy -uid James Valleroy -sub 4096R/25D22BF4 2015-06-07 [expires: 2020-06-05] -sub 4096R/DDA11207 2015-07-03 [expires: 2020-07-01] -sub 2048R/2A624357 2015-12-22 - -$ gpg --fingerprint 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8 -pub rsa4096 2018-06-06 [SC] - 013D 86D8 BA32 EAB4 A669 1BF8 5D41 53D6 FE18 8FC8 -uid [ unknown] FreedomBox CI (Continuous Integration server) -sub rsa4096 2018-06-06 [E]]]> - - - Finally, verify your downloaded image with its signature file .sig. For example: - " -gpg: WARNING: This key is not certified with a trusted signature! -gpg: There is no indication that the signature belongs to the owner. -Primary key fingerprint: BCBE BD57 A11F 70B2 3782 BC57 36C3 6144 0C9B C971]]> - - -
-
- Installation - After the download you can use the image to boot your chosen hardware (including virtual machines). You'll need to copy the image to the memory card or USB stick as follows: - - - Figure out which device your card actually is. - - - Unplug your card. - - - Run dmesg -w to show and follow the kernel messages. - - - Plug your card in. You will see messages such as following: - - - - In the above case, the disk that is newly inserted is available as /dev/sdg. Very carefully note this and use it in the copying step below. - - - - - Decompress the downloaded image using tar: - - The above command is an example for the cubietruck image built on 2015-12-13. Your downloaded file name will be different. - - - Copy the image to your card. Double check to make sure you don't write to your computer's main storage (such as /dev/sda). Also make sure that you don't run this step as root to avoid potentially overriding data on your hard drive due to a mistake in identifying the device or errors while typing the command. USB disks and SD cards inserted into the system should typically be write accessible to normal users. If you don't have permission to write to your SD card as a user, you may need to run this command as root. In this case triple check everything before you run the command. Another safety precaution is to unplug all external disks except the SD card before running the command. - For example, if your SD card is /dev/sdg as noted in the first step above, then to copy the image, run: - - - - An alternative to copy to SD card command - - - /dev/sdg ; sync]]> - - - On MS Windows you will need a tool like etcher. On MacOS (OSX) you can use programs like balenaetcher and rosaimagewriter. - - - The above command is an example for the cubietruck image built on 2015-12-13. Your image file name will be different. - When picking a device, use the drive-letter destination, like /dev/sdg, not a numbered destination, like /dev/sdg1. The device without a number refers to the entire device, while the device with a number refers to a specific partition. We want to use the whole device. Downloaded images contain complete information about how many partitions there should be, their sizes and types. You don't have to format your SD card or create partitions. All the data on the SD card will be wiped off during the write process. - - - Use the image by inserting the SD card or USB disk into the target device and booting from it. Your device should also be prepared (see the Hardware section). - - - Read (the rest of) the Manual for instructions on how to use applications in FreedomBox. - - -
-
-
- Obtaining Source Code - FreedomBox is fully free software and you can obtain the source code to study, modify and distribute improvements. -
- From within FreedomBox - FreedomBox is made up of several software programs and you can obtain the source code to any of them. These instructions are similar to obtaining and building source code for Debian since FreedomBox is a pure blend of Debian. Using this process you can obtain the source code to the exact version of the package you are currently using in FreedomBox. - - - To see the list of software packages installed on your FreedomBox, run the following in a terminal: - - - - To obtain the source code for any of those programs, then run: - ]]> - This requires that the apt sources list contains information about the source code repositories. These are present by default on all FreedomBox images. If you have installed FreedomBox using a package from Debian, you need to ensure that source repositories are added in the file. - - - To build the package from source code, first install its dependencies - ]]> - Switch to the source directory created by the apt source command: - ]]> - Then build the package - - - - Install the package: - .deb]]> - - -
-
- Other Ways to Obtain Source Code - - - Source code for any of the packages can be browsed and searched using the web interface at sources.debian.org. For example, see the plinth package. - - - Source code and pre-built binary package for any version of a package including historic versions can be obtained from snapshot.debian.org. For example, see the plinth package. - - - You can also obtain the links to upstream project homepage, upstream version control, Debian's version control, changelog, etc. from the Debian tracker page for a project at tracker.debian.org. For example, see the tracker page for plinth package. - - - You can build and install a package from its Debian's version control repository. For example, - - - -
-
- Building Disk Images - You can also build FreedomBox disk images for various hardware platforms using the freedom-maker tool. This is also available as a Debian package and source code for it may be obtained using the above methods. Build instructions for creating disk images are available as part of the source code for freedom-maker package. - FreedomBox disk images are built and uploaded to official servers using automated Continuous Integration infrastructure. This infrastructure is available as source code too and provides accurate information on how FreedomBox images are built. -
- U-boot on Pioneer Edition Images - There is one minor exception to the u-boot package present on the hardware sold as FreedomBox Home Server Kits Pioneer Edition. It contains an small but important fix that is not part of Debian sources. The fork of the Debian u-boot source repository along with the minor change done by the FreedomBox is available as a separate repository. We except this change to be available in upstream u-boot eventually and this repository will not be needed. This package can be built on a Debian armhf machine as follows (cross compiling is also possible, simply follow instructions for cross compiling Debian packages): - - The u-boot Debian package will be available in u-boot-sunxi*.deb. This package will contain - -dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of= seek=8 bs=1k conv=notrunc]]> - The resulting image will have the modified u-boot in it. -
-
-
-
-
- Apps - - Add entries here sorted after the level 2 heading inside the page to keep the list alphabetically sorted - -
- Coquelicot (File Sharing) -
- About Coquelicot - Coquelicot is a "one-click" file sharing web application with a focus on protecting users' privacy. The basic principle is simple: users can upload a file to the server, in return they get a unique URL which can be shared with others in order to download the file. A download password can be defined. - After the upload you get a unique link that can be shared to your partners in order to - Read more about Coquelicot at the Coquelicot README - Available since: version 0.24.0 -
-
- When to use Coquelicot - Coquelicot is best used to quickly share a single file. If you want to share a folder, - - - for a single use, compress the folder and share it over Coquelicot - - - which must be kept synchronized between computers, use Syncthing instead - - - Coquelicot can only provide a reasonable degree of privacy. If anonymity is required, you should consider using the desktop application Onionshare instead. - Since Coquelicot fully uploads the file to the server, your FreedomBox will incur both upload and download bandwidth costs. For very large files, consider sharing them using BitTorrent by creating a private torrent file. If anonymity is required, use Onionshare. It is P2P and doesn't require a server. -
-
- Coquelicot on FreedomBox - With Coquelicot installed, you can upload files to your FreedomBox server and privately share them. - Post installation, the Coquelicot page offers two settings. - - - Upload Password: Coquelicot on FreedomBox is currently configured to use simple password authentication for ease of use. Remember that it's one global password for this Coquelicot instance and not your user password for FreedomBox. You need not remember this password. You can set a new one from the FreedomBox interface anytime. - - - Maximum File Size: You can alter the maximum size of the file that can be transferred through Coquelicot using this setting. The size is in Mebibytes. The maximum file size is only limited by the disk size of your FreedomBox. - - -
-
- Privacy - Someone monitoring your network traffic might find out that some file is being transferred through your FreedomBox and also possibly its size, but will not know the file name. Coquelicot encrypts files on the server and also fills the file contents with 0s when deleting them. This eliminates the risk of file contents being revealed in the event of your FreedomBox being confiscated or stolen. The real risk to mitigate here is a third-party also downloading your file along with the intended recipient. -
- Sharing over instant messengers - Some instant messengers which have previews for websites might download your file in order to show a preview in the conversation. If you set the option of one-time download on a file, you might notice that the one download will be used up by the instant messenger. If sharing over such messengers, please use a download password in combination with a one-time download option. -
-
- Sharing download links privately - It is recommended to share your file download links and download passwords over encrypted channels. You can simply avoid all the above problems with instant messenger previews by using instant messengers that support encrypted conversations like Riot with Matrix Synapse or XMPP (ejabberd server on FreedomBox) with clients that support end-to-end encryption. Send the download link and the download password in two separate messages (helps if your messenger supports perfect forward secrecy like XMPP with OTR). You can also share your links over PGP-encrypted email using Thunderbird. -
-
-
-
- Coturn (VoIP Helper) - Coturn is a server to facilitate audio/video calls and conferences by providing an implementation of TURN and STUN protocols. WebRTC, SIP and other communication servers can use it to establish a call between parties who are otherwise unable connect to each other. - It is not meant to be used directly by users. Servers such as Matrix Synapse need to be configured with the details provided on the Coturn app page. Apart from Matrix Synapse, Jitsi, Ejabberd, Nextcloud Talk, etc. can use Coturn server for audio/video calls and conferences. There is no need for the servers to be running on the same machine as FreedomBox and external servers can use Coturn running on FreedomBox. - Coturn is available in FreedomBox since version 20.8 as an advanced app. This means that you need to check "Show advanced apps and features" in "General Configuration" to see Coturn icon in the "Apps" section. -
- How it works - When making an audio/video call, it is best to route the media streams between two peers directly. This will give the best possible latency (better signal quality) and avoid depending on a centralized server (privacy). It scales well because a simple chat server can host thousands of calls without involving the server in any way other than to setup the call. However, this approach does not work most of the time to due to how networks are configured. Most peers on the network do not have a unique IP address allocated to them. They work hidden behind a network device that performs "Network Address Translation" (NAT) for them. This means that the two peers have no way of reaching each other. - To address this problem, a simple technique known as STUN was introduced. With the help of a third party STUN server, the peers can trick the NAT devices, to carry the traffic between the two peers. Unfortunately, this trick only works about 80% of the time. So, if STUN fails, peers have no choice but to route their traffic through an intermediary server called TURN server. All the mechanism of trying out STUN first and then falling back to TURN is described in a protocol known as ICE. - On FreedomBox, Coturn provides both STUN and TURN servers. Both services are provided over TCP as well as UDP. They are provided on unencrypted as well as encrypted channels (with have a higher chance of success). Since STUN servers are very inexpensive and don't consume a lot of server resources, there is no authentication needed to use them. TURN servers on the other hand need authentication. This authentication is highly simplified and does not require maintaining a database of users. A server such as matrix-synapse which is about to setup an audio/video call between two peers will generate a username and password using a shared secret. When the peers use the TURN server, they will be validated using these credentials because the TURN server also knows the same secret. - In summary, a communication server needs to know the URLs of the STUN/TURN servers along with a shared authentication secret for TURN. After that, during audio/video call setup, they will correctly guide the peers to use STUN/TURN servers. Coturn app in FreedomBox provides exactly this information. This information can be used to configure a communication server irrespective of whether it is running on the same FreedomBox or on another server. -
-
- Configuring Matrix Synapse - Matrix Synapse server in FreedomBox can be configured to use Coturn TURN/STUN server. In future, when you install Matrix Synapse, FreedomBox will automatically install Coturn and configure its parameters into Matrix Synapse. To configure Matrix Synapse, edit the file /etc/matrix-synapse/homeserver.yaml with the following lines: - - And then restart matrix-synapse server by disabling and re-enabling the matrix-synapse app. -
-
-
- Deluge (BitTorrent Web Client) -
- What is Deluge? - BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two BitTorrent web clients available in FreedomBox: Transmission and Deluge. They have similar features, but you may prefer one over the other. - Deluge is a lightweight BitTorrent client that is highly configurable. Additional functionality can be added by installing plugins. -
-
- Screenshot - - - - - - - Deluge Web UI - - - -
-
- Initial Setup - After installing Deluge, it can be accessed by pointing your browser to https://<your freedombox>/deluge. You will need to enter a password to login: - - - - - - - Deluge Login - - - - The initial password is "deluge". The first time that you login, Deluge will ask if you wish to change the password. You should change it to something that is harder to guess. - Next you will be shown the connection manager. Click on the first entry (Offline - 127.0.0.1:58846). Then click "Start Daemon" to start the Deluge service that will run in the background. - - - - - - - Deluge Connection Manager (Offline) - - - - Now it should say "Online". Click "Connect" to complete the setup. - - - - - - - Deluge Connection Manager (Online) - - - - At this point, you are ready to begin using Deluge. You can make further changes in the Preferences, or add a torrent file or URL. -
-
-
- ejabberd (Chat Server) -
- What is XMPP? - XMPP is a federated protocol for Instant Messaging. This means that users who have accounts on one server, can talk to users that are on another server. XMPP can also be used for voice and video calls, if supported by the clients. - With XMPP, there are two ways that conversations can be secured: - - - TLS: This secures the connection between the client and server, or between two servers. This should be supported by all clients and is highly recommended. - - - End-to-end: This secures the messages sent from one client to another, so that even the server cannot see the contents. The latest and most convenient protocol is called OMEMO, but it is only supported by a few clients. There is another protocol called OTR that may be supported by some clients that lack OMEMO support. Both clients must support the same protocol for it to work. - - -
-
- Setting the Domain Name - For XMPP to work, your FreedomBox needs to have a Domain Name that can be accessed over the public Internet. You can read more about obtaining a Domain Name in the Dynamic DNS section of this manual. - Once you have a Domain Name, you can tell your FreedomBox to use it by setting the Domain Name in the System Configuration. - - - Note: After changing your Domain Name, the Chat Server (XMPP) page may show that the service is not running. After a minute or so, it should be up and running again. - - - Please note that PageKite does not support the XMPP protocol at this time. -
-
- Registering XMPP users through SSO - Currently, all users created through FreedomBox will be able to login to the XMPP server. You can add new users through the System Users and Groups module. It does not matter which Groups are selected for the new user. -
-
- Using the web client - After the XMPP module install completes, the JSXC web client for XMPP can be accessed at https://<your freedombox>/plinth/apps/xmpp/jsxc/. It will automatically check the BOSH server connection to the configured domain name. -
-
- Using a desktop or mobile client - XMPP clients are available for various desktop and mobile platforms. -
-
- Port Forwarding - 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 XMPP: - - - TCP 5222 (client-to-server) - - - TCP 5269 (server-to-server) - - -
-
-
- GitWeb (Simple Git Hosting) - Git is a distributed version-control system for tracking changes in source code during software development. GitWeb provides a web interface to Git repositories. You can browse history and content of source code, use search to find relevant commits and code. You can also clone repositories and upload code changes with a command-line Git client or with multiple available graphical clients. And you can share your code with people around the world. - To learn more on how to use Git visit Git tutorial. - Available since version: 19.19 -
- Managing the repositories - After installation of GitWeb, a new repository can be created. It can be marked as private to limit access. -
-
- Access - GitWeb can be accessed after installation e.g. by the web client through -
-
- HTTP basic auth - GitWeb on FreedomBox currently supports HTTP remotes only. To avoid having to enter the password each time you pull/push to the repository, you can edit your remote to include the credentials. - - Example: - - - Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only. - Note: If using this method, your password will be stored in plain text in the local repository's .git/config file. For this reason, you should create a FreedomBox user who has only access to the gitweb and never use an admin account. -
-
- Mirroring - Though your repositories are primarily hosted on your own FreedomBox, you can configure a repository on another Git hosting system like GitLab as a mirror. -
-
-
- I2P (Anonymity Network) -
- About I2P - The Invisible Internet Project is an anonymous network layer intended to protect communication from censorship and surveillance. I2P provides anonymity by sending encrypted traffic through a volunteer-run network distributed around the world. - Find more information about I2P on their project homepage. -
-
- Services Offered - The following services are offered via I2P in FreedomBox by default. Additional services may be available when enabled from I2P router console that can be launched from FreedomBox web interface. - - - Anonymous Internet browsing: I2P can be used to browse Internet anonymously. For this, configure your browser (preferable a Tor Browser) to connect to I2P proxy. This can be done by setting HTTP proxy and HTTPS proxy to freedombox.local (or your FreedomBox's local IP address) and ports to 4444 and 4445 respectively. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. - - - Reaching eepsites: I2P network can host websites that can remain anonymous. These are called eepsites and end with .i2p in their domain name. For example, is the website for I2P project in the I2P network. eepsites are not reachable using a regular browser via regular Internet connection. To browse eepsites, your browser needs to be configured to use HTTP, HTTPS proxies as described above. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. - - - Anonymous torrent downloads: I2PSnark, an application for anonymously downloading and sharing files over the BitTorrent network is available in I2P and enabled by default in FreedomBox. This application is controlled via a web interface that can be launched from 'Anonymous torrents' section of I2P app in FreedomBox web interface or from the I2P router console interface. Only logged-in users belonging to 'Manage I2P application' group can use this service. - - - IRC network: I2P network contains an IRC network called Irc2P. This network hosts the I2P project's official IRC channel among other channels. This service is enabled by default in FreedomBox. To use it, open your favourite IRC client. Then configure it to connect to host freedombox.local (or your FreedomBox's local IP address) with port number 6668. This service is available only when you are reaching FreedomBox using local network (networks in internal zone) and not available when connecting to FreedomBox from the Internet. One exception to this is when you connect to FreedomBox's VPN service from Internet you can still use this service. - - - I2P router console: This is the central management interface for I2P. It shows the current status of I2P, bandwidth statistics and allows modifying various configuration settings. You can tune your participation in the I2P network and use/edit a list of your favourite I2P sites (eepsites). Only logged-in users belonging to 'Manage I2P application' group can use this service. - - -
-
-
- Ikiwiki (Wiki and Blog) -
- What is Ikiwiki? - Ikiwiki converts wiki pages into HTML pages suitable for publishing on a website. It provides particularly blogging, podcasting, calendars and a large selection of plugins. -
-
- Quick Start - After the app installation on your box administration interface: - - - Go to "Create" section and create a wiki or a blog - - - Go back to "Configure" section and click on /ikiwiki link - - - Click on your new wiki or blog name under "Parent directory" - - - Enjoy your new publication page. - - -
-
- Creating a wiki or blog - You can create a wiki or blog to be hosted on your FreedomBox through the Wiki & Blog (Ikiwiki) page in FreedomBox. The first time you visit this page, it will ask to install packages required by Ikiwiki. - After the package install has completed, select the Create tab. You can select the type to be Wiki or Blog. Also type in a name for the wiki or blog, and the username and password for the wiki's/blog's admin account. Then click Update setup and you will see the wiki/blog added to your list. Note that each wiki/blog has its own admin account. - - - - - - - ikiwiki: Create - - - -
-
- Accessing your wiki or blog - From the Wiki & Blog (Ikiwiki) page, select the Manage tab and you will see a list of your wikis and blogs. Click a name to navigate to that wiki or blog. - - - - - - - ikiwiki: Manage - - - - From here, if you click Edit or Preferences, you will be taken to a login page. To log in with the admin account that you created before, select the Other tab, enter the username and password, and click Login. -
-
- User login through SSO - Besides the wiki/blog admin, other FreedomBox users can be given access to login and edit wikis and blogs. However, they will not have all the same permissions as the wiki admin. They can add or edit pages, but cannot change the wiki's configuration. - To add a wiki user, go to the Users and Groups page in FreedomBox (under System configuration, the gear icon at the top right corner of the page). Create or modify a user, and add them to the wiki group. (Users in the admin group will also have wiki access.) - To login as a FreedomBox user, go to the wiki/blog's login page and select the Other tab. Then click the "Login with HTTP auth" button. The browser will show a popup dialog where you can enter the username and password of the FreedomBox user. -
-
- Adding FreedomBox users as wiki admins - - - Login to the wiki, using the admin account that was specified when the wiki was created. - - - Click "Preferences", then "Setup". - - - Under "main", in the "users who are wiki admins", add the name of a user on the FreedomBox. - - - (Optional) Under "auth plugin: passwordauth", uncheck the "enable passwordauth?" option. (Note: This will disable the old admin account login. Only SSO login using HTTP auth will be possible.) - - - Click "Save Setup". - - - Click "Preferences", then "Logout". - - - Login as the new admin user using "Login with HTTP auth". - - -
-
-
- infinoted (Gobby Server) - infinoted is a server for Gobby, a collaborative text editor. - To use it, download Gobby, desktop client and install it. Then start Gobby and select "Connect to Server" and enter your FreedomBox's domain name. -
- Port Forwarding - 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 infinoted: - - - TCP 6523 - - -
-
-
- Matrix Synapse (Chat Server) -
- What is Matrix? - Matrix is an open standard for interoperable, decentralized, real-time communication over IP. Synapse is the reference implementation of a Matrix server. It can be used to setup instant messaging on FreedomBox to host large chat rooms, end-to-end encrypted communication and audio/video calls. Matrix Synapse is a federated application where chat rooms can exist on any server and users from any server in the federated network can join them. Learn more about Matrix. - Available since: version 0.14.0 -
-
- How to access your Matrix Synapse server? - We recommend the Riot client to access the Matrix Synapse server. You can download Riot for desktops. Mobile applications for Android and iOS are available from their respective app stores. -
-
- Setting up Matrix Synapse on your FreedomBox - To enable Matrix, first navigate to the Chat Server (Matrix Synapse) page and install it. Matrix needs a valid domain name to be configured. After installation, you will be asked to configure it. You will be able to select a domain from a drop down menu of available domains. Domains are configured using System -> Configure page. After configuring a domain, you will see that the service is running. The service will be accessible on the configured FreedomBox domain. Currently, you will not be able to change the domain once is it configured. - Your router has to be configured to forward port 8448. - All the registered users of your FreedomBox will have their Matrix IDs as @username:domain. If public registration is enabled, also your chosen client can be used to register a user account. -
-
- Federating with other Matrix instances - You will be able to interact with any other person running another Matrix instance. This is done by simply starting a conversation with them using their matrix ID which is of the format @their-username:their-domain. You can also join rooms which are in another server and have audio/video calls with contacts on other server. -
-
- Memory usage - The Synapse reference server implemented in Python is known to be quite RAM hungry, especially when loading large rooms with thousands of members like #matrix:matrix.org. It is recommended to avoid joining such rooms if your FreedomBox device only has 1 GiB RAM or less. Rooms with up to a hundred members should be safe to join. The Matrix team is working on a new implementation of the Matrix server written in Go called Dendrite which might perform better in low-memory environments. - Some large public rooms in the Matrix network are also available as IRC channels (e.g. #freedombox:matrix.org is also available as #freedombox on irc.debian.org). It is better to use IRC instead of Matrix for such large rooms. You can join the IRC channels using Quassel. -
-
- Advanced usage - - - If you wish to create a large number of users on your Matrix Synapse server, use the following commands on a remote shell as root user: - - - /etc/matrix-synapse/conf.d/registration_shared_secret.yaml -chmod 600 /etc/matrix-synapse/conf.d/registration_shared_secret.yaml -chown matrix-synapse:nogroup /etc/matrix-synapse/conf.d/registration_shared_secret.yaml -systemctl restart matrix-synapse -register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml]]> - - - - - If you wish to see the list of users registered in Matrix Synapse, the following as root user: - - - - - - - - If you wish to create a community in Matrix Synapse, a Matrix user with server admin privileges is needed. In order to grant such privileges to username run the following commands as root user: - - - - - - - -
-
-
- MediaWiki (Wiki) -
- About MediaWiki - MediaWiki is the software that powers the Wikimedia suite of wikis. - Read more about MediaWiki on Wikipedia - Available since: version 0.20.0 -
-
- MediaWiki on FreedomBox - MediaWiki on FreedomBox is configured to be publicly readable and privately editable. Only logged in users can make edits to the wiki. This configuration prevents spam and vandalism on the wiki. -
- User management - Users can be created by the MediaWiki administrator (user "admin") only. The "admin" user can also be used to reset passwords of MediaWiki users. The administrator password, if forgotten can be reset anytime from the MediaWiki app page in web interface. -
-
- Use cases - MediaWiki is quite versatile and can be put to many creative uses. It also comes with a lot of plugins and themes and is highly customizable. -
- Personal Knowledge Repository - - - MediaWiki on FreedomBox can be your own personal knowledge repository. Since MediaWiki has good multimedia support, you can write notes, store images, create checklists, store references and bookmarks etc. in an organized manner. You can store the knowledge of a lifetime in your MediaWiki instance. - - -
-
- Community Wiki - - - A community of users can use MediaWiki as their common repository of knowledge and reference material. It can used as a college notice board, documentation server for a small company, common notebook for study groups or as a fan wiki like wikia. - - -
-
- Personal Wiki-based Website - - - Several websites on the internet are simply MediaWiki instances. MediaWiki on FreedomBox is read-only to visitors. Hence, it can be adapted to serve as your personal website and/or blog. MediaWiki content is easy to export and can be later moved to use another blog engine. - - -
-
-
- Editing Wiki Content - The MediaWiki installation on FreedomBox ships with a basic editor with a toolbar for common options like Bold, Italics etc. Click on the Advanced section for more options like Headings, bullet lists etc. - - - - - - - mediawiki-toolbar.png - - - -
- Visual Editor - - - MediaWiki's new Visual Editor gives a WYSIWYG user interface to creating wiki pages. This is still a Beta feature and is not provided by default with MediaWiki. A workaround is to use write your content using the Visual Editor in Wikipedia's Sandbox, switching to source editing mode and copying the content into your wiki. - - -
-
- Other Formats - - - You don't have to necessarily learn the MediaWiki formatting language. You can write in your favorite format (Markdown, Org-mode, LaTeX etc.) and convert it to the MediaWiki format using Pandoc. - - -
-
- Image Uploads - - - Image uploads have been enabled since FreedomBox version 0.36.0. You can also directly use images from Wikimedia Commons using a feature called Instant Commons. - - -
-
-
- Customization -
- Skins - MediaWiki's default skin is usually Vector. The default skin set by FreedomBox is Timeless. - Vector is a skin best-suited for viewing on desktop browsers. It is not suitable for mobile screen sizes. Wikimedia sites host a separate mobile site. It is not worth hosting a separate mobile site for small MediaWiki installations like those on FreedomBox. Using a mobile-friendly skin like Timeless is a cheaper way of solving the problem. - Administrators can choose a default skin from the app configuration. Users of the site also have the choice of viewing it with a different skin. -
-
-
-
-
- Minetest (Block Sandbox) - 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 Minetest client is needed. -
- Port Forwarding - 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: - - - UDP 30000 - - -
-
-
- MiniDLNA (Simple Media Server) - MiniDLNA is a media server with the aim to be compliant with DLNA/UPnP clients. - Note: This service is available only on networks configured as "internal" zone. It is not available when connected via OpenVPN. -
- What is UPnP/DLNA? - Universal plug & play is a set of networking protocols that allow devices within a network such as PCs, TVs, printers etc. to seamlessly discover each other and establish communication for data sharing. It is zero configuration protocol and requires only a media server and a media player that are compliant with the protocol. - DLNA is derived from UPnP as a form of standardizing media interoperability. It forms a standard/certification which many consumer electronics conform to. -
-
- Setting up MiniDLNA on your FreedomBox - To install/enable the media server you need to navigate at MiniDLNA page and enable it. The application is intended to be available in the internal (home) network and therefore it requires a network interface configured for internal traffic. - After installation a web page becomes available on . It includes information for how many files the server is detecting, how many connections exist etc. This is very useful if plugging external disks with media to check if the new media files are detected properly. If that is not happening, disabling and enabling the server will fix it. -
-
- Using MiniDLNA to play media on your devices - Any DLNA compliant device or media player should be able to automatically detect, browse and play media from MiniDLNA on FreedomBox. The following devices and media players have been tested: - - - GNOME Videos: Videos is the default media player on the popular GNU/Linux desktop environment GNOME. Open Videos, switch to 'Channels'. You should see a channel named 'freedombox: minidlna'. You will be able to browse and play media from it. - - - VLC media player: VLC is a very popular media player for GNU/Linux, Android, Windows and macOS. Open VLC and click on 'View -> Playlist'. In the playlist sidebar that appears, select 'Universal Plug'n'Play'. You should see an item named 'freedombox: minidlna'. You should be able to browse and play media from it. - - - Kodi: Kodi is a popular media centre software with user interface designed for Televisions. Open Kodi, goto 'System -> Service settings -> UPnP/DLNA' and 'Enable UPnP support'. Then visit 'Home -> Videos -> Files -> Add videos... -> Browse -> UPnP devices'. You should see 'freedombox: minidlna'. Select it and choose 'OK'. Then choose 'OK in the 'Add video source' dialog. From now on, you should see 'freedombox: minidlna' in 'Videos -> Files' section. You should be able to browse and play media from it. See Kodi documentation for more information. - - - Roku: Roku is an appliance connected to a TV for playing Internet streaming services. Many TVs also have Roku built into them. In Roku interface, find a channel called 'Roku Media Player' and open it. You should see an item called 'freedombox: minidlna'. You should be able to browse and play media from it. - - - Rhythmbox: Rhythmbox is the default audio player on the popular GNU/Linux desktop environment GNOME. Open Rhythmbox and ensure that the side pane is open by clicking on 'Application menu -> View -> Side Pane'. In the side pane you should see 'freedombox:minidlna' under the 'Shared' section. You should be able to browse and play audio files from it. Video files will not show up. - - -
-
- Supported media formats - MiniDLNA supports a wide variety of video and audio file formats. - - - Video: Files ending with .avi, .mp4, .mkv, .mpg, .mpeg, .wmv, .m4v, .flv, .mov, .3gp, etc. - - - Audio: Files ending with .mp3, .ogg, .flac, .wav, .pcm, .wma, .fla, .aac, etc. - - - Image: Files ending with .jpg, .jpeg - - - Playlist: Files ending with .m3u, .pls - - - Captions: Files ending with .srt, .smi - - - Notably, it does not support the following file extensions. Renaming the file to a known extension seems to work in most cases. - - - Video: Files ending with .webm - - - In addition to file format support from MiniDLNA, your media player or device needs to support the audio/video codecs with which the media has been encoded. MiniDLNA does not have the ability to translate files into a codec understood by the player. If you face problems with media playback, use the VLC player to find the codecs used in the media and the check your device or media player documentation on whether the codecs are supported. -
-
- File systems for external drives - If using an external drive that is used also from a Windows system the preferred filesystem should be NTFS. NTFS will keep Linux file permissions and UTF8 encoding for file names. This is useful if file names are in your language. -
-
- External links - - - - -
-
-
- MLDonkey (Peer-to-peer File Sharing) -
- What is MLDonkey? - MLDonkey is an open-source, multi-protocol, peer-to-peer file sharing application that runs as a back-end server application on many platforms. It can be controlled through a user interface provided by one of many separate front-ends, including a Web interface, telnet interface and over a dozen native client programs. - Originally a Linux client for the eDonkey protocol, it now runs on many flavors of Unix-like, OS X, Microsoft Windows and MorphOS and supports numerous peer-to-peer protocols including ED2K (and Kademlia and Overnet), BitTorrent, DC++ and more. - Read more about MLDonkey at the MLDonkey Project Wiki - Available since: version 0.48.0 -
-
- Screenshot - - - - - - - MLDonkey Web Interface - - - -
-
- Using MLDonkey Web Interface - After installing MLDonkey, its web interface can be accessed from FreedomBox at https://<your freedombox>/mldonkey. Users belonging to the ed2k and admin groups can access this web interface. -
-
- Using Desktop/Mobile Interface - Many desktop and mobile applications can be used to control MLDonkey. MLDonkey server will always be running on FreedomBox. It will download files (or upload them) and store them on FreedomBox even when your local machine is not running or connected to MLDonkey on FreedomBox. Only users of admin group can access MLDonkey on FreedomBox using desktop or mobile clients. This is due to restrictions on which group of users have SSH access into FreedomBox. - - - Create an admin user or use an existing admin user. - - - On your desktop machine, open a terminal and run the following command. It is recommended that you configure and use SSH keys instead of passwords for the this step. - - - - Start the GUI application and then connect it to MLDonkey as if MLDonkey is running on the local desktop machine. After you are done, terminate the SSH command by pressing Control-C. - - - See MLDonkey documentation for SSH Tunnel for more information. -
-
-
- Mumble (Voice Chat) -
- What is Mumble? - Mumble is a voice chat software. Primarily intended for use while gaming, it is suitable for simple talking with high audio quality, noise suppression, encrypted communication, public/private-key authentication by default, and "wizards" to configure your microphone for instance. A user can be marked as a "priority speaker" within a channel. -
-
- Using Mumble - FreedomBox includes the Mumble server. Clients are available for desktop and mobile platforms. Users can download one of these clients and connect to the server. -
-
- Port Forwarding - 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 Mumble: - - - TCP 64738 - - - UDP 64738 - - -
-
- Managing Permissions - A super user in Mumble has the ability to create administrator accounts who can in turn manage groups and channel permissions. This can be done after logging in with the username "SuperUser" using the super user password. See Mumble Guide for information on how to do this.. FreedomBox currently does not offer a UI to get or set the super user password for Mumble. A super user password is automatically generated during Mumble setup. To get the password, login to the terminal as admin user using Cockpit , Secure Shell or the console. Then, to read the super user password that was automatically generated during Mumble installation run the following command: - - You should see output such as: - 2019-11-06 02:47:41.313 1 => Password for 'SuperUser' set to 'noo8Dahwiesh']]> - Alternatively, you can set a new password as follows: - -
-
-
- OpenVPN (Virtual Private Network) -
- What is OpenVPN? - OpenVPN provides to your FreedomBox a virtual private network service. You can use this software for remote access, site-to-site VPNs and Wi-Fi security. OpenVPN includes support for dynamic IP addresses and NAT. -
-
- Port Forwarding - 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 OpenVPN: - - - UDP 1194 - - -
-
- Setting up - - - In FreedomBox apps menu, select Virtual Private Network (OpenVPN) and click Install. - - - After the module is installed, there is an additional setup step that may take a long time to complete. Click "Start setup" to begin. - - - - - - - OpenVPN service page - - - - - - Wait for the setup to finish. This could take a while. - - - Once the setup of the OpenVPN server is complete, you can download your profile. This will download a file called <USER>.ovpn, where <USER> is the name of a FreedomBox user. Each FreedomBox user will be able to download a different profile. Users who are not administrators can download the profile from home page after login. - - - The ovpn file contains all the information a vpn client needs to connect to the server. - - - The downloaded profile contains the domain name of the FreedomBox that the client should connect to. This is picked up from the domain configured in 'Config' section of 'System' page. In case your domain is not configured properly, you may need to change this value after downloading the profile. If your OpenVPN client allows it, you can do this after importing the OpenVPN profile. Otherwise, you can edit the .ovpn profile file in a text editor and change the 'remote' line to contain the WAN IP address or hostname of your FreedomBox as follows. - - - -
-
- Browsing Internet after connecting to VPN - After connecting to the VPN, the client device will be able to browse the Internet without any further configuration. However, a pre-condition for this to work is that you need to have at least one Internet connected network interface which is part of the 'External' firewall zone. Use the networks configuration page to edit the firewall zone for the device's network interfaces. -
-
- Usage -
- On Android/LineageOS - - - Visit FreedomBox home page. Login with your user account. From home page, download the OpenVPN profile. The file will be named username.ovpn. - - - - - - - - - OpenVPN Download Profile - - - - - - - - Download an OpenVPN client such as OpenVPN for Android. F-Droid repository is recommended. In the app, select import profile. - - - - - - - - - OpenVPN App - - - - - - - - In the select profile dialog, choose the username.opvn file you have just downloaded. Provide a name for the connection and save the profile. - - - - - - - - - OpenVPN import profile - - - - - - - - Newly created profile will show up. If necessary, edit the profile and set the domain name of your FreedomBox as the server address. - - - - - - - - - OpenVPN profile created - - - - - - - - - - OpenVPN edit domain name - - - - - - - - Connect by tapping on the profile. - - - - - - - - - OpenVPN connect - - - - - - - - - - OpenVPN connected - - - - - - - - When done, disconnect by tapping on the profile. - - - - - - - - - OpenVPN disconnect - - - - - - - -
-
- On Debian - Install an OpenVPN client for your system - - Open the ovpn file with the OpenVPN client. - .ovpn]]> - If you use Network Manager, you can create a new connection by importing the file: - .ovpn]]> - If you get an error such as configuration error: invalid 1th argument to “proto” (line 5) then edit the .ovpn file and remove the line proto udp6. -
-
-
- Checking if you are connected -
- On Debian - - - Try to ping the FreedomBox or other devices on the local network. - - - Running the command ip addr should show a tun0 connection. - - - The command traceroute freedombox.org should show you the ip address of the VPN server as the first hop. - - -
-
-
- Accessing internal services - After connecting to OpenVPN, you will be able to access FreedomBox services that are only meant to be accessed on internal networks. This is in addition to being able to access external services. This can be done by using the IP address 10.91.0.1 as the host name for these services. The following services are known to work: Privoxy, Tor Socks, Shadowsocks, I2P Proxy and Samba. Some services are known not to work at this time: Avahi, Bind and MiniDLNA. -
-
- External Links - - - -
-
-
- Privoxy (Web Proxy) - 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. - 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: Privoxy FAQ). -
- Screencast - Watch the screencast on how to setup and use Privoxy in FreedomBox. -
-
- Setting up - - - In FreedomBox, install Web Proxy (Privoxy) - - - - - - - Privoxy Installation - - - - - - Adapt your browser proxy settings to your FreedomBox hostname (or IP address) with port 8118. Please note that Privoxy can only proxy HTTP and HTTPS traffic. It will not work with FTP or other protocols. - - - - - - - Privoxy Browser Settings - - - - - - Go to page or . If Privoxy is installed properly, you will be able to configure it in detail; if not you will see an error message. - - - If you are using a laptop that occasionally has to connect through other routers than yours with the FreedomBox and Privoxy, you may want to install a proxy switch add-on that allows you to easily turn the proxy on or off. - - -
-
- Advanced Users - - - The default installation should provide a reasonable starting point for most. There will undoubtedly be occasions where you will want to adjust the configuration, that can be dealt with as the need arises. - - - While using Privoxy, you can see its configuration details and documentation at or . - - - To enable changing these configurations, you first have to change the value of enable-edit-actions in /etc/privoxy/config to 1. Before doing so, read carefully the manual, especially: - - - - Access to the editor can not be controlled separately by "ACLs" or HTTP authentication, so that everybody who can access Privoxy can modify its configuration for all users. This option is not recommended for environments with untrusted users. Note that malicious client side code (e.g Java) is also capable of using the actions editor and you shouldn't enable this options unless you understand the consequences and are sure your browser is configured correctly. - - - - - - Now you find an EDIT button on the configuration screen in http://config.privoxy.org/. - - - The Quickstart is a good starting point to read on how to define own blocking and filtering rules. - - -
-
-
- Quassel (IRC Client) - Quassel is an IRC application that is split into two parts, a "core" and a "client". This allows the core to remain connected to IRC servers, and to continue receiving messages, even when the client is disconnected. FreedomBox can run the Quassel core service keeping you always online and one or more Quassel clients from a desktop or a mobile device can be used to connect and disconnect from it. -
- Why run Quassel? - Many discussions about FreedomBox are being done on the IRC-Channel irc://irc.debian.org/freedombox. If your FreedomBox is running Quassel, it will collect all discussions while you are away, such as responses to your questions. Remember, the FreedomBox project is a worldwide project with people from nearly every time zone. You use your client to connect to the Quassel core to read and respond whenever you have time and are available. -
-
- How to setup Quassel? - - - Within FreedomBox's web interface - - - select Applications - - - go to IRC Client (Quassel) and - - - install the application and make sure it is enabled - - - - - - - Quassel Installation - - - - - - now your Quassel core is running - - - - -
-
- Port Forwarding - 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 Quassel: - - - TCP 4242 - - - Example configuration in router: - - - - - - - - - Quassel_PortForwarding_en_v01.png - - - - - - - -
-
- Clients - Clients to connect to Quassel from your desktop and mobile devices are available. -
- Desktop - In a Debian system, you can e.g. use quassel-client. 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. - - - Launch Quassel Client. You will be greeted with a wizard to Connect to Core. - - - - - - - - - Connect to Core - - - - - - - - Click the Add button to launch Add Core Account dialog. - - - - - - - - - Add Core Account - - - - - - - - Fill any value in the Account Name field. Fill proper DNS hostname of your FreedomBox in Hostname filed. Port field must have the value 4242. Provide the username and password of the account you wish to create to connect to the Quassel Core in the User and Password fields. Choose Remember if don't wish to be prompted for a password every time you launch Quassel client. - - - After pressing OK in the Add Core Account dialog, you should see the core account in the Connect to Core dialog. - - - - - - - - - Connect to Core - - - - - - - - Select the newly created core account and select OK to connect to it. - - - If this is the first time you are connecting to this core. You will see an Untrusted Security Certificate warning and need to accept the server certificate. - - - - - - - - - Untrusted Security Certificate - - - - - - - - Select Continue. Then you will be asked if you wish to accept the certificate permanently. Select Forever. - - - - - - - - - Untrusted Security Certificate - - - - - - - - If this Quassel Core has not been connected to before, you will then see a Core Configuration Wizard. Select Next. - - - - - - - - - Core Configuration Wizard - - - - - - - - In the Create Admin User page, enter the username and password you have used earlier to create the core connection. Select Remember password to remember this password for future sessions. Click Next. - - - - - - - - - Create Admin User Page - - - - - - - - In the Select Storage Backend page, select SQLite and click Commit. - - - - - - - - - Select Storage Backend - - - - - - - - The core configuration is then complete and you will see a Quassel IRC wizard to configure your IRC connections. Click Next. - - - - - - - - - Welcome Wizard - - - - - - - - In Setup Identity page next, provide a name and multiple nicknames. This is how you present yourself to other users on IRC. It is not necessary to give your real world name. Multiple nicknames are useful as fallback nicknames when the first nickname can't be used for some reason. After providing the information click Next. - - - - - - - - - Setup Identity - - - - - - - - In Setup Network Connection page next, provide a network name of your choice. Next provide a list of servers to which Quassel Core should connect to in order to join this IRC network (such as irc.debian.org:6667). - - - - - - - - - Setup Network Connection - - - - - - - - Select the server in the servers list and click Edit. In the Server Info dialog, set the port 6697 (consult your network's documentation for actual list of servers and their secure ports) and click Use SSL. Click OK. This is to ensure that communication between your FreedomBox and the IRC network server is encrypted. - - - - - - - - - Server Info - - - - - - - - Server Info SSL - - - - - - - - Back in the Setup Network Connection dialog, provide a list of IRC channels (such as #freedombox) to join upon connecting to the network. Click Save & Connect. - - - - - - - - - Setup Network Connection - - - - - - - - You should connect to the network and see the list of channels you have joined on the All Chats pane on the left of the Quassel Client main window. - - - - - - - - - Quassel Main Window - - - - - - - - Select a channel and start seeing messages from others in the channel and send your own messages. - - -
-
- Android - For Android devices you may use e.g. Quasseldroid from F-Droid - - - enter core, username etc. as above - - - - - - - - - Quasseldroid.png - - - - - - - - By the way, the German verb quasseln means talking a lot, to jabber. -
-
-
-
- Radicale (Calendar and Addressbook) - With Radicale, you can synchronize your personal calendars, ToDo lists, and addressbooks with your various computers, tablets, and smartphones, and share them with friends, without letting third parties know your personal schedule or contacts. -
- Why should I run Radicale? - Using Radicale, you can get rid of centralized services like Google Calendar or Apple Calendar (iCloud) data mining your events and social connections. -
-
- How to setup Radicale? - First, the Radicale server needs to be activated on your box. - - - Within FreedomBox Service: - - - select Apps - - - go to Radicale (Calendar and Addressbook) and - - - install the application. After the installation is complete, make sure the application is marked "enabled" in the FreedomBox interface. Enabling the application launches the Radicale CalDAV/CardDAV server. - - - define the access rights: - - - Only the owner of a calendar/addressbook can view or make changes - - - Any user can view any calendar/addressbook, but only the owner can make changes - - - Any user can view or make changes to any calendar/addressbook - - - - - - - Note, that only users with a FreedomBox login can access Radicale. - - - - - - - Radicale-Plinth.png - - - - 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. - Radicale provides a basic web interface, which only supports creating new calendars and addressbooks. To add events or contacts, an external supported client application is needed. - - - - - - - radicale_web.png - - - - - - Creating addressbook/calendar using the web interface - - - Visit https://IP-address-or-domain-for-your-server/radicale/ - - - Log in with your FreedomBox account - - - Select "Create new addressbook or calendar" - - - Provide a title and select the type - - - Optionally, provide a description or select a color - - - Click "Create" - - - The page will show the URL for your newly created addressbook or calendar - - - - - Now open your client application to create new calendar and address books that will use your FreedomBox and Radicale server. The Radicale website provides an overview of supported clients, but do not use the URLs described there; FreedomBox uses another setup, follow this manual. Below are the steps for two examples: - - - Example of setup with Evolution client: - - - Calendar - - - Create a new calendar - - - For "Type," select "CalDAV" - - - When "CalDAV" is selected, additional options will appear in the dialogue window. - - - URL: https://IP-address-or-domain-for-your-server/radicale/user/calendar-name.ics/. Items in italics need to be changed to match your settings. - - - note the trailing / in the path, it is important. - - - - - Enable "Use a secure connection." - - - Name the calendar - - - - - - - Radicale-Evolution-Docu.png - - - - - - - - TODO/Tasks list: Adding a TODO/Tasks list is basically the same as a calendar. - - - Contacts - - - Follow the same steps described above and replace CalDAV with WebDAV. The extension of the address book will be .vcf. - - - - - - -
-
- Synchronizing over Tor - In FreedomBox, setting up a calendar with Radicale over Tor is the same as over the clear net. Here is a short summary: - - - When logged in to FreedomBox interface over Tor, click on Radicale, and at the prompt provide your FreedomBox user name and password. - - - In the Radicale web interface, log in using your FreedomBox user name and password. - - - Click on "Create new address book or calendar", provide a title, select a type, and click "Create". - - - Save the URL, e.g., https://ONION-ADDRESS-FOR-YOUR-SERVER.onion/radicale/USERNAME/CALENDAR-CODE/. Items in italics need to be changed to match your settings. - - - These instructions are for Thunderbird/Lightning. Note that you will need to be connected to Tor with the Tor Browser Bundle. - - - Open Thunderbird, install the Torbirdy add-on, and restart Thunderbird. (This may not be necessary.) - - - In the Lightning interface, under Calendar/Home in the left panel right click with the mouse and select "New calendar". - - - Select the location of your calendar as "On the Network". - - - Select CalDAV and for the location copy the URL, e.g., https://ONION-ADDRESS-FOR-YOUR-SERVER.onion/radicale/USERNAME/CALENDAR-CODE/. Items in italics need to be changed to match your settings. - - - Provide a name, etc. Click "Next". Your calendar is now syncing with your FreedomBox over Tor. - - - If you have not generated a certificate for your FreedomBox with "Let's Encrypt", you may need to select "Confirm Security Exception" when prompted. - - -
-
- Synchronizing with your Android phone - There are various Apps that allow integration with the Radicale server. This example uses DAVx5, which is available e.g. on F-Droid. If you intend to use ToDo-Lists as well, the compatible app OpenTasks has to be installed first. - Follow these steps for setting up your account with the Radicale server running on your FreedomBox. - - - Install DAVx5 - - - Create a new account on DAVx5 by clicking on the floating + button. - - - Select the second option as shown in the first figure below and enter the base url as (don't miss the / at the end). DAVx5 will be able to discover both CalDAV and WebDAV accounts for the user. - - - Follow this video from DAVx5 FAQ to learn how to migrate your existing contacts to Radicale. - - - - Synchronizing contacts - - - - Click on the hamburger menus of CalDAV and CardDAV and select either "Refresh ..." in case of existing accounts or "Create ..." in case of new accounts (see the second screenshot below). - - - Check the checkboxes for the address books and calendars you want to synchronize and click on the sync button in the header. (see the third screenshot below) - - - - - - - - - DAVx5 account setup - - - - - - - - DAVx5 refresh - - - - - - - - DAVx5 account sync - - - -
-
- Advanced Users -
- Sharing resources - Above was shown an easy way to create a resource for a group of people by creating a dedicated account for all. Here will be described an alternative method where two users User1 and User2 are granted access to a calendar. This requires SSH-access to the FreedomBox. - - - create a file /etc/radicale/rights - - - - - - [friends_calendar] is just an identifier, can be any name. - - - The [owner-write] section makes sure that owners have access to their own files - - - - - edit file /etc/radicale/config and make the following changes in section [rights] - - - - - - - - Restart the radicale server or the FreedomBox - - -
-
- Importing files - If you are using a contacts file exported from another service or application, it should be copied to: /var/lib/radicale/collections/user/contact file name.vcf. -
-
-
- Migrating from Radicale Version 1.x to Version 2.x - During the month of February 2019, radicale in Debian testing was upgraded from version 1.x to version 2.x. Version 2.x is a better version but is incompatible with data and configuration used with 1.x. Automatic upgrade mechanism in FreedomBox, handled by unattended-upgrades does not automatically upgrade radicale to version 2.x due to changes in configuration files. However, FreedomBox version 19.1, which is available on February 23rd, 2019 in testing will perform data and configuration migration to radicale version 2.x. Typical users require no action, this will happen automatically. - If for some reason, you need to manually run apt dist-upgrade on your machine, then radicale will be upgraded to 2.x and then FreedomBox will not be able to perform its upgrade (due to upstream project deciding to remove migration tools in radicale 2.x version). To avoid this situation, the following process is recommended if you wish to perform an upgrade. - - However, if you already happen to perform an upgrade to radicale 2.x without help from FreedomBox, you need to perform data and configuration migration yourself. Follow this procedure: - - Notes: - - - python-radicale is an old package from radicale 1.x version that is still available in testing. This is a hack to use the --export-storage feature that is responsible for data migration. This feature is not available in radicale 2.x unfortunately. - - - Files ending with .dpkg-dist will exist only if you have chosen 'Keep your currently-installed version' when prompted for configuration file override during radicale 2.x upgrade. The above process will overwrite the old configuration with new fresh configuration. No changes are necessary to the two configuration files unless you have changed the setting for sharing calendars. - - - Note that during the migration, your data is safe in /var/lib/radicale/collections directory. New data will be created and used in /var/lib/radicale/collections/collections-root/ directory. - - - The tar command takes a backup your configuration and data in /root/radicale_backup.tgz in case you do something goes wrong and you want to undo the changes. - - -
-
- Troubleshooting - 1. If you are using FreedomBox Pioneer Edition or installing FreedomBox on Debian Buster, then radicale may not be usable immediately after installation. This is due to a bug which has been fixed later. To overcome the problem, upgrade FreedomBox by clicking on 'Manual Update' from 'Updates' app. Otherwise, simply wait a day or two and let FreedomBox upgrade itself. After that install radicale. If radicale is already installed, disable and re-enable it after the update is completed. This will fix the problem and get radicale working properly. -
-
-
- repro (SIP Server) - - - App removed - - repro has been removed from Debian 10 (Buster), and therefore is no longer available in FreedomBox. - -
-
- Roundcube (Email Client) -
- What is Roundcube? - Roundcube is a browser-based multilingual email client with an application-like user interface. Roundcube is using the Internet Message Access Protocol (IMAP) to access e-mail on a remote mail server. It supports MIME to send files, and provides particularly address book, folder management, message searching and spell checking. -
-
- Using Roundcube - After Roundcube is installed, it can be accessed at https://<your freedombox>/roundcube. Enter your username and password. The username for many mail services will be the full email address such as exampleuser@example.org and not just the username like exampleuser. Enter the address of your email service's IMAP server address in the Server field. You can try providing your domain name here such as example.org for email address exampleuser@example.org and if this does not work, consult your email provider's documentation for the address of the IMAP server. Using encrypted connection to your IMAP server is strongly recommended. To do this, prepend 'imaps://' at the beginning of your IMAP server address. For example, imaps://imap.example.org. - - - - - - - Logging into your IMAP server - - - -
-
- Using Gmail with Roundcube - If you wish to use Roundcube with your Gmail account, you need to first enable support for password based login in your Google account preferences. This is because Gmail won't allow applications to login with a password by default. To do this, visit Google Account preferences and enable Less Secure Apps. After this, login to Roundcube by providing your Gmail address as Username, your password and in the server field use imaps://imap.gmail.com. - - - - - - - Logging into Gmail - - - -
-
-
- Samba (Network File Storage) - Samba lets you have shared folders over the local network that can be used from multiple computers running different operating systems. We refer to these shared folders as "shares". - You can have a personal folder shared between your own devices (Home share), a folder shared with a trusted group (Group share) or one that is shared with every device on the network (Open share). - Samba lets you to treat a share as if it's a local folder on your computer. However, shares are available only on the local network. - To learn more about Samba, please refer to the user documentation on their wiki. - Available since version: 19.22 -
- Using Samba - After installation, you can choose which disks to use for sharing. Enabled shares are accessible in the file manager on your computer at location \\freedombox (on Windows) or smb://freedombox.local (on Linux and Mac). There are three types of shares you can choose from: - Open share - accessible to everyone in your local network. - Group share - accessible only to FreedomBox users who are in the freedombox-share group. - Home share - every user in the freedombox-share group can have their own private space. -
- On Android - To access Samba shares on an Android device, install "Android Samba Client" from F-Droid or Google Play. Enter smb://freedombox.local/<disk> as the share path in the app. Your shared folders should then be visible in the file manager app. Samba shares can also be used by VLC for Android which automatically discovers them. -
-
-
- Integration with other apps - Transmission app on FreedomBox provides a setting to allow downloads to be saved directly to a Samba share. - 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 > 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. -
-
- Comparison with other apps -
- Syncthing - Syncthing maintains a copy of the shared folder on each device that it is shared with. Samba maintains only one copy on your FreedomBox device. - Syncthing can synchronize your shared folders between devices over the Internet. Samba shares are only available on the local network. - Since Syncthing is primarily a synchronization solution, it has features like conflict resolution and versioning. Samba has only copy of the file, so it doesn't need such features. For example, if two people are editing a spreadsheet stored on a Samba share, the last one to save the file wins. -
-
-
-
- Searx (Web Search) -
- About Searx - Searx is a metasearch engine. A metasearch engine aggregates the results from various search engines and presents them in a unified interface. - Read more about Searx on their official website. - Available since: version 0.24.0 -
-
- Screenshot - - - - - - - Searx Screenshot - - - -
-
- Screencast - Searx installation and first steps (14 MB) -
-
- Why use Searx? -
- Personalization and Filter Bubbles - Search engines have the ability to profile users and serve results most relevant to them, putting people into filter bubbles, thus distorting people's view of the world. Search engines have a financial incentive to serve interesting advertisements to their users, increasing their chances of clicking on the advertisements. - A metasearch engine is a possible solution to this problem, as it aggregates results from multiple search engines thus bypassing personalization attempts by search engines. - Searx avoids storing cookies from search engines as a means of preventing tracking and profiling by search engines. -
-
- Advertisement filtering - Searx filters out advertisements from the search results before serving the results, thus increasing relevance the of your search results and saving you from distractions. -
-
- Privacy - Searx uses HTTP POST instead of GET by default to send your search queries to the search engines, so that anyone snooping your traffic wouldn't be able to read your queries. The search queries wouldn't stored in browser history either. - Note: Searx used from Chrome browser's omnibar would make GET requests instead of POST. -
-
-
- Searx on FreedomBox - - - Searx on FreedomBox uses Single Sign On. This means that you should be logged in into your FreedomBox in the browser that you're using Searx. - - - SearX is easily accessible via Tor. - - - Searx can be added as a search engine to the Firefox browser's search bar. See Firefox Help on this topic. Once Searx is added, you can also set it as your default search engine. - - - Searx also offers search results in csv, json and rss formats, which can be used with scripts to automate some tasks. - - -
-
-
- Shadowsocks (SOCKS5 proxy) -
- What is Shadowsocks? - Shadowsocks is a lightweight and secure SOCKS5 proxy, designed to protect your Internet traffic. It can be used to bypass Internet filtering and censorship. Your FreedomBox can run a Shadowsocks client which can connect to a Shadowsocks server. It will also run a SOCKS5 proxy. Local devices can connect to this proxy, and their data will be encrypted and proxied through the Shadowsocks server. - Note: Shadowsocks is available in FreedomBox starting with version 0.18. -
-
- Using the Shadowsocks client? - The current implementation of Shadowsocks in FreedomBox only supports configuring FreedomBox as a Shadowsocks client. The current use case for Shadowsocks is as follows: - - - Shadowsocks client (FreedomBox) is in a region where some parts of the Internet are blocked or censored. - - - Shadowsocks server is in a different region, which doesn't have these blocks. - - - The FreedomBox provides SOCKS proxy service on the local network for other devices to make use of its Shadowsocks connection. - - - At a future date it will be possible to configure FreedomBox as Shadowsocks server. -
-
- Configuring your FreedomBox for the Shadowsocks client - To enable Shadowsocks, first navigate to the Socks5 Proxy (Shadowsocks) page and install it. - Server: the Shadowsocks server is not the FreedomBox IP or URL; rather, it will be another server or VPS that has been configured as a Shadowsocks server. There are also some public Shadowsocks servers listed on the web, but be aware that whoever operates the server can see where requests are going, and any non-encrypted data will be visible to them. - To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, browser or application to -
-
-
- Syncthing (File Synchronization) - With Syncthing installed on your FreedomBox, you can synchronize content from other devices to your FreedomBox and vice-versa. For example, you can keep the photos taken on your mobile phone synchronized to your FreedomBox. - Available since version: 0.14 - Users should keep in mind that Syncthing is a peer-to-peer synchronization solution, not a client-server one. This means that the FreedomBox isn't really the server and your other devices clients. They're all devices from Syncthing's perspective. You can use Syncthing to synchronize your files between any of your devices. The advantage that FreedomBox provides is that it is a server that's always running. Suppose you want your photos on your phone to be synchronized to your laptop, if you simply sync the photos to the FreedomBox, the laptop can get them from the FreedomBox whenever it comes online the next time. You don't have to be worried about your other devices being online for synchronization. If your FreedomBox is one of the devices set up with your Syncthing shared folder, you can rest assured that your other devices will eventually get the latest files once they come online. - After installation follow the instructions in the getting started of the Syncthing project. Syncthing allows individual folders to be selectively shared with other devices. Devices must be paired up before sharing by scanning QR codes or entering the device ids manually. Syncthing has a discovery service for easily identifying the other devices on the same network having Syncthing installed. - In order to access to the web client of the Syncthing instance running on your FreedomBox, use the path /syncthing. This web client is currently only accessible to the users of the FreedomBox that have administrator privileges, though it might be accessible to all FreedomBox users in a future release. - - - - - - - Syncthing web interface - - - - Syncthing has android apps available on the F-Droid and Google Play app stores. Cross-platform desktop apps are also available. - To learn more about Syncthing, please visit their official website and documentation. -
- Synchronizing over Tor - Syncthing should automatically sync with your FreedomBox even if it is only accessible as a Tor Onion Service. - If you would like to proxy your Syncthing client over Tor, set the all_proxy environment variable: - - For more information, see the Syncthing documentation on using proxies. -
-
- Avoiding Syncthing Relays - Syncthing uses dynamic connections by default to connect with other peers. This means that if you are synchronizing over the Internet, the data might have to go through public Syncthing relays to reach your devices. This doesn't take advantage of the fact that your FreedomBox has a public IP address. - When adding your FreedomBox as a device in other Syncthing clients, set the address like "tcp://<my.freedombox.domain>" instead of "dynamic". This allows your Syncthing peers to directly connect to your FreedomBox avoiding the need for relays. It also allows for fast on-demand syncing if you don't want to keep Syncthing running all the time on your mobile devices. -
-
- Using Syncthing with other applications -
- Password Manager - Password managers that store their databases in files are suitable for synchronization using Syncthing. The following example describes using a free password manager called KeePassXC in combination with Syncthing to serve as a replacement for proprietary password managers that store your passwords in the cloud. - KeePassXC stores usernames, passwords etc. in files have the .kdbx extension. These kdbx files can be stored in a Syncthing shared folder to keep them synchronized on multiple machines. Free software applications which can read this file format are available for both desktop and mobile. You typically have to just point the application at the .kdbx file and enter the master password to access your stored credentials. For example, the same kdbx file can be accessed by using KeePassXC on desktop and KeePassDX on Android. KeePassXC can also be used to fill credentials into login fields in the browser by installing a browser extension. -
-
-
-
- Tiny Tiny RSS (News Feed Reader) - Tiny Tiny RSS is a news feed (RSS/Atom) reader and aggregator, designed to allow reading news from any location, while feeling as close to a real desktop application as possible. - Any user created through FreedomBox web interface will be able to login and use this app. Each user has their own feeds, state and preferences. -
- Using the Web Interface - When enabled, Tiny Tiny RSS will be available from /tt-rss path on the web server. Any user created through FreedomBox will be able to login and use this app. - - - - - - - Tiny Tiny RSS - - - -
- Adding a new feed - 1. Go to the website you want the RSS feed for and copy the RSS/Atom feed link from it. - - - - - - - Selecting feeds - - - - 2. Select "Subscribe to feed.." from the Actions dropdown. - - - - - - - Subscribe to feed - - - - 3. In the dialog box that appears, paste the URL for copied in step 1 and click the Subscribe button. - - - - - - - Subscription dialog box - - - - Give the application a minute to fetch the feeds after clicking Subscribe. - In some websites, the RSS feeds button isn't clearly visible. In that case, you can simply paste the website URL into the Subscribe dialog (step 3) and let TT-RSS automatically detect the RSS feeds on the page. - You can try this now with the homepage of WikiNews - As you can see in the image below, TT-RSS detected and added the Atom feed of WikiNews to our list of feeds. - - - - - - - WikiNews feed added - - - - If you don't want to keep this feed, right click on the feed shown in the above image, select Edit feed and click Unsubscribe in the dialog box that appears. - - - - - - - Unsubscribe from a feed - - - -
-
- Importing your feeds from another feed reader - In your existing feed reader, find an option to Export your feeds to a file. Prefer the OPML file format if you have to choose between multiple formats. Let's say your exported feeds file is called Subscriptions.opml - Click on the Actions menu at the top left corner and select Preferences. You will be taken to another page. - Select the second tab called Feeds in the top header. Feeds has several sections. The second one is called OPML. Select it. - - - - - - - OPML feeds page - - - - To import your Subscriptions.opml file into TT-RSS, - - - Click Browse and select the file from your file system - - - Click Import my OPML - - - After importing, you'll be taken to the Feeds section that's above the OPML section in the page. You can see that the feeds from your earlier feed reader are now imported into Tiny Tiny RSS. You can now start using Tiny Tiny RSS as your primary feed reader. - In the next section, we will discuss setting up the mobile app, which can let you read your feeds on the go. -
-
-
- Using the Mobile App - The official Android app from the Tiny Tiny RSS project works with FreedomBox's Tiny Tiny RSS Server. The older TTRSS-Reader application is known not to work. - The official Android app is unfortunately only available on the Google Play Store and not on F-Droid. You can still obtain the source code and build the apk file yourself. - To configure, first install the application, then in the setting page, set URL as . Set your user name and password in the Login details as well as HTTP Authentication details. If your FreedomBox does not have a valid HTTPS certificate, then in settings request allowing any SSL certificate and any host. - - - - - - - Tiny Tiny RSS - - - - - - - - Tiny Tiny RSS - - - - - - - - Tiny Tiny RSS - - - - - - - - Tiny Tiny RSS - - - - - - - - Tiny Tiny RSS - - - -
-
-
- Tor (Anonymity Network) -
- What is Tor? - Tor is a network of servers operated by volunteers. It allows users of these servers to improve their privacy and security while surfing on the Internet. You and your friends are able to access to your FreedomBox via Tor network without revealing its IP address. Activating Tor application on your FreedomBox, you will be able to offer remote services (chat, wiki, file sharing, etc...) without showing your location. This application will give you a better protection than a public web server because you will be less exposed to intrusive people on the web. -
-
- Using Tor to browse anonymously - Tor Browser is the recommended way to browse the web using Tor. You can download the Tor Browser from and follow the instructions on that site to install and run it. -
-
- Using Tor Onion Service to access your FreedomBox - Tor Onion Service provides a way to access your FreedomBox, even if it's behind a router, firewall, or carrier-grade NAT (i.e., your Internet Service Provider does not provide a public IPv4 address for your router). - To enable Tor Onion Service, first navigate to the Anonymity Network (Tor) page. (If you don't see it, click on the FreedomBox logo at the top-left of the page, to go to the main Apps page.) On the Anonymity Network (Tor) page, under Configuration, check "Enable Tor Onion Service", then press the Update setup button. Tor will be reconfigured and restarted. - After a while, the page will refresh and under Status, you will see a table listing the Onion Service .onion address. Copy the entire address (ending in .onion) and paste it into the Tor Browser's address field, and you should be able to access your FreedomBox. (You may see a certificate warning because FreedomBox has a self-signed certificate.) - - - - - - - Tor Configuration - FreedomBox - - - - Currently only HTTP (port 80), HTTPS (port 443), and SSH (port 22) are accessible through the Tor Onion Service configured on the FreedomBox. -
-
- Apps accessible via Tor - The following apps can be accessed over Tor. Note that this list is not exhaustive. - - - Calendar and Addressbook (Radicale) - - - File Synchronization (Syncthing) - - - Feed reader (TinyTinyRSS) - - - Web Search (Searx) - - - Wiki (MediaWiki) - - - Wiki and Blog (Ikiwiki) - - -
-
- Running a Tor relay - When Tor is installed, it is configured by default to run as a bridge relay. The relay or bridge option can be disabled through the Tor configuration page in FreedomBox. - At the bottom of the Tor page in FreedomBox, there is a list of ports used by the Tor relay. If your FreedomBox is behind a router, you will need to configure port forwarding on your router so that these ports can be reached from the public Internet. - The requirements to run a relay are listed in the Tor Relay Guide. In short, it is - - - recommended that a relay has at least 16 Mbit/s (Mbps) upload and download bandwidth available for Tor. More is better. - - - required that a Tor relay be allowed to use a minimum of 100 GByte of outbound and of incoming traffic per month. - - - recommended that a <40 Mbit/s non-exit relay should have at least 512 MB of RAM available; A relay faster than 40 Mbit/s should have at least 1 GB of RAM. - - -
-
- (Advanced) Usage as a SOCKS proxy - FreedomBox provides a Tor SOCKS port that other applications can connect to, in order to route their traffic over the Tor network. This port is accessible on any interfaces configured in the internal firewall zone. To configure the application, set SOCKS Host to the internal network connection's IP address, and set the SOCKS Port to 9050. -
- Example with Firefox - Your web browser can be configured to use the Tor network for all of your browsing activity. This allows for censorship circumvention and also hides your IP address from websites during regular browsing. For anonymity, using tor browser is recommended. - Configure your local FreedomBox IP address and port 9050 as a SOCKS v5 proxy in Firefox. There are extensions to allow for easily turning the proxy on and off. - - - - - - - Configuring Firefox with Tor SOCKS proxy - - - - With the SOCKS proxy configured, you can now access any onion URL directly from Firefox. FreedomBox itself has an onion v3 address that you can connect to over the Tor network (bookmark this for use in emergency situations). -
-
-
- Circumventing Tor censorship - If your ISP is trying to block Tor traffic, you can use tor bridge relays to connect to the tor network. - 1. Get the bridge configuration from the Tor BridgeDB - - - - - - - Tor BridgeDB - - - - 2. Add the lines to your FreedomBox Tor configuration as show below. - - - - - - - Tor Configuration Page - - - -
-
-
- Transmission (BitTorrent Web Client) -
- What is Transmission ? - BitTorrent is a communications protocol using peer-to-peer (P2P) file sharing. It is not anonymous; you should assume that others can see what files you are sharing. There are two BitTorrent web clients available in FreedomBox: Transmission and Deluge. They have similar features, but you may prefer one over the other. - Transmission is a lightweight BitTorrent client that is well known for its simplicity and a default configuration that "Just Works". -
-
- Screenshot - - - - - - - Transmission Web Interface - - - -
-
- Using Transmission - After installing Transmission, it can be accessed at https://<your freedombox>/transmission. Transmission uses single sign-on from FreedomBox, which means that if you are logged in on your FreedomBox, you can directly access Transmission without having to enter the credentials again. Otherwise, you will be prompted to login first and then redirected to the Transmission app. -
-
- Tips -
- Transferring Downloads from the FreedomBox - - - Transmission's downloads directory can be added as a shared folder in the "Sharing" app. You can then access your downloads from this shared folder using a web browser. - - - (Advanced) If you have the ssh access to your FreedomBox, you can use sftp to browse the downloads directory using a suitable file manager or web browser (e.g. dolphin or Konqueror). - - -
-
-
-
- User Websites -
- What is User websites? - User websites is a module of the Apache webserver enabled to allow users defined in the FreedomBox system to expose a set of static files on the FreedomBox filesystem as a website to the local network and/or the internet according to the network and firewall setup. - - - - - - - - - Application basics - - - - - - Category - - - File sharing - - - - - Available since version - - - 0.9.4 - - - - - Upstream project website - - - - - - - - - - Upstream end user documentation - - - - - - - - - - -
-
- Screenshot - - Add when/if an interface is made for FreedomBox - -
-
- Using User websites - The module is always enabled and offers no configuration from the FreedomBox web interface. There is no configuration or status page shown for this module in the FreedomBox web interface. - To serve documents, place the files in the designated directory in a FreedomBox user's home directory in the filesystem. - This directory is: public_html - Thus the absolute path for the directory of a user named fbx with home directory in /home/fbx will be /home/fbx/public_html. User websites will serve documents placed in this directory when requests for documents with the URI path "~fbx" are received. For the the example.org domain thus a request for the document example.org/~fbx/index.html will transfer the file in /home/fbx/public_html/index.html. -
-
- Using SFTP to create public_html and upload documents - - To be written - -
-
-
-
- System -
- Backups - FreedomBox includes the ability to backup and restore data, preferences, configuration and secrets from most of the applications. The Backups feature is built using Borg backup software. Borg is a deduplicating and compressing backup program. It is designed for efficient and secure backups. This backups feature can be used to selectively backup and restore data on an app-by-app basis. Backed up data can be stored on the FreedomBox machine itself or on a remote server. Any remote server providing SSH access can be used as a backup storage repository for FreedomBox backups. Data stored remotely may be encrypted and in such cases remote server cannot access your decrypted data. -
- Status of Backups Feature - - - - - - - - - - App/Feature - - - - - Support in Version - - - - - Notes - - - - - - Avahi - - - - - - - no backup needed - - - - - Backups - - - - - - - no backup needed - - - - - Bind - - - 0.41 - - - - - - Cockpit - - - - - - - no backup needed - - - - - Coquelicot - - - 0.40 - - - includes uploaded files - - - - - Datetime - - - 0.41 - - - - - - Deluge - - - 0.41 - - - does not include downloaded/seeding files - - - - - Diagnostics - - - - - - - no backup needed - - - - - Dynamic DNS - - - 0.39 - - - - - - ejabberd - - - 0.39 - - - includes all data and configuration - - - - - Firewall - - - - - - - no backup needed - - - - - ikiwiki - - - 0.39 - - - includes all wikis/blogs and their content - - - - - infinoted - - - 0.39 - - - includes all data and keys - - - - - JSXC - - - - - - - no backup needed - - - - - Let's Encrypt - - - 0.42 - - - - - - Matrix Synapse - - - 0.39 - - - includes media and uploads - - - - - MediaWiki - - - 0.39 - - - includes wiki pages and uploaded files - - - - - Minetest - - - 0.39 - - - - - - MLDonkey - - - 19.0 - - - - - - Monkeysphere - - - 0.42 - - - - - - Mumble - - - 0.40 - - - - - - Names - - - - - - - no backup needed - - - - - Networks - - - No - - - No plans currently to implement backup - - - - - OpenVPN - - - 0.48 - - - includes all user and server keys - - - - - Pagekite - - - 0.40 - - - - - - Power - - - - - - - no backup needed - - - - - Privoxy - - - - - - - no backup needed - - - - - Quassel - - - 0.40 - - - includes users and logs - - - - - Radicale - - - 0.39 - - - includes calendar and cards data for all users - - - - - repro - - - 0.39 - - - includes all users, data and keys - - - - - Roundcube - - - - - - - no backup needed - - - - - SearX - - - - - - - no backup needed - - - - - Secure Shell (SSH) Server - - - 0.41 - - - includes host keys - - - - - Security - - - 0.41 - - - - - - Shadowsocks - - - 0.40 - - - only secrets - - - - - Sharing - - - 0.40 - - - does not include the data in the shared folders - - - - - Snapshot - - - 0.41 - - - only configuration, does not include snapshot data - - - - - Storage - - - - - - - no backup needed - - - - - Syncthing - - - 0.48 - - - does not include data in the shared folders - - - - - Tahoe-LAFS - - - 0.42 - - - includes all data and configuration - - - - - Tiny Tiny RSS - - - 19.2 - - - includes database containing feeds, stories, etc. - - - - - Tor - - - 0.42 - - - includes configuration and secrets such as onion service keys - - - - - Transmission - - - 0.40 - - - does not include downloaded/seeding files - - - - - Upgrades - - - 0.42 - - - - - - Users - - - No - - - No plans currently to implement backup - - - - - -
-
- How to install and use Backups - - Step 1 - - - - - - - - Backups: Step 1 - - - - - Step 2 - - - - - - - - Backups: Step 2 - - - - - Step 3 - - - - - - - - Backups: Step 3 - - - - - Step 4 - - - - - - - - Backups: Step 4 - - - - - Step 5 - - - - - - - - Backups: Step 5 - - - - - Step 6 - - - - - - - - Backups: Step 6 - - - - - Step 7 - - - - - - - - Backups: Step 7 - - - -
-
-
- BIND (Domain Name Server) - BIND enables you to publish your Domain Name System (DNS) information on the Internet, and to resolve DNS queries for your user devices on your network. - Currently, on FreedomBox, BIND is only used to resolve DNS queries for other machines on local network. It is also incompatible with sharing Internet connection from FreedomBox. - Note: This service is available only on networks configured as "internal" zone. It is not available when connected via OpenVPN. -
-
- Cockpit (Server Administration) - Cockpit is a server manager that makes it easy to administer GNU/Linux servers via a web browser. On a FreedomBox, controls are available for many advanced functions that are not usually required. A web based terminal for console operations is also available. - It can be accessed by any user on your FreedomBox belonging to the admin group. Cockpit is only usable when you have proper domain name setup for your FreedomBox and you use that domain name to access Cockpit. See the Troubleshooting section for more information. - - Use cockpit only if you are an administrator of GNU/Linux systems with advanced skills. FreedomBox tries to coexist with changes to system by system administrators and system administration tools like Cockpit. However, improper changes to the system might causes failures in FreedomBox functions. - -
- Using Cockpit - Install Cockpit like any other application on FreedomBox. Make sure that Cockpit is enabled after that. - - - - - - - cockpit-enable.png - - - - Ensure that the user account on FreedomBox that will used for Cockpit is part of the administrators group. - - - - - - - cockpit-admin-user.png - - - - Launch the Cockpit web interface. Login using the configured user account. - - - - - - - cockpit-login.png - - - - Start using cockpit. - - - - - - - cockpit-system.png - - - - Cockpit is usable on mobile interfaces too. - - - - - - - cockpit-mobile.png - - - -
-
- Features - The following features of Cockpit may be useful for advanced FreedomBox users. -
- System Dashboard - Cockpit has a system dashboard that - - - Shows detailed hardware information - - - Shows basic performance metrics of a system - - - Allows changing system time and timezone - - - Allows changing hostname. Please use FreedomBox UI to do this - - - Shows SSH server fingerprints - - - - - - - - - cockpit-system.png - - - -
-
- Viewing System Logs - Cockpit allows querying system logs and examining them in full detail. - - - - - - - cockpit-logs.png - - - -
-
- Managing Storage - Cockpit allows following advanced storage functions: - - - View full disk information - - - Editing disk partitions - - - RAID management - - - - - - - - - cockpit-storage1.png - - - - - - - - - - cockpit-storage2.png - - - -
-
- Networking - Cockpit and FreedomBox both rely on NetworkManager to configure the network. However, Cockpit offers some advanced configuration not available on FreedomBox: - - - Route configuration - - - Configure Bonds, Bridges, VLANs - - - - - - - - - cockpit-network1.png - - - - - - - - - - cockpit-network2.png - - - - - - - - - - cockpit-network3.png - - - -
-
- Services - Cockpit allows management of services and periodic jobs (similar to cron). - - - - - - - cockpit-services1.png - - - - - - - - - - cockpit-services2.png - - - -
-
- Web Terminal - Cockpit offers a web based terminal that can be used perform manual system administration tasks. - - - - - - - cockpit-terminal.png - - - -
-
-
- Troubleshooting - Cockpit requires a domain name to be properly setup on your FreedomBox and will only work when you access it using a URL with that domain name. Cockpit will not work when using IP address in the URL. Using freedombox.local as the domain name also does not work. For example, the following URLs will not work: - - Starting with FreedomBox version 19.15, using .local domain works. You can access Cockpit using the URL . The .local domain is based on your hostname. If your hostname is mybox, your .local domain name will be mybox.local and the Cockpit URL will be . - To properly access Cockpit, use the domain name configured for your FreedomBox.Cockpit will also work well when using a Tor Onion Service. The following URLs will work: - - The reason for this behaviour is that Cockpit uses WebSockets to connect to the backend server. Cross site requests for WebSockets must be prevented for security reasons. To implement this, Cockpit maintains a list of all domains from which requests are allowed. FreedomBox automatically configures this list whenever you add or remove a domain. However, since we can't rely on IP addresses, they are not added by FreedomBox to this domain list. You can see the current list of allowed domains, as managed by FreedomBox, in /etc/cockpit/cockpit.conf. You may edit this, but do so only if you understand web security consequences of this. -
-
-
- Configure - Configure has some general configuration options: -
- Hostname - - - Hostname is the local name by which other devices on the local network can reach your FreedomBox. The default hostname is freedombox. - - -
-
- Domain Name - - - Domain name is the global name by which other devices on the Internet can reach your FreedomBox. The value set here is used by the Chat Server (XMPP), Matrix Synapse, Certificates (Let's Encrypt), and Monkeysphere. - - -
-
- Webserver Home Page - - - This is an advanced option that allows you to set something other than FreedomBox Service as the home page to be served on the domain name of the FreedomBox. For example, if your FreedomBox's domain name is and you set MediaWiki as the home page, visiting will take you to instead of the usual . You can set any web application, Ikiwiki wikis and blogs or Apache's default index.html page as the web server home page. - - - - Once some other app is set as the home page, you can only navigate to the FreedomBox Service by typing into the browser. - /freedombox can also be used as an alias to /plinth - - - - Tip: Bookmark the URL of FreedomBox Service before setting the home page to some other app. - - -
-
-
- Date & Time - This network time server is a program that maintains the system time in synchronization with servers on the Internet. - You can select your time zone by picking a big city nearby (they are sorted by Continent/City) or select directly the zone with respect to GMT (Greenwich Mean Time). - - - - - - - DateTime.png - - - -
-
- Diagnostics - The system diagnostic test will run a number of checks on your system to confirm that applications and services are working as expected. - Just click Run Diagnostics. This may take some minutes. -
-
- Dynamic DNS Client -
- What is Dynamic DNS? - In order to reach a server on the Internet, the server needs to have permanent address also known as the static IP address. Many Internet service providers don't provide home users with a static IP address or they charge more providing a static IP address. Instead they provide the home user with an IP address that changes every time the user connects to the Internet. Clients wishing to contact the server will have difficulty reaching the server. - Dynamic DNS service providers assist in working around a problem. First they provide you with a domain name, such as 'myhost.example.org'. Then they associate your IP address, whenever it changes, with this domain name. Then anyone intending to reach the server will be to contact the server using the domain name 'myhost.example.org' which always points to the latest IP address of the server. - For this to work, every time you connect to the Internet, you will have to tell your Dynamic DNS provider what your current IP address is. Hence you need special software on your server to perform this operation. The Dynamic DNS function in FreedomBox will allow users without a static public IP address to push the current public IP address to a Dynamic DNS Server. This allows you to expose services on FreedomBox, such as ownCloud, to the Internet. -
-
- GnuDIP vs. Update URL - There are two main mechanism to notify the Dynamic DNS server of your new IP address; using the GnuDIP protocol and using the Update URL mechanism. - If a service provided using update URL is not properly secured using HTTPS, your credentials may be visible to an adversary. Once an adversary gains your credentials, they will be able to replay your request your server and hijack your domain. - On the other hand, the GnuDIP protocol will only transport a salted MD5 value of your password, in a way that is secure against replay attacks. -
-
- Using the GnuDIP protocol - - - Register an account with any Dynamic DNS service provider. A free service provided by the FreedomBox community is available at . - - - In FreedomBox UI, enable the Dynamic DNS Service. - - - Select GnuDIP as Service type, enter your Dynamic DNS service provider address (for example, gnudip.datasystems24.net) into GnuDIP Server Address field. - - - - - - - Dynamic DNS Settings - - - - - - Fill Domain Name, Username, Password information given by your provider into the corresponding fields. - - -
-
- Using an Update URL - This feature is implemented because the most popular Dynamic DNS providers are using Update URLs mechanism. - - - Register an account with a Dynamic DNS service provider providing their service using Update URL mechanism. Some example providers are listed in the configuration page itself. - - - In FreedomBox UI, enable the Dynamic DNS service. - - - Select other Update URL as Service type, enter the update URL given by your provider into Update URL field. - - - If you browse the update URL with your Internet browser and a warning message about untrusted certificate appears, then enable accept all SSL certificates. WARNING: your credentials may be readable here because man-in-the-middle attacks are possible! Consider choosing a better service provider instead. - - - If you browse the update URL with your Internet browser and the username/password box appears, enable use HTTP basic authentication checkbox and provide the Username and Password. - - - If the update URL contains your current IP address, replace the IP address with the string <Ip>. - - -
-
- Checking If It Works - - - Make sure that external services you have enabled such as /jwchat, /roundcube and /ikiwiki are available on your domain address. - - - Go to the Status page, make sure that the NAT type is detected correctly. If your FreedomBox is behind a NAT device, this should be detected over there (Text: Behind NAT). If your FreedomBox has a public IP address assigned, the text should be "Direct connection to the Internet". - - - Check that the last update status is not failed. - - -
-
- Recap: How to create a DNS name with GnuDIP - - to delete or to replace the old text - - - - Access to GnuIP login page (answer Yes to all pop ups) - - - Click on "Self Register" - - - Fill the registration form (Username and domain will form the public IP address [username.domain]) - - - Take note of the username/hostname and password that will be used on the FreedomBox app. - - - Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login). - - - Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices). - - - Leave the GnuDIP interface and open the Dynamic DNS Client app page in your FreedomBox. - - - Click on "Set Up" in the top menu. - - - Activate Dynamic DNS - - - Choose GnuDIP service. - - - Add server address (gnudip.datasystems24.net) - - - Add your fresh domain name (username.domain, ie [username].freedombox.rocks) - - - Add your fresh username (the one used in your new IP address) and password - - - Add your GnuDIP password - - - Fill the option with (try this url in your browser, you will figure out immediately) - - -
-
-
- Firewall - 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. - 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. - - - - - - - Firewall - - - - Firewall management in FreedomBox is done using FirewallD. -
- Interfaces - Each interface is needs to be assigned to one (and only one) zone. If an interface is not assigned any zone, it is automatically assigned external zone. Whatever rules are in effect for a zone, those rules start to apply for that interface. For example, if HTTP traffic is allowed in a particular zone, then web requests will be accepted on all the addresses configured for all the interfaces assigned to that zone. - There are primarily two firewall zones used. The internal zone is meant for services that are provided to all machines on the local network. This may include services such as streaming media and simple file sharing. The external zone is meant for services that are provided publicly on the Internet. This may include services such as blog, website, email web client etc. - For details on how network interfaces are configured by default, see the Networks section. -
-
- Opening Custom Ports - Cockpit app provides advanced management of firewall. Both FreedomBox and Cockpit operate over firewalld and are hence compatible with each other. In particular, Cockpit can be used to open custom services or ports on FreedomBox. This is useful if you are manually running your own services in addition to the services provided by FreedomBox on the same machine. - - - - - - - firewalld-cockpit.png - - - -
-
- FreedomBox Ports/Services - 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. - - - - - - - - - - - - - Service - - - - - Port - - - - - External - - - - - Enabled by default - - - - - Status shown in FreedomBox - - - - - Managed by FreedomBox - - - - - - Minetest - - - 30000/udp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - XMPP Client - - - 5222/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - XMPP Server - - - 5269/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - XMPP Bosh - - - 5280/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - NTP - - - 123/udp - - - - - - - - - {o} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - FreedomBox Web Interface (Plinth) - - - 443/tcp - - - - - - - - - {*} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - {X} - - - - - - - - Quassel - - - 4242/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - SIP - - - 5060/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - SIP - - - 5060/udp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - SIP-TLS - - - 5061/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - SIP-TLS - - - 5061/udp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - RTP - - - 1024-65535/udp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - SSH - - - 22/tcp - - - - - - - - - {*} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - {X} - - - - - - - - mDNS - - - 5353/udp - - - - - - - - - {o} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - Tor (Socks) - - - 9050/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - Obfsproxy - - - <random>/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - OpenVPN - - - 1194/udp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - Mumble - - - 64378/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - Mumble - - - 64378/udp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - Privoxy - - - 8118/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - JSXC - - - 80/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - JSXC - - - 443/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - DNS - - - 53/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - DNS - - - 53/udp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - DHCP - - - 67/udp - - - - - - - - - {o} - - - - - - - - - - - - (./) - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - Bootp - - - 67/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - Bootp - - - 67/udp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - Bootp - - - 68/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - Bootp - - - 68/udp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - LDAP - - - 389/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - LDAPS - - - 636/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - -
-
- Manual operation - See FirewallD documentation for more information on the basic concepts and comprehensive documentation. -
- Enable/disable firewall - To disable firewall - - or with systemd - - To re-enable firewall - - or with systemd - -
-
- Modifying services/ports - You can manually add or remove a service from a zone. - To see list of services enabled: - --list-services]]> - Example: - - To see list of ports enabled: - --list-ports]]> - Example: - - To remove a service from a zone: - --remove-service= -firewall-cmd --permanent --zone= --remove-service=]]> - Example: - - To remove a port from a zone: - / -firewall-cmd --permanent --zone=internal --remove-port=/]]> - Example: - - To add a service to a zone: - --add-service= -firewall-cmd --permanent --zone= --add-service=]]> - Example: - - To add a port to a zone: - / -firewall-cmd --permanent --zone=internal --add-port=/]]> - Example: - -
-
- Modifying the zone of interfaces - You can manually change the assignment of zones of each interfaces after they have been autuomatically assigned by the first boot process. - To see current assignment of interfaces to zones: - - To remove an interface from a zone: - --remove-interface= -firewall-cmd --permanent --zone= --remove-interface=]]> - Example: - - To add an interface to a zone: - --add-interface= -firewall-cmd --permanent --zone= --add-interface=]]> - Example: - -
-
-
-
- Let's Encrypt (Certificates) - A digital certificate allows users of a web service to verify the identity of the service and to securely communicate with it. FreedomBox can automatically obtain and setup digital certificates for each available domain. It does so by proving itself to be the owner of a domain to Let's Encrypt, a certificate authority (CA). - Let's Encrypt is a free, automated, and open certificate authority, run for the public's benefit by the Internet Security Research Group (ISRG). Please read and agree with the Let's Encrypt Subscriber Agreement before using this service. -
- Why using Certificates - The communication with your FreedomBox can be secured so that it is not possible to intercept the content of the web pages viewed and about the content exchanged. -
-
- How to setup - - - If your FreedomBox is behind a router, you will need to set up port forwarding on your router. You should forward the following ports: - - - TCP 80 (http) - - - TCP 443 (https) - - - - - Make the domain name known: - - - In Configure insert your domain name, e.g. MyWebName.com - - - - - - - Let's Encrypt - - - - - - - - Verify the domain name was accepted - - - Check that it is enabled in Name Services - - - - - - - Let's Encrypt Name Services - - - - - - - - Go to the Certificates (Let's Encrypt) page, and complete the module install if needed. Then click the "Obtain" button for your domain name. - - - After some minutes a valid certificate is available - - - - - - - Let's Encrypt - - - - - - - - Verify in your browser by checking https://MyWebName.com - - - - - - - - - Let's Encrypt Certificate - - - - - - - - Screencast: Let's Encrypt -
-
- Using - The certificate is valid for 3 months. It is renewed automatically and can also be re-obtained or revoked manually. - With running diagnostics the certificate can also be verified. -
-
-
- Monkeysphere - With Monkeysphere, an OpenPGP key can be generated for each configured domain serving SSH. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users connecting to this machine through SSH can verify that they are connecting to the correct host. For users to trust the key, at least one person (usually the machine owner) must sign the key using the regular OpenPGP key signing process. See the Monkeysphere SSH documentation for more details. - Monkeysphere can also generate an OpenPGP key for each Secure Web Server (HTTPS) certificate installed on this machine. The OpenPGP public key can then be uploaded to the OpenPGP keyservers. Users accessing the web server through HTTPS can verify that they are connecting to the correct host. To validate the certificate, the user will need to install some software that is available on the Monkeysphere website. -
-
- Name Services - Name Services provides an overview of ways the box can be reached from the public Internet: domain name, Tor Onion Service, and Pagekite. For each type of name, it is shown whether the HTTP, HTTPS, and SSH services are enabled or disabled for incoming connections through the given name. -
-
- Networks - This section describes how networking is setup by default in FreedomBox and how you can customize it. See also the Firewall section for more information on how firewall works. -
- Default setup - In a fresh image of FreedomBox, network is not configured at all. When the image is written to an SD card and the device boots, configuration is done. During first boot, FreedomBox setup package detects the networks interfaces and tries to automatically configure them so that FreedomBox is available for further configuration via the web interface from another machine without the need to connect a monitor. Automatic configuration also tries to make FreedomBox useful, out of the box, for the most important scenarios FreedomBox is used for. - There are two scenarios it handles: when is a single ethernet interface and when there are multiple ethernet interfaces. -
- Single ethernet interface - When there is only single ethernet interface available on the hardware device, there is not much scope for it to play the role of a router. In this case, the device is assumed to be just another machine in the network. Accordingly, the only available interface is configured to be an internal interface in automatic configuration mode. This means that it connects to the Internet using the configuration provided by a router in the network and also makes all (internal and external) of its services available to all the clients on this network. - - - - - - - network_single.png - - - -
-
- Multiple ethernet interface - When there are multiple ethernet interfaces available on the hardware device, the device can act as a router. The interfaces are then configured to perform this function. - The first network interface is configured to be an WAN or external interface in automatic configuration mode. This means that it connects to the Internet using network configuration provided by the Internet Service Provider (ISP). Only services that are meant to be provided across the entire Internet (external services) will be exposed on this interface. You must plug your Internet connection into the port of this ethernet interface. If you wish to continue to have your existing router manage the Internet connection for you, then plug a connection from your router to the port on this interface. - The remaining network interfaces are configured for the clients of a router. They are configured as LAN or internal interfaces in shared configuration mode. This means that all the services (both external and internal) services are provided to who ever connects on this interface. Further, the shared mode means that clients will be able to receive details of automatic network connection on this interface. Specifically, DHCP configuration and DNS servers are provided on this interface. The Internet connection available to the device using the first network interface will be shared with clients using this interface. This all means that you can connect your computers to this network interface and they will get automatically configured and will be able to access the Internet via the FreedomBox. - Currently, it is not very clear which interface will be come the WAN interface (and the remaining being LAN interfaces) although the assignment process is deterministic. So, it take a bit of trail and error to figure out which one is which. In future, for each device, this will be well documented. -
-
- Wi-Fi configuration - All Wi-Fi interfaces are configured to be LAN or internal interfaces in shared configuration mode. They are also configured to become Wi-Fi access points with following details. - - - Name of the access point will be FreedomBox plus the name of the interface (to handle the case where there are multiple of them). - - - Password for connecting to the interface will be freedombox123. - - -
-
-
- Internet Connection Sharing - Although the primary duty of FreedomBox is to provide decentralized services, it can also act like a home router. Hence, in most cases, FreedomBox connects to the Internet and provides other machines in the network the ability to use that Internet connection. FreedomBox can do this in two ways: using a shared mode connection or using an internal connection. - When an interface is set in shared mode, you may connect your machine directly to it. This is either by plugging in an ethernet cable from this interface to your machine or by connecting to a Wi-Fi access point. This case is the simplest to use, as FreedomBox automatically provides your machine with the necessary network configuration. Your machine will automatically connect to FreedomBox provided network and will be able to connect to the Internet given that FreedomBox can itself connect to the Internet. - Sometimes the above setup may not be possible because the hardware device may have only one network interface or for other reasons. Even in this case, your machine can still connect to the Internet via FreedomBox. For this to work, make sure that the network interface that your machine is connecting to is in internal mode. Then, connect your machine to network in which FreedomBox is present. After this, in your machine's network configuration, set FreedomBox's IP address as the gateway. FreedomBox will then accept your network traffic from your machine and send it over to the Internet. This works because network interfaces in internal mode are configured to masquerade packets from local machines to the Internet and receive packets from Internet and forward them back to local machines. -
-
- Customization - The above default configuration may not be fit for your setup. You can customize the configuration to suit your needs from the Networks area in the 'setup' section of the FreedomBox web interface. -
- PPPoE connections - If your ISP does not provide automatic network configuration via DHCP and requires you to connection via PPPoE. To configure PPPoE, remove any network connection existing on an interface and add a PPPoE connection. Here, optionally, provide the account username and password given by your ISP and activate the connection. -
-
- Connect to Internet via Wi-Fi - By default Wi-Fi devices attached during first boot will be configured as access points. They can be configured as regular Wi-Fi devices instead to connection to a local network or an existing Wi-Fi router. To do this, click on the Wi-Fi connection to edit it. Change the mode to Infrastructure instead of Access Point mode and IPv4 Addressing Method to Automatic (DHCP) instead of Shared mode. Then the SSID provided will mean the Wi-Fi network name you wish to connect to and passphrase will be the used to while making the connection. -
- Problems with Privacy Feature - NetworkManager used by FreedomBox to connect to the Wi-Fi networks has a privacy feature that uses a different identity when scanning for networks and when actually connecting to the Wi-Fi access point. Unfortunately, this causes problems with some routers that reject connections from such devices. Your connection won't successfully activate and disconnect after trying to activate. If you have control over the router's behaviour, you could also turn off the feature causing problem. Otherwise, the solution is to connect with a remote shell using SSH or Cockpit, editing a file /etc/NetworkManager/NetworkManager.conf and adding the line wifi.scan-rand-mac-address=no in the [device] section. This turns off the privacy feature. - Edit a file: - - Add the following: - - Then reboot the machine. -
-
-
- Adding a new network device - When a new network device is added, network manager will automatically configure it. In most cases this will not work to your liking. Delete the automatic configuration created on the interface and create a new network connection. Select your newly added network interface in the add connection page. - - - Then set firewall zone to internal and external appropriately. - - - You can configure the interface to connect to a network or provide network configuration to whatever machine connects to it. - - - Similarly, if it is a Wi-Fi interface, you can configure it to become a Wi-FI access point or to connect to an existing access points in the network. - - -
-
- Configuring a mesh network - FreedomBox has rudimentary support for participating in BATMAN-Adv based mesh networks. It is possible to either join an existing network in your area or create a new mesh network and share your Internet connection with the rest of the nodes that join the network. Currently, two connections have to be created and activated manually to join or create a mesh network. -
- Joining a mesh network - To join an existing mesh network in your area, first consult the organizers and get information about the mesh network. - - - Create a new connection, then select the connection type as Wi-Fi. In the following dialog, provide the following values: - - - - - - - - - - Field Name - - - - - Example Value - - - - - Explanation - - - - - - - Connection Name - - - - Mesh Join - BATMAN - - - The name must end with 'BATMAN' (uppercase) - - - - - - Physical Interface - - - - wlan0 - - - The Wi-Fi device you wish to use for joining the mesh network - - - - - - Firewall Zone - - - - External - - - Since you don't wish that participants in mesh network to use internal services of FreedomBox - - - - - - SSID - - - - ch1.freifunk.net - - - As provided to you by the operators of the mesh network. You should see this as a network in Nearby Wi-Fi Networks - - - - - - Mode - - - - Ad-hoc - - - Because this is a peer-to-peer network - - - - - - Frequency Band - - - - 2.4Ghz - - - As provided to you by the operators of the mesh network - - - - - - Channel - - - - 1 - - - As provided to you by the operators of the mesh network - - - - - - BSSID - - - - 12:CA:FF:EE:BA:BE - - - As provided to you by the operators of the mesh network - - - - - - Authentication - - - - Open - - - Leave this as open, unless you know your mesh network needs it be otherwise - - - - - - Passphrase - - - - - Leave empty unless you know your mesh network requires one - - - - - - IPv4 Addressing Method - - - - Disabled - - - We don't want to request IP configuration information yet - - - - - - Save the connection. Join the mesh network by activating this newly created connection. - - - Create a second new connection, then select the connection type as Generic. In the following dialog, provide this following values: - - - - - - - - - - Field Name - - - - - Example Value - - - - - Explanation - - - - - - - Connection Name - - - - Mesh Connect - - - Any name to identify this connection - - - - - - Physical Interface - - - - bat0 - - - This interface will only show up after you successfully activate the connection in first step - - - - - - Firewall Zone - - - - External - - - Since you don't wish that participants in mesh network to use internal services of FreedomBox - - - - - - IPv4 Addressing Method - - - - Auto - - - Mesh networks usually have a DHCP server somewhere that provide your machine with IP configuration. If not, consult the operator and configure IP address setting accordingly with Manual method - - - - - - Save the connection. Configure your machine for participation in the network by activating this connection. Currently, this connection has to be manually activated every time you need to join the network. In future, FreedomBox will do this automatically. You will now be able reach other nodes in the network. You will also be able to connect to the Internet via the mesh network if there is an Internet connection point somewhere in mesh as setup by the operators. - - -
-
- Creating a mesh network - To create your own mesh network and share your Internet connection with the rest of the nodes in the network: - - - Follow the instructions as provided above in step 1 of Joining a mesh network but choose and fix upon your own valid values for SSID (a name for you mesh network), Frequency Band (usually 2.4Ghz), Channel (1 to 11 in 2.4Ghz band) and BSSID (a hex value like 12:CA:DE:AD:BE:EF). Create this connection and activate it. - - - Follow the instructions as provided above in step 2 of Joining a mesh network but select IPv4 Addressing Method as Shared. This will provide automatic IP configuration to other nodes in the network as well as share the Internet connection on your machine (achieved using a second Wi-Fi interface, using Ethernet, etc.) with other nodes in the mesh network. - - - Spread the word about your mesh network to your neighbors and let them know the parameters you have provided when creating the network. When other nodes connect to this mesh network, they have to follow steps in Joining a mesh network but use the values for SSID, Frequency Band and Channel that you have chosen when you created the mesh network. -
-
-
-
- Advanced Network Operations - Cockpit provides many advanced networking features over those offered by FreedomBox. Both FreedomBox and Cockpit operate over Network Manager and are hence compatible with each other. Some of the functions provided by Cockpit include: - - - Set the maximum transmission unit (MTU) for a network connection - - - Change the hardware address (MAC address) of a network interface - - - Add more DNS servers and configure routing of a network connection - - - Creating bonded devices for highly available network interfaces - - - Creating bridge devices to join network interfaces for aggregating separate networks - - - Manage VLAN for creating virtual partitions in the physical network - - - - - - - - - networks-cockpit.png - - - -
-
- Manual Network Operation - FreedomBox automatically configures networks by default and provides a simplified interface to customize the configuration to specific needs. In most cases, manual operation is not necessary. The following steps describe how to manually operate network configuration in the event that a user finds FreedomBox interface to insufficient for task at hand or to diagnose a problem that FreedomBox does not identify. - On the command line interface: - For text based user interface for configuring network connections: - - To see the list of available network devices: - - To see the list of configured connections: - - To see the current status of a connection: - ']]> - To see the current firewall zone assigned to a network interface: - ' | grep zone]]> - or - - To create a new network connection: - " ifname "" type ethernet -nmcli con modify "" connection.autoconnect TRUE -nmcli con modify "" connection.zone internal]]> - To change the firewall zone for a connection: - " connection.zone ""]]> - For more information on how to use nmcli command, see its man page. Also for a full list of configuration settings and type of connections accepted by Network Manager see: - - - - To see the current status of the firewall and manually operate it, see the Firewall section. -
-
-
- PageKite (Public Visibility) -
- What is PageKite? - PageKite makes local websites and services publicly accessible immediately without creating yourself a public IP address. It does this by tunneling protocols such as HTTPS or SSH through firewalls and NAT. Using PageKite requires an account on a PageKite relay service. One such service is . - A PageKite relay service will allow you to create kites. Kites are similar to domain names, but with different advantages and drawbacks. A kite can have a number of configured services. PageKite is known to work with HTTP, HTTPS, and SSH, and may work with some other services, but not all. -
-
- Using PageKite - - - Create an account on a PageKite relay service. - - - Add a kite to your account. Note your kite name and kite secret. - - - In FreedomBox, go to the "Configure PageKite" tab on the Public Visibility (PageKite) page. - - - Check the "Enable PageKite" box, then enter your kite name and kite secret. Click "Save settings". - - - On the "Standard Services" tab, you can enable HTTP and HTTPS (recommended) and SSH (optional). - - - HTTP is needed to obtain the Let's Encrypt certificate. You can disable it later. - - - - - On the Certificates (Let's Encrypt) page, you can obtain a Let's Encrypt certificate for your kite name. - - -
-
-
- Performance (System Monitoring) - Performance app allows you to collect, store and view information about utilization of the hardware. This can gives you basic insights into usage patterns and whether the hardware is overloaded by users and services. - Performance metrics are collected by Performance Co-Pilot and can be viewed using the Cockpit app. Performance app is available in FreedomBox since version 20.9. When this system app is installed and enabled, cockpit's graphs shows the past (up to one year at a time). - - - - - - - performance-one-week.png - - - -
-
- Power - Power provides an easy way to restart or shut down FreedomBox. After you select "Restart" or "Shut Down", you will be asked to confirm. - "Restart" and "Shut Down" options can also be reached from the user dropdown menu on the top right. -
-
- Secure Shell (SSH) Sever -
- What is Secure Shell? - FreedomBox runs openssh-server server by default allowing remote logins from all interfaces. If your hardware device is connected to a monitor and a keyboard, you may login directly as well. Regular operation of FreedomBox does not require you to use the shell. However, some tasks or identifying a problem may require you to login to a shell. -
-
- Setting Up A User Account -
- FreedomBox First Log In: Admin Account - When creating an account in FreedomBox's web interface for the first time, this user will automatically have administrator capabilities. Admin users are able to log in using ssh (see Logging In below) and have superuser privileges via sudo. -
-
- Default User Account - - - Note: If you can access FreedomBox's web interface, then you don't need to do this. You can use the user account created in FreedomBox's web interface to connect to SSH. - - - The pre-built FreedomBox images have a default user account called "fbx". However the password is not set for this account, so it will not be possible to log in with this account by default. - There is a script included in the freedom-maker program, that will allow you to set the password for this account, if it is needed. To set a password for the "fbx" user: - 1. Decompress the image file. - 2. Get a copy of freedom-maker from . - 3. Run sudo ./bin/passwd-in-image <image-file> fbx. - 4. Copy the image file to SD card and boot device as normal. - The "fbx" user also has superuser privileges via sudo. -
-
-
- Logging In -
- Local - To login via SSH, to your FreedomBox: - - Replace fbx with the name of the user you wish to login as. freedombox should be replaced with the hostname or IP address of you FreedomBox device as found in the Quick Start process. - fbx is the default user present on FreedomBox with superuser privileges. Any other user created using FreedomBox and belonging to the group admin will be able to login. The root account has no password set and will not be able to login. Access will be denied to all other users. - fbx and users in admin group will also be able to login on the terminal directly. Other users will be denied access. - If you repeatedly try to login as a user and fail, you will be blocked from logging in for some time. This is due to libpam-abl package that FreedomBox installs by default. To control this behavior consult libpam-abl documentation. -
-
- SSH over Tor - If in FreedomBox you have enabled onion services via Tor, you can access your FreedomBox using ssh over Tor. On a GNU/Linux computer, install netcat-openbsd. - - Edit ~/.ssh/config to enable connections over Tor. - - Add the following: - - Replace USERNAME with, e.g., an admin username (see above). - Note that in some cases you may need to replace 9050 with 9150. - Now to connect to the FreedomBox, open a terminal and type: - - Replace USERNAME with, e.g., an admin username, and ADDRESS with the onion service address for your FreedomBox. -
-
- SSH Over Pagekite - If in FreedomBox you are using Pagekite to expose services to the Internet, you can access your FreedomBox using SSH over Pagekite. On a GNU/Linux computer install netcat-openbsd. - - Edit ~/.ssh/config to enable connections over Pagekite. - - Add the following: - - Now to connect to FreedomBox, open a terminal and type: - - Replace USERNAME with, e.g., an admin username, and KITENAME with your kite name provided by pagekite.net as configured in FreedomBox. -
-
-
- Becoming Superuser - After logging in, if you want to become the superuser for performing administrative activities: - - Make a habit of logging in as root only when you need to. If you aren't logged in as root, you can't accidentally break everything. - - - -
-
- Changing Password - To change the password of a user managed by FreedomBox's web interface, use the change password page. However, the fbx default user is not managed by FreedomBox's web interface and its password cannot be changed through it. - To change password on the terminal, log in to your FreedomBox as the user whose password you want to change. Then, run the following command: - - This will ask you for your current password before giving you the opportunity to set a new one. -
-
-
- Security - When the Restrict console logins option is enabled, only users in the admin group will be able to log in via console, secure shell (SSH) or graphical login. When this option is disabled, any user with an account on FreedomBox will be able to log in. They may be able to access some services without further authorization. This option should only be disabled if all the users of the system are well trusted. If you wish to use your FreedomBox machine also as a desktop and allow non-admin users to login via GUI, this option must be disabled. You can define the list of users belonging to admin group in the Users section. - - - - - - - Security.png - - - -
-
- Service Discovery - Service discovery allows other devices on the network to discover your FreedomBox and services running on it. If a client on the local network supports mDNS, it can find your FreedomBox at <hostname>.local (for example: freedombox.local). - It also allows FreedomBox to discover other devices and services running on your local network. - Service discovery is not essential and works only on internal networks. It may be disabled to improve security especially when connecting to a hostile local network. -
-
- Storage - Storage allows you to see the storage devices attached to your FreedomBox and their disk space usage. - FreedomBox can automatically detect and mount removable media like USB flash drives. They are listed under the Removable Devices section along with an option to eject them. - If there is some free space left after the root partition, the option to expand the root partition is also available. This is typically not shown, since expanding the root partition happens automatically when the FreedomBox starts up for the first time. - - - - - - - Storage.png - - - -
- Advanced Storage Operations - Cockpit provides many advanced storage features over those offered by FreedomBox. Both FreedomBox and Cockpit operate over Udisks2 storage daemon and are hence compatible with each other. Some of the functions provided by Cockpit include: - - - Format a disk or partition with a fresh filesystem - - - Add, remove partitions or wipe the partition table - - - Create and unlock encrypted file systems - - - Create and manage RAID devices - - - - - - - - - storage-cockpit.png - - - -
-
-
- Storage Snapshots - Snapshots allows you to create filesystem snapshots, and rollback the system to a previous snapshot. - - - Note: This feature requires a Btrfs filesystem. All of the FreedomBox stable disk images use Btrfs. - - - - - - - - - Snapshots - - - -
-
- Software Updates - FreedomBox can automatically install security updates. On the Update page of the System section in FreedomBox web interface you can turn on automatic updates. This feature is enabled by default and there is no manual action necessary. It is strongly recommended that you have this option enabled to keep your FreedomBox secure. - Updates are performed every day at night. If you wish to shutdown FreedomBox every day after use, keep it running at night once a week or so to let the automatic updates happen. Alternatively, you can perform manual updates as described below. - Note that once the updates start, it may take a long time to complete. During automatic update process that runs every night or during manual update process, you will not be able to install apps from FreedomBox web interface. - - - - - - - upgrades.png - - - -
- When Will I Get the Latest Features? - Although updates are done every day for security reasons, latest features of FreedomBox will not propagate to all the users. The following information should help you understand how new features become available to users. - Stable Users: This category of users include users who bought the FreedomBox Pinoeer Edition, installed FreedomBox on a Debian stable distribution or users who downloaded the stable images from freedombox.org. As a general rule, only security updates to various packages are provided to these users. One exception to this rule is where FreedomBox service itself is updated when a release gains high confidence from developers. This means that latest FreedomBox features may become available to these users although not as quickly or frequently as testing users. If an app is available only in testing distribution but not in stable distribution, then that app will show up in the web interface but will not be installable by stable users. Some apps are also provided an exception to the rule of "security updates only" when the app is severely broken otherwise. Every two years, a major release of Debian stable happens with the latest versions of all the software packages and FreedomBox developers will attempt to upgrade these users to the new release without requiring manual intervention. - Testing Users: This category of users include users who installed FreedomBox on a Debiantesting distribution or users who downloaded the testing images from freedombox.org. Users who use Debian testing are likely to face occasional disruption in the services and may even need manual intervention to fix the issue. As a general rule, these users receive all the latest features and security updates to all the installed packages. Every two weeks, a new version of FreedomBox is released with all the latest features and fixes. These releases will reach testing users approximately 2-3 days after the release. - Unstable Users: This category of users include users who installed FreedomBox on a Debianunstable distribution or users who downloaded the unstable images from freedombox.org. Users who use Debian unstable are likely to face occasional disruption in the services and may even need manual intervention to fix the issue. As a general rule, these users receive all the latest features to all the installed packages. Every two weeks, a new version of FreedomBox is released with all the latest features and fixes. Theses releases will reach unstable users on the day of the release. Only developers, testers and other contributors to the FreedomBox project should use the unstable distribution and end users and advised against using it. -
-
- Manual Updates from Web Interface - To get updates immediately and not wait until the end of the day, you may want to trigger updates manually. You can do this by pressing the Update now button in Manual update tab for Update page in System section. Note that this step is not necessary if you have enabled Auto-updates as every night this operation is performed automatically. - When installing apps you may receive an error message such as - - This is typically caused by shutting down FreedomBox while it is installing apps, while performing daily updates or during some other operations. This situation can be rectified immediately by running manual update. -
-
- Manual Updates from Terminal - Some software packages may require manual interaction for updating due to questions related to configuration. In such cases, FreedomBox updates itself and brings in new knowledge necessary to update the package by answering configuration questions. After updating itself, FreedomBox acts on behalf of the user and updates the packages by answering the questions. Until FreedomBox has a chance to update the package, such packages should not be be updated manually. The manual update triggered from the web interface is already mindful of such packages and does not update them. - In some rare situations, FreedomBox itself might fail to update or the update mechanism might fall into a situation that might need manual intervention from a terminal. To perform manual upgrades on the terminal, login into FreedomBox on a terminal (if you have monitor and keyboard connected), via a web terminal (using FreedomBox/Manual/Cockpit) or using a remote secure shell (see Secure Shell section). Then run the following commands: - -# dpkg --configure -a -# apt update -# apt -f install -# unattended-upgrade --debug -# apt install freedombox -# apt update]]> - If apt-get update asks for a confirmation to change Codename or other release information, confirm yes. If during update of freedombox package, if a question about overwriting configuration files is asked, answer to install new configuration files from the latest version of the package. This process will upgrade only packages that don't require configuration file questions (except for freedombox package). After this, let FreedomBox handle the upgrade of remaining packages. Be patient while new releases of FreedomBox are made to handle packages that require manual intervention. - If you want to go beyond the recommendation to upgrade all the packages on your FreedomBox and if you are really sure about handling the configuration changes for packages yourself, run the following command: - -
-
-
- Users and Groups - You can grant access to your FreedomBox for other users. Provide the Username with a password and assign a group to it. Currently the groups - - - admin - - - bit-torrent - - - ed2k - - - feed-reader - - - syncthing - - - web-search - - - wiki - - - are supported. - The user will be able to log in to services that support single sign-on through LDAP, if they are in the appropriate group. - Users in the admin group will be able to log in to all services. They can also log in to the system through SSH and have administrative privileges (sudo). - A user's groups can also be changed later-on. - It is also possible to set an SSH public key which will allow this user to securely log in to the system without using a password. You may enter multiple keys, one on each line. Blank lines and lines starting with # will be ignored. - A user's account can be deactivated, which will temporarily disable the account. -
- Known Issues - - - In Debian Stretch, the FreedomBox web interface does not distinguish between users and administrators. Every user added will have full access to the web interface. - - - This issue is fixed in Debian Buster and later. - - - - -
-
-
-
- Hardware - FreedomBox is designed to be the software for a consumer electronics device that is easy to setup, maintain and use. The project does not aim to create a custom hardware device ourselves, but instead we intend to partner with hardware vendors to build FreedomBox devices and also support existing hardware. - In addition to supporting various single board computers and other devices, FreedomBox also supports being installed in a virtual machine. Also, any Debian machine can be turned into a FreedomBox by installing the freedombox package. See the manual page for installing on Debian for more details. -
- Recommended Hardware - On April 22nd, 2019, the FreedomBox Foundation announced the sales of the Pioneer Edition FreedomBox Home Server Kits. This is the recommended pre-installed hardware for all users who don't wish to build their own FreedomBox by choosing the right components, downloading the image and preparing an SD card with FreedomBox. - The kit includes all the hardware needed for launching a FreedomBox home server on an Olimex A20-OLinuXino-LIME2 board. This product provides the perfect combination of open source hardware and free and open source software. By purchasing this product, you also support the FreedomBox Foundation's efforts to create and promote its free and open source server software. - - - - - - - - - - - - - - Pioneer Edition FreedomBox Home Server Kits - - - - - - Pioneer Edition FreedomBox Home Server Kits - - - - - - -
-
- Supported Hardware - Use these hardware if you are able to download FreedomBox images and prepare an SD card by following the manual. If you wish for simper setup process, please buy the FreedomBox kits from recommended hardware instead. 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. - - - - - - - - - - - - - - - - A20 OLinuXino Lime2 - - - - - - A20 OLinuXino Lime2 - - - - - - - - - - - A20 OLinuXino MICRO - - - - - - A20 OLinuXino MICRO - - - - - - - - - - - PC Engines APU - - - - - - PC Engines APU - - - - - - - - - - - - - Cubietruck - - - - - - Cubietruck - - - - - - - - - - - Cubieboard 2 - - - - - - Cubieboard2 - - - - - - - - - - - BeagleBone Black - - - - - - BeagleBone Black - - - - - - - - - - - - - pcDuino3 - - - - - - pcDuino3 - - - - - - - - - - - Debian - - - - - - Debian - - - - - - - - - - - VirtualBox - - - - - - VirtualBox - - - - - - - - - - - - - Pine A64+ - - - - - - Pine A64+ - - - - - - - - - - - Banana Pro - - - - - - Banana Pro - - - - - - - - - - - Orange Pi Zero - - - - - - Orange Pi Zero - - - - - - -
- Hardware Comparison - - - - - - - - - - - - - - - - Name - - - - - Speed (GHz) - - - - - Debian arch - - - - - Ram (GB) - - - - - disk (GB) - - - - - battery - - - - - SATA - - - - - Ethernet speed - - - - - - OSHW - - - - - - - APU.1D - - - 1x2 - - - amd64 - - - 2 - - - - - - - - - - - - - - - - - (./) - - - - - - 1000x3 - - - - - - - - - {X} - - - - - - - - APU.1D4 - - - 1x2 - - - amd64 - - - 4 - - - - - - - - - - - - - - - - - (./) - - - - - - 1000x3 - - - - - - - - - {X} - - - - - - - - BeagleBone Black C - - - 1 - - - armhf/omap - - - ½ - - - 4 - - - - - - - - - - - 100 - - - - - - - - - (./) - - - - - - - - Cubieboard2 - - - 1x2 - - - armhf/sunxi - - - 1 - - - 4 - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 100 - - - - - - - - - {X} - - - - - - - - Cubieboard2-Dual - - - 1x2 - - - armhf/sunxi - - - 1 - - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 100 - - - - - - - - - {X} - - - - - - - - Cubieboard3/Cubietruck - - - 1x2 - - - armhf/sunxi - - - 2 - - - 8 - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 1000 - - - - - - - - - {X} - - - - - - - - OLinuXino A20 LIME - - - 1x2 - - - armhf/sunxi - - - ½ - - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 100 - - - - - - - - - (./) - - - - - - - - OLinuXino A20 LIME2 - - - 1x2 - - - armhf/sunxi - - - 1 - - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 1000 - - - - - - - - - (./) - - - - - - - - OLinuXino A20 MICRO - - - 1x2 - - - armhf/sunxi - - - 1 - - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 100 - - - - - - - - - (./) - - - - - - - - pcDunino3 - - - 1x2 - - - armhf/sunxi - - - 1 - - - 4 - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 100 - - - - - - - - - {X} - - - - - - - - Pine A64+ - - - 1.2x4 - - - arm64/sunxi - - - ½,1,2 - - - - - - - - - - - - - - - 1000 - - - - - - - - - {X} - - - - - - - - Banana Pro - - - 1.2x2 - - - armhf/sunxi - - - 1 - - - - - - - - - - - - - - - - - (./) - - - - - - 1000 - - - - - - - - - {X} - - - - - - - - Orange Pi Zero - - - ?x4 - - - armhf/sunxi - - - ¼,½ - - - - - - - - - - - - - - - 100 - - - - - - - - - {X} - - - - - - - - -
-
-
- Also Working Hardware - This hardware works but is not recommended because the hardware can't run entirely on free software: - - - - - - - - - - - - - - - - Raspberry Pi 2 - - - - - - Raspberry Pi 2 - - - - - - - - - - - Raspberry Pi 3 Model B - - - - - - Raspberry Pi 3 Model B - - - - - - - - - - - Raspberry Pi 3 Model B+ - - - - - - Raspberry Pi 3 Model B+ - - - - - - -
-
- Deprecated Hardware - This hardware was supported earlier but is no longer supported. If you downloaded an earlier image and are running FreedomBox on one of these hardware, you will keep getting software updates. However, no new images will be provided for these hardware. It is recommended that you migrate to newer, supported hardware using backup and restore. - - - - - - - - - - - - - - - DreamPlug - - - - - - DreamPlug - - - - - - - - - - - Raspberry Pi - - - - - - Raspberry Pi - - - - - - - Note: As FreedomBox is currently in the development stage, Supported Hardware means that FreedomBox images are built for said hardware and at least one developer has reported the basic functions to be working. -
-
- Adding Hardware Support - Although the project may focus on supporting specific devices, we are looking to support as much hardware as possible given that it is suitable for FreedomBox's needs. Take a look at the list of targeted hardware for more information. - If you are a developer, consider adding hardware support for your device by modifying Freedom Maker. If you have access to one of these targeted hardware devices and would like to work with us to make it run FreedomBox, please contact us! -
-
- Pioneer Edition FreedomBox - Pioneer FreedomBox Home Servers are produced and sold by Olimex, a company which specializes in Open Source Hardware (OSHW). The kit includes pocket-sized server hardware, an SD card with the operating system pre-installed, and a backup battery which can power the hardware for 4-5 hours in case of outages. It sells for 69 euro. An optional storage add-on for high capacity hard disk (HDD) or solid-state drive (SSD) is also available from Olimex. By purchasing this product, you also support the FreedomBox Foundation's efforts to create and promote its free and open source server software. - - - - - - - Pioneer Edition FreedomBox Home Server Kit - - - -
- Product Features - The Pioneer Edition FreedomBox Home Server Kit includes all the hardware needed for launching a FreedomBox home server on an Olimex A20-OLinuXino-LIME2 board: - - - the A20-OlinuXino-LIME2, - - - a custom metal case with a laser-engraved FreedomBox logo, - - - a high-speed 32GB micro SD card with the FreedomBox software pre-installed, - - - a backup battery, - - - a power adapter, and - - - an Ethernet cable. - - - an optional storage add-on for hard disk (HDD) or solid-state drive (SSD) - - -
-
- Recommended Hardware - This is the hardware recommended for all users who just want a turn-key FreedomBox, and don't want to build their own one. - (Building your own FreedomBox means some technical stuff like choosing and buying the right components, downloading the image and preparing the SD card). -
-
- Availability - The Pioneer Edition FreedomBox Home Server is the first commercially available version of FreedomBox. - - - Price: 69 EUR - - - - Olimex Store - - - - The US version is also available through Mouser Electronics. - - -
-
- Hardware Specifications - Pioneer Edition FreedomBox Home Server is based on A20-OLinuXino-LIME2 Rev.G. - - - Open Source Hardware (OSHW): Yes - - - CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core - - - RAM: 1 GiB DDR3 - - - Storage: 32GB class 10+ microSD card pre-loaded with FreedomBox - - - SATA: 1 SATA port 2.6 compliant 3Gb/s - - - USB: 2 USB 2.0 Hi-Speed host ports - - - Battery: 3.3V Li-Po, 1400mAh (4-5 hours of backup without additional devices connected via USB) - - - Ethernet: 10/100/1000, RJ45 (1 meter cable included) - - - Power adapter: 110-220 V input, 5V output, EU style (with optional UK or US sockets) - - - Power consumption: 1.5W and 5W depending on load (0.3A to 1A current) - - - Box: Custom metallic box with FreedomBox decal - - - Further information: - - - - Quick start leaflet - - - - - Hardware source files - - - - - A20-OLinuXino-LIME2 rev.G schematic - - - - - A20 SOC datasheet - - - - The kits run entirely on Free Software. They work with Kernel and u-boot from Debian repositories. Even the boot firmware in ROM called BROM is free software (GPLV2+). -
-
- Storage Add-on - You can order a storage add-on along with the Pioneer Edition FreedomBox Home Server. The storage add-on is a SATA disk drive enclosure case optionally with a hard disk or solid-state drive of size 128GB to 2000GB. If you have already purchased the Home Server without the add-on, you can order the add-on separately. - - - - Olimex Store - - - - Price: 9 EUR (without the hard disk, only for the case, you need to add your own HDD/SSD to it) - - - Price: 42 EUR (with 128GB Solid-State Drive) - - - Price: 69 EUR (with 512GB Solid-State Drive) - - - Price: 42 EUR (with 320GB Hard Disk) - - - Price: 53 EUR (with 500GB Hard Disk) - - - Price: 64 EUR (with 1000GB Hard Disk) - - - Price: 86 EUR (with 2000GB Hard Disk) - - -
-
- Download - The kits come with an SD card pre-loaded with FreedomBox. There's NO need to download images. - However, if you wish to reset your devices to a pristine state, then you can do so with the the image provided. Follow the instructions on the download page to create a FreedomBox SD card and boot the device. Make sure to download the Pioneer Edition images. These SD card images are meant for use with the on-board SD card slot and won't work when used with a separate SD card reader connected via USB. - An alternative to downloading these images is to install Debian on the device and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Known Issues - - - The image that shipped with the kits uses a slightly modified u-boot from Debian and not stock Debian like the rest of FreedomBox. So, if you wish to get the source code, please use the FreedomBox team's u-boot repository. - - -
-
- Obtaining Source Code - After you purchase and receive your Pioneer Edition FreedomBox, you may want to obtain the source code of the software running in it. Continue reading this section for instructions. - FreedomBox is fully free software and you can obtain the source code to study, modify and distribute improvements. -
- From within FreedomBox - FreedomBox is made up of several software programs and you can obtain the source code to any of them. These instructions are similar to obtaining and building source code for Debian since FreedomBox is a pure blend of Debian. Using this process you can obtain the source code to the exact version of the package you are currently using in FreedomBox. - - - To see the list of software packages installed on your FreedomBox, run the following in a terminal: - - - - To obtain the source code for any of those programs, then run: - ]]> - This requires that the file /etc/apt/sources.list file contains the information about the source code repositories. These are present by default on all FreedomBox images. If you have installed FreedomBox using a package from Debian, you need to ensure that source repositories are added in the file. - - - To build the package from source code, first install its dependencies - ]]> - Switch to the source directory created by the apt source command: - ]]> - Then build the package - - - - Install the package: - .deb]]> - - -
-
- Other Ways to Obtain Source Code - - - Source code for any of the packages can be browsed and searched using the web interface at sources.debian.org. For example, see the plinth package. - - - Source code and pre-built binary package for any version of a package including historic versions can be obtained from snapshot.debian.org. For example, see the plinth package. - - - You can also obtain the links to upstream project homepage, upstream version control, Debian's version control, changelog, etc. from the Debian tracker page for a project at tracker.debian.org. For example, see the tracker page for plinth package. - - - You can build and install a package from its Debian's version control repository. For example, - - - -
-
- Building Disk Images - You can also build FreedomBox disk images for various hardware platforms using the freedom-maker tool. This is also available as a Debian package and source code for it may be obtained using the above methods. Build instructions for creating disk images are available as part of the source code for freedom-maker package. - FreedomBox disk images are built and uploaded to official servers using automated Continuous Integration infrastructure. This infrastructure is available as source code too and provides accurate information on how FreedomBox images are built. -
-
- U-boot on Pioneer Edition Images - There is one minor exception to the u-boot package present on the hardware sold as FreedomBox Home Server Kits Pioneer Edition. It contains an small but important fix that is not part of Debian sources. The fork of the Debian u-boot source repository along with the minor change done by the FreedomBox is available as a separate repository. We except this change to be available in upstream u-boot eventually and this repository will not be needed. This package can be built on a Debian armhf machine as follows (cross compiling is also possible, simply follow instructions for cross compiling Debian packages): - - The u-boot Debian package will be available in u-boot-sunxi*.deb. This package will contain - -dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of= seek=8 bs=1k conv=notrunc]]> - The resulting image will have the modified u-boot in it. -
-
-
-
- Cubietruck -
- FreedomBox Danube Edition - - - - - - - FreedomBox Danube Edition - - - - FreedomBox Danube Edition is a custom casing around Cubietruck and an SSD-hard drive. -
-
- Cubietruck / Cubieboard3 - Cubietruck (Cubieboard3) is a single board computer with very good performance compared to many other boards. FreedomBox images are built for this device. To use this board as FreedomBox, a separate USB WiFi device that does not require non-free firmware is recommended. - Recommendation: 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. -
-
- Download - FreedomBox SD card images are provided for this hardware. These SD card images are meant for use with the on-board SD card slot and do not work when used with a separate SD card reader connected via USB. - An alternative to downloading these images is to install Debian on the Cubietruck and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - Cubietruck / Cubieboard3 - - - Price: 89 USD - - - - List of suppliers - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core - - - RAM: 2 GiB DDR3 @ 480 MHz - - - Storage: 8 GB NAND flash built-in, 1x microSD slot - - - Architecture: armhf - - - Ethernet: 10/100/1000, RJ45 - - - WiFi: Broadcom BCM4329/BCM40181 (no free WiFi drivers + firmware available) - - - SATA: 1x 2.0 port - - -
-
- Non-Free Status - - - Non-free blobs required: ? - - - WiFi: no free WiFi drivers + firmware available - - - Works with stock Debian kernel: yes - - -
-
- Known Issues - - - The on-board WiFi does not work with free software. A separate USB WiFi device is recommended. - - -
-
-
- Beagle Bone Black - - - - - - - Beagle Bone Black - - - - Beagle Bone Black (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 USB WiFi device that does not require non-free firmware is recommended. - Recommendation: 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. -
- Download - FreedomBox SD card images are available for this device. Follow the instructions on the download page to create a FreedomBox SD card and boot the device. - Note: This image is for BeagleBone Black (Revision C.1) only. It will not work on the BeagleBone Green, and also not on the Revisions A&B. If you have such a device and would like to help getting FreedomBox to run on it, contact us! - An alternative to downloading these images is to install Debian on the BeagleBone and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - - - Price: ~ 59 USD (50 EUR) - - - - Mouser Electronics - - - - - Full list of suppliers - - - -
-
- Hardware - - - Open Source Hardware (OSHW): Yes - - - CPU: AM335x 1GHz ARM Cortex-A8 - - - RAM: 512MB DDR3L 800 Mhz - - - Storage: Onboard 4GB, 8bit Embedded MMC and microSD - - - Architecture: armhf - - - Ethernet: 10/100, RJ45 - - - WiFi: None, use a USB WiFi device - - - SATA: None - - -
-
- Non-Free Status - - - Non-free blobs required: No - - - WiFi: Not available - - - Works with stock Debian kernel: Yes - - -
-
- Known Issues - None -
-
-
- A20 OLinuXino Lime2 - - - - - - - A20 OLinuXino Lime2 - - - - Olimex's A20 OLinuXino Lime2 is a fully 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. It uses the Allwinner A20 Dual Core ARM processor. FreedomBox images are built and tested for this device starting with version 0.7. To use this device as a FreedomBox, a separate USB WiFi device that does not require non-free firmware is recommended. - Recommendation: 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. -
- Similar Hardware - The following similar hardware will also work well with FreedomBox. - - - Olimex's A20 OLinuXino Lime2 4GB. This hardware merely has extra 4GB NAND storage that is not used by FreedomBox. - - -
-
- Download - FreedomBox SD card images are available for this device. Follow the instructions on the download page to create a FreedomBox SD card and boot the device. These SD card images are meant for use with the on-board SD card slot and won't work when used with a separate SD card reader connected via USB. - An alternative to downloading these images is to install Debian on the device and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - - - Price: 45 EUR (A20 OLinuXino Lime2) - - - Price: 55 EUR (A20 OLinuXino Lime2 4GB) - - - - Olimex Store - - - -
-
- Hardware - - - Open Source Hardware (OSHW): Yes - - - CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core - - - RAM: 1 GiB DDR3 - - - Storage: 4 GB NAND flash built-in (only on 4GB model), 1x microSD slot - - - Architecture: armhf - - - Ethernet: 10/100/1000, RJ45 - - - WiFi: None, use a USB WiFi device - - - SATA: 1x port - - -
-
- Non-Free Status - - - Non-free blobs required: No - - - WiFi: Not available - - - Works with stock Debian kernel: Yes - - - Boot Firmware: BROM (GPLV2+) - - -
-
- Known Issues - - - Revision C hardware has poor performance when receiving Ethernet data in Gigabit mode. To workaround the problem, you can switch to 100 Mbps mode instead of Gigabit mode. Login to your FreedomBox as root (or plugin the SD card into another computer) and create the file /etc/NetworkManager/dispatcher.d/20-fix-ethernet-problem with the following contents: - - - - Revision G2 hardware has poor performance when transmitting Ethernet data in Gigabit mode. Download and use the Pioneer Edition image to fix the issue. It contains a slightly modified u-boot. The above workaround to put the Ethernet into 100 Mbps mode also fixes this issue. - - - Revision K hardware is not working properly. - - -
-
-
- A20 OLinuXino MICRO - - - - - - - A20 OLinuXino MICRO - - - - Olimex's A20 OLinuXino MICRO is a fully 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. It uses the Allwinner A20 Dual Core ARM processor. FreedomBox images are built and tested for this device starting with version 0.7. To use this device as a FreedomBox, a separate USB WiFi device that does not require non-free firmware is recommended. - Recommendation: 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. -
- Similar Hardware - The following similar hardware will also work well with FreedomBox. - - - Olimex's A20 OLinuXino MICRO 4GB. This hardware merely has extra 4GB NAND storage that is not used by FreedomBox. - - -
-
- Download - FreedomBox MicroSD card images are available for this device. Follow the instructions on the download page to create a FreedomBox MicroSD card and boot the device. These MicroSD card images are meant for use with the on-board MicroSD card slot and won't work on the SD card slot or when using a separate MicroSD card reader connected via USB. - An alternative to downloading these images is to install Debian on the device and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - - - Price: 50 EUR (A20 OLinuXino MICRO) - - - Price: 63 EUR (A20 OLinuXino MICRO 4GB) - - - - Olimex Store - - - -
-
- Hardware - - - Open Source Hardware (OSHW): Yes - - - CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core - - - RAM: 1 GiB DDR3 - - - Storage: 4 GB NAND flash built-in (only on 4GB model), 1x microSD slot - - - Architecture: armhf - - - Ethernet: 10/100, RJ45 - - - WiFi: None, use a USB WiFi device - - - SATA: 1x port - - -
-
- Non-Free Status - - - Non-free blobs required: No - - - WiFi: Not available - - - Works with stock Debian kernel: Yes - - - Boot Firmware: BROM (GPLV2+) - - -
-
- Known Issues - - - Not visible on local network - - - When booting the 'stable' image (made on 2017-06-18) the board does not automatically get an IP address from the router's DHCP server over ethernet. Booting the 'testing' image (2018-06) the board does get an IP address. Tested on MICRO hardware revision J. see also: - - -
-
-
- APU - - - - - - - PC Engines APU 1D - - - - PC Engines APU 1D is a single board computer with 3 Gigabit ethernet ports, a powerful AMD APU and Coreboot firmware. FreedomBox images built for AMD64 machines are tested to work well for it. For using this board as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended. - Recommendation: 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. -
- Similar Hardware - Although untested, the following similar hardware is also likely to work well with FreedomBox. - - - Using amd64 image: - - - - apu1c - - - - - apu1c4 - - - - - apu1d4 - - - - - apu2b2 - - - - - apu2b4 - - - - - apu2c0 - - - - - apu2c2 - - - - - apu2c4 - - - - - apu3a2 - - - - - apu3a4 - - - - - apu3b2 - - - - - apu3b4 - - - - - - Using i386 image: - - - - alix1d - - - - - alix1e - - - - - alix2d2 - - - - - alix2d3 - - - - - alix2d13 - - - - - alix3d2 - - - - - alix3d3 - - - - - alix6f2 - - - - - -
-
- Download - FreedomBox disk images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card, USB disk, SSD or hard drive and boot into FreedomBox. Pick the image meant for all amd64 machines. - An alternative to downloading these images is to install Debian on the APU and then install FreedomBox on it. -
-
- Networking - The first network port, the left most one in the above picture, is configured by FreedomBox to be an upstream Internet link and the remaining 2 ports are configured for local computers to connect to. -
-
- Build Image - FreedomBox images for this hardware, which is for all amd64 machines, can be built using Freedom Maker. -
-
- Availability - - - Price: 110 - 170 USD (depending on the board and supplier) - - - - PC Engines - - - - - Full list of suppliers - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: AMD G series T40E - - - RAM: 2 GB DDR3-1066 DRAM - - - Storage: SD card, External USB - - - Architecture: amd64 - - - Ethernet: 3 Gigabit Ethernet ports - - - WiFi: None, use a USB WiFi device - - - SATA: 1 m-SATA and 1 SATA - - -
-
- Non-Free Status - - - Non-free blobs required: No - - - WiFi: Not available - - - Works with stock Debian kernel: Yes - - - Boot firmware: Coreboot - - -
-
- Known Issues - None -
-
-
- pcDuino3 - - - - - - - LinkSprite pcDuino3S - - - - LinkSprite pcDuino3S 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 USB WiFi device that does not require non-free firmware is recommended. - Note: The FreedomBox logo is simply a sticker on top of device brought from store. - Recommendation: 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. -
- Similar Hardware - Although untested, the following similar hardware is also likely to work well with FreedomBox. - - - also covers pcDuino3B - - -
-
- Download - FreedomBox disk images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card, USB disk, SSD or hard drive and boot into FreedomBox. Pick the image meant for pcduino3. - An alternative to downloading these images is to install Debian on the APU and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - - - Price: 89 USD - - - - LinkSprite - - - - - Full list of suppliers - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: AllWinner A20 SoC, 1GHz ARM Cortex A7 Dual Core - - - RAM: 1 GB - - - Storage: SD card, 4 GB onboard flash - - - Architecture: armhf - - - Ethernet: 10/100 Mbps - - - WiFi: Built-in WiFi requires non-free firmware, use a USB WiFi device instead - - - SATA: 1 SATA host socket - - -
-
- Non-Free Status - - - Non-free blobs required: No - - - WiFi: Requires non-free firmware - - - Works with stock Debian kernel: Yes - - - Boot Firmware: BROM (GPLV2+) - - -
-
- Known Issues - None -
-
-
- Pine A64+ - - - - - - - Pine 64+ - - - - Pine A64+ is an affordable single board computer with good performance. - Recommendation: Pine A64+ series of boards do not have built-in storage. If installing to a microSD card, it is recommended to choose a microSD card of class 10 or better with at least 8 GB of storage. -
- Similar Hardware - - - Both 1GB and 2GB versions of Pine A64+ are supported with the same FreedomBox image. - - - Pine A64-LTS is not supported yet. - - -
-
- Download - FreedomBox SD card images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. Pick the image meant for Pine A64+. - An alternative to downloading these images is to install Debian on the device and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using freedom-maker. -
-
- Availability - - - Price: 29 USD (for the 2 GB variant), 21 USD (for the 1 GB variant) - - - - Pine A64+ with 1 GB RAM at Pine64 Store - - - - - Pine A64+ with 2 GB RAM at Pine64 Store - - - -
-
- Hardware - - - Open Source Hardware (OSHW): No - - - CPU: Allwinner A64, Quad-core ARM Cortex A53 64-bit processor - - - RAM: 3 variants - 512 MB (not recommended), 1 GB and 2 GB (recommended) - - - Storage: SD card, eMMC (module sold separately but not tested with FreedomBox) - - - Architecture: arm64 - - - Ethernet: Gigabit Ethernet port - - - Battery: Supports battery backup using a Li-Po battery - - - WiFi: None, use a USB WiFi device - - - SATA: None - - -
-
- Non-Free Status - - - Non-free blobs required: No - - - WiFi: Not available - - - Works with stock Debian kernel: Yes - - -
-
- Known Issues - None -
-
-
- VirtualBox - - - - - - - VirtualBox - - - - This page will help you get started with using FreedomBox on a virtual machine using VirtualBox. While VirtualBox images are primarily used for testing and development, they can also be used for regular use if you have spare resources on one of your machines. This setup is useful if: - - - You don't own one of the supported hardware devices. - - - You don't use Debian GNU/Linux as your operating system. - - - You don't want to disturb your Debian installation to try out FreedomBox. - - - Prebuilt FreedomBox images for VirtualBox are routinely made available in VirtualBox's own VDI image file format. They contain a Debian GNU/Linux operating system and an installation of FreedomBox with all dependencies ready to run on any OS supported by VirtualBox (Windows, Linux, Macintosh, and Solaris). - A more adventurous alternative to downloading one of these images is to install Debian on VirtualBox and then install FreedomBox on it. - VirtualBox itself is available from (or your distribution's package manager). -
- Download - Follow the instructions on the download page to download and verify a VirtualBox image. The latest images are available on freedombox.org. -
-
- Creating a Virtual Machine - - - Decompress the downloaded VDI image (tool for Windows, Mac). - - - Create a new VM in the VirtualBox UI with OS type Linux and Version Debian (32/64-bit according to the downloaded image). - - - - - - - - - VirtualBox Name and OS dialog - - - - - - In the Hard disk dialog choose Use an existing virtual hard disk file and select the .vdi file you extracted in step 1. - - - - - - - - - VirtualBox Hard disk dialog - - - - - - When created, go to the virtual machine's Settings -> [Network] -> [Adapter 1]->[Attached to:] and choose the network type your want the machine to use according to the explanation in Network Configuration below. The recommended type is the Bridged adapter option, but be aware that this exposes the FreedomBox's services to your entire local network. - - - - - - - - - VirtualBox recommended network setting - - - - Note: It is important to make sure that you have provided the correct network interface in the above step. For example, if the virtual machine is running on a laptop connected to a Wi-Fi network, then the wireless interface (starts with wlp) must be chosen as shown in the screenshot. -
-
- First Boot - When satisfied with the VM settings click the start button in the VirtualBox UI and your new FreedomBox will boot. - The console of the VM will show the textual screen below when finished booting, from here most interaction with FreedomBox will be through the web interface in a browser. - - - - - - - FreedomBox console after booting successfully - - - - If everything went well so far, you should be able to access the web interface of FreedomBox by pointing a browser on the host machine to . - In case freedombox.local cannot be resolved, you need to find out your FreedomBox's IP address as described in Finding out the IP address of the virtual machine. Then access this IP from a web browser which is on the same network as the VM (for example, the host). If all is well, you are now presented with a welcome message and invited to complete the first boot process. - - - - - - - FreedomBox welcomes you to the first boot - - - - This mainly consist of creating an administrative user for the system. -
-
- Using - See the FreedomBox usage page for more details. - You can log in to the Debian GNU/Linux system as the user created during FreedomBox first boot on the VirtualBox console or remotely via ssh. - After logging in, you can become root with the command sudo su. -
-
- Build Image - If you wish to build your own images instead of downloading available images, it can be done using Freedom Maker. -
-
- Tips & Troubleshooting -
- Network Configuration - VirtualBox provides many types of networking options. Each has its advantages and disadvantages. For more information about how various networking types work in VirtualBox, see VirtualBox's networking documentation. - For a simple setup, it is recommended that you use a single network interface in your guest machine. This will make the first boot script automatically configure that interface as an internal network with automatic network configuration. Inside the guest machine, the networking is configured automatically and all the services are made available on this network interface. For more information on how networks are configured by default in FreedomBox, see Networks section. - What remains is to make those services available to the host machine or to other machines in the network. You must then choose one of the following types of networking for the network interface on your guest machine. To set a particular type of network for the guest's network adapter, go to the guest VM's settings then the network options and then select the adapter you wish to configure. There, set the network type from the available list of networks. - - - First and the recommended option is to use the Bridged type of network. This option exposes the guest machine to the same network that host network is connected to. The guest obtains network configuration information from a router or DHCP server on the network. The guest will appear as just another machine in the network. A major advantage of this of setup is that the host and all other machines in the network will be able to access the services provided by guest without requiring any further setup. The only drawback of this approach is that if the host is not connected to any network, the guest's network will remain unconfigured making it inaccessible even from the host. - - - Second method is Host only type of networking. With a guest's network interface configured in this manner, it will only be accessible from the host machine. The guest will not able access any other machine but the host, so you do not have internet access on the guest. All services on the guest are available to the host machine without any configuration such as port forwarding. - - - The third option is to use the NAT type of network. This the networking type that VirtualBox assigns to a freshly created virtual machine. This option works even when host is not connected to any network. The guest is automatically configured and is able to access the internet and local networks that host is able to connect to. However, the services provided by the guest require port forwarding configuration setup to be available outside. - To configure this go to VM settings -> [Network] -> [Adapter] -> [Port Forwarding]. Map a port such as 2222 from host to guest port 22 and you will be able to ssh into FreedomBox from host machine as follows: - - Map 4443 on host to 443 on the guest. This make FreedomBox HTTPS service available on host using the URL You will need to add a mapping for each such services from host to guest. - - - The final option is to create two network interfaces, one host only and one NAT type. This way you can access the guest without any additional configuration, and you have internet access on the guest. The guest will be invisible to any other machines on the network. - - - Summary of various network types: - - - - - - - - - - - - - - - - - Guest accessible from other machines - - - - - Guest accessible from host - - - - - Works without port forwarding - - - - - Works without host connected to network - - - - - Guest has internet access - - - - - - - Bridged - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - Host only - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - {X} - - - - - - - - - NAT - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - NAT and Host - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - -
-
- Finding out the IP address of the virtual machine - This depends on the network configuration you chose. With a bridged adapter, your virtual machine gets its IP address from the DHCP server of your network, most likely of your Router. You can try the first couple of IP addresses or check your router web interface for a list of connected devices. - If you chose host-only adapter, the IP address is assigned by the DHCP server of your VirtualBox network. In the VirtualBox Manager, go to File -> Preferences -> Network -> Host-only Networks. You can see and edit the DHCP address range there, typically you get assigned addresses close to the Lower Address Bound. - Another possibility of finding the IP address is to login via the VirtualBox Manager (or similar software). The FreedomBox images do not have any default user accounts, so you need to set an initial user and password using the passwd-in-image script. - See also QuickStart for instructions on how to scan your network to discover the IP of the VM. -
-
- Networking Problems with macchanger - The package macchanger can cause network problems with VirtualBox. If you have a valid IP address on your guest's host network adapter (like 192.168.56.101) but are not able to ping or access the host (like 192.168.56.1), try uninstalling macchanger: - - You might have to manually remove the script /etc/network/if-prep-up/macchanger. If Debian complains about unmet dependencies when you use a package manager (apt-get, aptitude, dpkg), try to remove 'macchanger' from the dependencies of 'freedombox-setup' in the file /var/lib/dpkg/status. -
-
- Mounting Images Locally - If you want to mount images locally, use the following to copy built images off the VirtualBox: - -
-
- Fixing the time after suspend and resume - The virtual machine loses the correct time/date after suspending and resuming. One way to fix this is to create a cron-job that restarts the time service ntp. You can add a crontab entry as root to restart ntp every 15 minutes by typing 'crontab -e' and adding this line: - - Do not restart this service too often as this increases the load of publicly and freely available NTP servers. -
-
- UUID collision in VB - Whenever this happens VirtualBox shows following error message: Cannot register the hard disk A with UUID ... because a hard disk B with UUID ... already exists in the media registry - Creating several VMs from the same image causes collisions due to ID's (hostname, IP, UUID, etc) that are expected to be universally unique. Most can be handeled operating the running VM. But VirtualBox complains before that (at the very creation of the VM) about the hard disk's UUID. This is usual stuff when you develop/test e.g. FreedomBox. - You can change a clone's UUID in the terminal as follows: - -
-
-
-
- Debian - FreedomBox is a pure blend of Debian. This means that all the work on FreedomBox is available in Debian as packages. It also means that any machine running Debian can be turned into a FreedomBox. - This page describes the process of installing FreedomBox on a Debian system. Currently, FreedomBox works in Debian Stable (Buster), Testing (Bullseye), and Unstable (Sid). - - - Use a fresh Debian installation - - Installing FreedomBox changes your Debian system in many important ways. This includes installing a firewall and regenerating server certificates. It is hence recommended that you install FreedomBox on a fresh Debian installation instead of an existing setup. - - - - Console/GUI logins for non-admin users will be disabled - - After FreedomBox is fully setup, your system will no longer allow users not belonging to the admin group to log in to the system via console, secure shell (SSH) or graphical login. This behaviour can be disabled from the Security page. Use the administrator account created during FreedomBox first boot for console logins and add further user accounts to admin group, if necessary. - -
- Installing on Debian 10.0 (Buster) or newer - Check the Troubleshooting section below, for any tips or workarounds that might help during the install. - - - Install Debian 10.0 (Buster), or Unstable (Sid) on your hardware. - - - Update your package list. - - - - Install freedombox package. - - - - The "DEBIAN_FRONTEND=noninteractive" will avoid several configuration prompts that would otherwise appear during the install. - - - - - During the installation, you will be provided a secret key that needs to be entered during the initial configuration process. Note this down. The secret can also be read at a later time from the file /var/lib/plinth/firstboot-wizard-secret. - - - You can start using FreedomBox. During initial wizard, you will need to enter the secret noted above. - - -
-
- Installing on Debian 9 (Stretch) - Check the Troubleshooting section below, for any tips or workarounds that might help during the install. - - - Install Debian 9 (Stretch) on your hardware. - - - Update your package list. - - - - Install freedombox-setup package. - - - - The "DEBIAN_FRONTEND=noninteractive" will avoid several configuration prompts that would otherwise appear during the install. - - - - - Run FreedomBox setup program. This installs further packages and sets up basic configuration. - - You may have to clear your existing network configuration. See Troubleshooting note #2 below. - - - Reboot the system. This is necessary to trigger the first-run script. - - - - After the system boots up, wait for it to reboot again. The first-run scripts sets up a few things and initiates a reboot. - - - After the second reboot you can start using FreedomBox. - - -
-
- Tips and Troubleshooting - - - There is a bug in policykit-1 package that causes errors and hangs during installation of freedombox-setup package. This bug is only applicable to Debian 9 (Stretch) and older. A workaround is to first install policykit-1 package and then reboot. After that, follow the above setup procedure. - - - - FreedomBox uses NetworkManager to manage network configuration. If you have configured your network interfaces using Debian installer or by editing /etc/network/interfaces, FreedomBox will not manage those interfaces. (See bug #797614.) To let FreedomBox/NetworkManager manage your network interfaces, edit the /etc/network/interfaces manually and ensure that it contains only the following: - - If you have already completed the setup process without doing this step, you will need to clear out the /etc/network/interfaces file keeping only the above lines. Then perform a reboot. On Debian 9 (Stretch), after this network connections configured by the setup step above will configure your network. Network interfaces will then be in the internal or external firewall zone. This is essential for the FreedomBox's web interface to be reachable from other machines in the network. You can tweak network manager connections with the nmtui command if you wish. - - - FreedomBox will use an automatically configured IP address by default. You can assign a static IP address if necessary. Network configuration changes can be done using FreedomBox web interface or by using the nmtui or nmcli commands. nmcli can be used as follows: - - - - ..with the block capitals and somedomain.com replaced with your actual address, mask description, gateway and dns server details. - - -
-
-
- DreamPlug - - - - - - - DreamPlug - - - - - - Deprecated Hardware - - This hardware was supported earlier but is no longer supported. If you downloaded an earlier image and are running FreedomBox on this hardware, you will keep getting software updates. You can stay secure and up-to-date. However, no new images will be provided for this hardware. It is recommended that you migrate to newer, supported hardware using backup and restore. - - DreamPlug is the hardware for which FreedomBox has been originally targeted. FreedomBox images are built and tested for it. For using this device as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended. - You can find more support and discussion for DreamPlug on the official forum. - Recommendation: 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. -
- Download - FreedomBox SD card images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. See also instructions for using an internal micro-SD with DreamPlug. - An alternative to downloading these images is to install Debian on DreamPlug and then install FreedomBox on it. -
-
- Networking - The network port towards the middle of the box, is configured by FreedomBox to be an upstream Internet link. The remaining port is configured for a local computer to connect to. -
-
- Firmware - Note that the factory firmware configurations may vary between revisions of the hardware, and render some images incompatible. See the DreamPlug firmware page for information on what images are compatible and how to update your DreamPlug firmware. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Testing - Instructions on how to test this hardware are available. -
-
- Availability - - - Price: 159 USD - - - - DreamPlug manufacturer - - - - Reseller Spinifex in Australia - - -
-
- Hardware - - - Open Hardware: No - - - CPU: Marvell Kirkwood 88F6281 @ 1.2GHz - - - RAM: 512MB 16bit DDR2-800 MHz - - - Storage: 4 GB on board micro-SD - - - Architecture: armel - - - Ethernet: 2x 10/100/1000, RJ45 - - - WiFi: SD8787, 802.11 b/g/n - - - SATA: eSATA 2.0 port - - -
-
- Non-Free Status - - - Non-free blobs required: built-in WiFi - - - WiFi: no free WiFi drivers + firmware available - - - Works with stock Debian kernel: yes - - -
-
- Known Issues - - - WiFi does not work with free software. A separate USB WiFi device is recommended. - - -
-
-
- Raspberry Pi Model B+ - - - - - - - Raspberry Pi (Model B+) - - - - - - Deprecated Hardware - - This hardware was supported earlier but is no longer supported. If you downloaded an earlier image and are running FreedomBox on this hardware, you will keep getting software updates. You can stay secure and up-to-date. However, no new images will be provided for this hardware. It is recommended that you migrate to newer, supported hardware using backup and restore. - - Raspberry Pi (Model B+) is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. FreedomBox images are built and tested for it. For using this board as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended. - Note: The Debian architecture used for this device is armel. This means floating point computations are done in software and most operations are slower than what Raspberry Pi is capable of. - Recommendation: 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. -
- Download - FreedomBox SD card images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - - - Price: 35 USD - - - - List of official distributors - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: ARM1176JZF-S (ARMv6k) 700 MHz - - - RAM: 512 MB - - - Storage: MicroSD card slot - - - Architecture: armel - - - Ethernet: 10/100, RJ45 - - - WiFi: None, use a USB WiFi device - - - SATA: None - - -
-
- Non-Free Status - - - Non-free blobs required: boot firmware - - - WiFi: Not available - - - Works with stock Debian kernel: No - - -
-
- Known Issues - - - The Debian architecture used for this device is armel. This means floating point computations are done in software and generally most operations are slower than what Raspberry Pi is capable of. - - -
-
-
- Raspberry Pi 2 Model B - - - - - - - Raspberry Pi 2 - - - - Raspberry Pi 2 (Model B ) is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi Model B+ with much faster processor and more RAM. FreedomBox images are built and tested for it. For using this board as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended. - Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the Quick Start page to access and control your FreedomBox from network. - Recommendation: 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. -
- Download - FreedomBox SD card images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - - - Price: 35 USD - - - - List of official distributors - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: 900 MHz quad-core ARM Cortex-A7 - - - RAM: 1 GB - - - Storage: MicroSD card slot - - - Architecture: armhf - - - Ethernet: 10/100, RJ45 - - - WiFi: None, use a USB WiFi device - - - SATA: None - - -
-
- Non-Free Status - - - Non-free blobs required: boot firmware - - - WiFi: Not available - - - Works with stock Debian kernel: Yes - - -
-
-
- Raspberry Pi 3 Model B - - - - - - - Raspberry Pi 3 Model B - - - - Raspberry Pi 3 Model B is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi 2 Model B with a 64-bit processor and on-board Wi-Fi. A FreedomBox "testing" image is available for Raspberry Pi 3 Model B. For using this board as FreedomBox, a USB WiFi device, that does not require non-free firmware, is recommended instead of the on-board Wi-Fi. - Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the Quick Start page to access and control your FreedomBox from network. - Recommendation: 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. -
- Download - FreedomBox SD card images for this hardware are available. Download the "testing" image for Raspberry Pi 3 Model B. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. Use the target 'raspberry3' with distribution 'testing' to build the image for this board. -
-
- Availability - - - Price: 35 USD - - - - List of official distributors - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: 1.2GHz 64-bit quad-core ARMv8 CPU - - - RAM: 1 GB - - - Storage: MicroSD card slot - - - Architecture: armhf - - - Ethernet: 10/100, RJ45 - - - WiFi: 802.11n but requires non-free firmware, instead use a USB WiFi device - - - SATA: None - - -
-
- Non-Free Status - - - Non-free blobs required: boot firmware - - - WiFi: Requires non-free firmware - - - Works with stock Debian kernel: Yes - - -
-
-
- Raspberry Pi 3 Model B+ - - - - - - - Raspberry Pi 3 Model B+ - - - - Raspberry Pi 3 Model B+ is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi 3 Model B with better Ethernet and a 5Ghz Wi-Fi. A FreedomBox "testing" image is available for Raspberry Pi 3 Model B+. For using this board as FreedomBox, a USB WiFi device, that does not require non-free firmware, is recommended instead of the on-board Wi-Fi. - Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the Quick Start page to access and control your FreedomBox from network. - Recommendation: 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. -
- Download - FreedomBox SD card images for this hardware are available. Download the "testing" image for Raspberry Pi 3 Model B+. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. Use the target 'raspberry3-b-plus' with distribution 'testing' to build the image for this board. -
-
- Availability - - - Price: 35 USD - - - - List of official distributors - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: 1.4GHz 64-bit quad-core ARMv8 CPU - - - RAM: 1 GB - - - Storage: MicroSD card slot - - - Architecture: armhf - - - Ethernet: 10/100/1000, RJ45 - - - WiFi: 802.11ac but requires non-free firmware, instead use a USB WiFi device - - - SATA: None - - -
-
- Non-Free Status - - - Non-free blobs required: boot firmware - - - WiFi: Requires non-free firmware - - - Works with stock Debian kernel: Yes - - -
-
-
- USB Wi-Fi - FreedomBox works on many single board computers. However, many of these boards do not have built-in Wi-Fi capabilities. Even when Wi-Fi capability is available, non-free proprietary firmware is required to make them work. - A solution to the problem is to plug-in a USB Wi-Fi device into one of the available USB ports. There are many such devices available which do not require non-free firmware to work. The following is a list of such devices that work with FreedomBox devices. Some devices based on these chips have tested to work well with FreedomBox including functions such as access point mode. - - - - Devices with Atheros AR7010 chip - - - - - Devices with Atheros AR9271 chip - - - -
- Firmware Installation - The free firmware for these devices is not packaged in Debian yet. You can manually download and install the firmware as follows: - -
-
- Resources - - - - Debian Wiki on WiFi drivers - - - - - Wikipedia: Comparison of open-source Linux wireless network drivers - - - - - WikiDevi: database of computer hardware - - - -
-
-
- Release Notes - The following are the release notes for each FreedomBox version. -
- FreedomBox 20.12 (2020-06-29) -
- Highlights - - - apt: Recover from errors before installing apps or updating system - - - apache: Add strict content security policy, sandbox and other security headers - - - storage: Allow ejecting SATA disks - - - configuration: Allow changes using .d drop-in files - - -
-
- Other Changes - - - configuration: Move default configuration into source code - - - configuration: Read from multiple locations in /etc/ and /usr/share/ - - - debian: Add ssl-cert and nscd as proper dependencies - - - frontpage: Allow adding shotcuts using .d drop-in files - - - frontpage: Read shortcuts from multiple locations in /etc/, /usr/share and /var/lib - - - locale: Update translations for Czech, Danish, French, German, Russian, Spanish, Swedish, Telugu, Turkish - - - storage: Automount system disks without partition table but ignore all loopback devices - - - storage: Allow ejecting SATA disks - - - storage: Show only physical disks and not all mount points - - - upgrades: Skip enabling backports on testing and unstable - - - upgrades: Show more logs - - - ui: Show a spinner and disable button on form submit - - -
-
-
- FreedomBox 20.11 (2020-06-15) -
- Top Highlight - - - locale: Add new translation for Arabic (Saudi Arabia) - - -
-
- Other Changes - - - javascript: Remove use of Turbolinks library - - - locale: Update translations for French, Norwegian Bokmål, German, Swedish, Polish, and Spanish - - - matrixsynapse: Handle upgrade to versions 1.15.x - - - upgrades: Avoid manual update interruption when upgrading freedombox package - - - upgrades: Don't enable backports on Debian derivatives - - -
-
-
- FreedomBox 20.10 (2020-06-01) -
- Top Highlights - - - pagekite: Fix expired certificates causing connection failures - - - tor: Fix problems with running a relay - - -
-
- Other Changes - - - backups: Add optional field - Name - - - cockpit: Promote for advanced storage/firewalld/networking ops - - - firewall: Don't show tun interface in internal zone warning - - - firewall: Mention that internal services are available over VPN - - - ikiwiki: Enable 'attachment' plugin by default - - - locale: Update translations for Spanish, French, Russian, Norwegian Bokmål, Czech, Hungarian, and Greek - - - minidlna: Add link to manual page - - - minidlna: Fix internationalization for name of the app - - - mldonkey: Add app to freedombox-share group - - - openvpn: Use app toggle button and common app view - - - radicale: Fix link in description to clients - - - samba: Add clients information - - - templates: Fix setup state check - - - users: Avoid error when user's groups cannot be parsed - - -
-
-
- FreedomBox 20.9 (2020-05-18) -
- Top Highlights - - - performance: Add app for system monitoring - - - upgrades: Restart services and system when needed after upgrades - - - System restart will happen at 02:00 local time - - - - -
-
- Other Changes - - - bind: Add service alias for bind9 -> named - - - firewall: Reload firewalld so it works with newly installed services - - - first_setup: Fix regression with logo not showing - - - locale: Update translations for Norwegian Bokmål, German, Swedish, Spanish, and Russian - - - mediawiki: Stop jobrunner during backup/restore - - - minidlna: Stop service during backup/restore - - - mumble: Stop service during backup/restore - - - package: Fix error log when checking if package manager is busy - - - performance: Launch the Cockpit graphs directly if possible - - - quassel: Fix stopping service during backup/restore - - - quassel: Use systemd sandboxing features - - - samba: Change description to Network File Storage - - - snapshot: Fix issues with restore and delete - - - snapshot: Set as essential module - - - storage: Auto-mount disks, notify of failing disks - - - tor: Fix stopping service during backup/restore - - -
-
-
- FreedomBox 20.8 (2020-05-04) - - - syncthing: Add service to freedombox-share group - - - users: When adding service to sharing group, only restart if already running - - - datetime: Ignore time synchronization service in containers and virtual machines - - - minidlna: Make app installable inside unprivileged container - - - web_server: Suppress warnings that static directories don't exist - - - debian: Remove unused timer - - - static: Use SVG logo during first wizard welcome step - - - static: Reduce the size of the background noise image - - - setup.py: Don't install/ship .po files - - - static: Don't ship visual design file and unused images - - - all: Update links to repository and project page - - - coturn: Add app to manage Coturn TURN/STUN server - - - mediawiki: Partial fix for installing on testing - - - datetime: Disable diagnostics when no tests are available - - - data: Print hostname and IP addresses before console login - - - snapshot: Fix message when not available - - - snapshot: Fix title - - - mumble: Add Mumla to the list of clients - - - locale: Update translations for Spanish, Telugu, Russian, German, French, and Swedish - - -
-
- FreedomBox 20.7 (2020-04-20) - - - matrixsynapse: Fix initial installation and upgrade from backports - - - gitweb: Improve error handling when creating repository - - - locale: Update translations for French, Serbian, and Telugu - - -
-
- FreedomBox 20.6.1 (2020-04-11) - - - users: Restore line of help text that was accidentally dropped - - - debian: Add firmware-ath9k-htc to Recommends - - - gitweb: Use proper ellipsis char when showing clone progress - - - locale: Update translations for Norwegian Bokmål, German, French, Portuguese, Italian, Russian, and Serbian - - -
-
- FreedomBox 20.6 (2020-04-06) - - - app: Ensure toggle buttons work independently of configuration form - - - networks, monkeysphere: Make styling more specific to avoid interference - - - syncthing: Update description to mention 'syncthing' group - - - radicale: Support upgrade up to any 2.x version - - - packages: Hold freedombox package during package installs - - - users: Add component for managing users and groups - - - app: Fix grammar in developer documentation string - - - ikiwiki: Disable public edits of blog pages - - - ikiwiki: Add moderation of blog comments - - - firewalld: Support upgrade up to any 0.8.x version - - - infinoted: Fix permissions of sync directory - - - locale: Added Serbian translation - - - locale: Update translations for Russian, French, German, Czech, Italian, Hindi, Telugu, and Spanish - - -
-
- FreedomBox 20.5.1 (2020-03-26) - - - networks: Update label wording in topology form - - - jsxc: Fix issue with serving static files - - - debian: Separate binary packages for each language manual - - - locale: Update translations for Norwegian Bokmål and German - - -
-
- FreedomBox 20.5 (2020-03-23) - - - app: Fix description block in app header - - - pagekite: Don't signal new domain on init if app is disabled - - - pagekite: Don't attempt to notify about domain if app is disabled - - - pagekite: Remove app enabled checking from getting configuration - - - pagekite: On enable/disable, add/remove domain from names module - - - pagekite: Fix an error message in custom services form - - - matrixsynapse: Handle release of matrix-synapse 1.11 - - - setup: Fix regression to force-upgrade caused by Info changes - - - pagekite: Don't allow non-unique custom services - - - index: Reintroduce clients button in front page - - - upgrades: Don't ship apt backport preferences file - - - upgrades: Use internal scheduler instead of systemd timer - - - shadowsocks: Change default configuration - - - shadowsocks: Fix incorrect setting of state directory - - - shadowsocks: When editing configuration, don't re-enable - - - mediawiki: Don't allow anonymous edits - - - names: Fix Local Network Domain is not shown - - - shadowshocks: Fix setting configuration on Buster - - - locale: Update translations for Swedish, Spanish, and French - - -
-
- FreedomBox 20.4 (2020-03-09) - - - apache: Handle transition to php 7.4 - - - app: Fix showing app name in port forwarding information - - - apps: Do not show status block if service is running - - - i2p: New style app page layout - - - locale: Update translations for French, Telugu, Spanish, and Swedish - - - networks: Add first boot step for network topology wizard - - - networks: Add form for network topology - - - networks: Don't show router wizard if not behind a router - - - networks, firewall: Support newer version of policykit - - - networks: Fixes for networks wizards access and user experience - - - networks: If topology wizard is skipped, skip router wizard too - - - networks: Show router wizard before Internet connection type wizard - - - plinth: Increase sqlite busy timeout from default 5s to 30s - - - quassel: Fix unable to disable application without choosing a domain name - - - shadowsocks: Move user settings to state directory - - - storage: Directory selection form improvements - - - transmission: Allow to submit download directory if it is creatable - - - upgrades: Clean apt cache every week - - - views: Improve template security - - -
-
- FreedomBox 20.3 (2020-02-24) - - - apps: Update style for toggle button - - - apps: Drop border shadow for app icon in mobile view - - - apps: Show short description as secondary title - - - apps: Remove css filters and glow from app icons - - - cards: Remove the transition delay on hover effect - - - system: Implement new style for cards - - - framework: Generate secret key (existing sessions will get logged out) - - - framework: Cleanup expired sessions every week - - - networks: Add setting for internet connection type - - - networks: Ask about internet connection type during setup - - - shadowsocks: Fix shadowsocks not able to start - - - jsxc: Bypass issue with stronghold to get the app working again - - - monkeysphere: Fix regression with reading Apache configuration - - - help: Fix attribute on download manual button - - - firewall: Improve speed of some operations using DBus API - - - css: Add missing license identifier on some CSS files - - - deluge: Use safer method for editing configuration - - - deluge: More reliable initial configuration setup - - - samba: Add link to manual page - - - searx: Update search engines for 0.16.0 - - - openvpn: Fix spelling for Tunnelblick - - - bind: Show served domains - - - Update translations for German, Swedish, Italian, Spanish, Norwegian Bokmål, Hungarian, Polish, and French - - -
-
- FreedomBox 20.2 (2020-02-10) - - - networks: Support virtual Ethernet (veth) devices - - - diagnostics: Show firewall service status - - - storage: Show disks if FreedomBox is running in an unprivileged container - - - service: Stop service not before but after disabling it - - - users: Use more precise username validation - - - sso, users: Turn off autocapitalization on the username field - - - help: Fix anchor hidden under navbar - - - searx: Fix installation issue for 0.16.0 - - - firewall: Show Run Diagnostics button in app - - - glib: Introduce method to schedule an operation at regular intervals - - - notification: Show a drop down from main navbar for notifications - - - storage: Show low disk space warning using notifications API - - - upgrades: Show notification when FreedomBox is updated - - - security: Add Sandbox Coverage to report page - - - matrixsynapse: Enable systemd sandboxing - - - locale: Update translations for Telugu, French, Norwegian Bokmål, German, Spanish, and Swedish - - -
-
- FreedomBox 20.1 (2020-01-27) - - - deluge: Allow to set a download directory - - - deluge: Fix installation failure on slow machine - - - storage: Make external disk mounts accessible to other users - - - gitweb: Add link to the manual page - - - style: Fix incorrect margins for containers in mobile view - - - style: Fix responsiveness for app header - - - network: Fix activating connections that don't have real devices - - - wireguard: Add WireGuard VPN app - - - networks: Add router configuration page - - - networks: Add first boot step for router config helper - - - bind: Enable sandboxing for bind service - - - locale: Updated translations for Dutch, Norwegian Bokmål, German, Spanish, Swedish, French, and Greek - - -
-
- FreedomBox 20.0 (2020-01-13) - - - samba: Improve speed of actions - - - deluge: Manage deluged service and connect automatically from web interface - - - openvpn: Enable support for communication among all clients - - - storage: Ignore errors resizing partition during initial setup - - - storage: Make partition resizing work with parted 3.3 - - - debian: Add powermgmt-base as recommended package - - - openvpn: Enable IPv6 for server and client outside the tunnel - - - networks: Fix crashing when accessing network manager D-Bus API - - - mediawiki: Use a mobile-friendly skin by default - - - mediawiki: Allow admin to set default skin - - - matrixsynapse: Allow upgrade to 1.8.* - - - security: Add explanation of sandboxing - - - Update translations for Greek, German, Swedish, Hungarian, Norwegian Bokmål, and French - - -
-
- FreedomBox 19.24 (2019-12-30) - - - app: Fix JavaScript doesn't run on first visit - - - samba: Add private shares - - - firewall: Support upgrading firewalld to 0.8 - - - deluge: Add systemd sandboxing features - - - infinoted: Add systemd sandboxing features - - - storage: Add systemd sandboxing features to udiskie service - - - upgrades: Add systemd sandboxing features to repository setup service - - - security: List whether each app is sandboxed - - - mediawiki: Avoid delay in update script - - - diagnostics: Use new component based API for all diagnostic tests - - - minidlna: Fix showing clients information - - - mediawiki: Fix problem with session cache failing logins - - - locale: Update translations for French, German, Swedish, Greek, Hungarian, Norwegian Bokmål, and Dutch - - -
-
- FreedomBox 19.23 (2019-12-16) - - - minidlna: New app for MiniDLNA (Simple Media Server) - - - apps: Show app icons in app pages - - - apps: Implement responsive layout for app pages - - - samba: Recursively set open share directory permissions - - - transmission: Add directory selection form - - - mumble: Add option to set SuperUser password - - - cockpit: Extend apps description with access info - - - cockpit: Add list of valid urls to access the app - - - Update translations for French, German, Spanish, Portuguese, and Swedish - - -
-
- FreedomBox 19.22 (2019-12-02) - - - samba: Add new app for Samba file sharing - - - pagekite: Remove tabs in the configuration page - - - openvpn: Fix text with manual link - - - pagekite: Show existing services only if there are any - - - pagekite: Move Custom Services under Configuration - - - pagekite: Use the new app toggle button - - - openvpn: Add client apps - - - backups: Fix title not appearing - - - diagnostics: Don't run on disabled modules - - - apps: Remove link to webapps in app descriptions - - - interface: Fix error with app toggle input - - - templates: Add toolbar for apps - - - toolbar: Move diagnostics button into dropdown menu - - - ssh: Fix Avahi SFTP service file - - - diagnostics: Fix IPv6 failures - - - matrix-synapse: Fix installation of 1.5 from buster-backports - - - app: Fix javascript constant redeclaration error - - - ikiwiki: Move the create button to manage section - - - gitweb: Move create button into manage section - - - networks: Move actions button into connection section - - - users: Move create button into users section - - - locale: Update translations for French, German, and Swedish - - -
-
- FreedomBox 19.21 (2019-11-18) - - - gitweb: Allow to import from a remote repository - - - interface: Disable turbolinks on links that don't point to /plinth/... - - - backups: Show proper error when SSH server is not reachable - - - tor: Rename "Hidden Service" to "Onion Service" - - - ejabberd: Handle case where domain name is not set - - - tahoe: Mark Tahoe-LAFS as an advanced app - - - searx: Set safe_search to Moderate by default - - - backups: Make verify ssh host page string translatable - - - backups: Simplify SSH fingerprint verification command - - - doc: Fix unavailability of manual images - - - tor: Fix port diagnostics by correcting port data type - - - tor: Expect obfs service to be also available on IPv6 - - - tor: Listen on IPv6 for OrPort - - - clients: implement launch button feature - - - apps: Implement toggle button in apps pages - - - Update translations for German, Hungarian, Swedish, Norwegian Bokmål, French, Polish - - -
-
- FreedomBox 19.20 (2019-11-04) - - - doc: Add Spanish manual - - - ssh: Add option to disable password authentication - - - sharing: Fix wrong links on Apache2 directory index page - - - gitweb: Set correct access rights after enabling application - - - gitweb: Fix links leading to blank page - - - gitweb: Set proper access after restoration of a backup - - - snapshot: Sort snapshot list from newest to oldest - - - infinoted: Add missing manual page link - - - backups: Fix typo - - - Update translations for German, Spanish, Swedish, Czech, French, Norwegian Bokmål, Hungarian - - -
-
- FreedomBox 19.19 (2019-10-21) - - - gitweb: New app for simple git hosting - - - ikiwiki: Allow full Unicode text in wiki/blog title names - - - users: reload Apache2 to flush LDAP cache after user operations - - - ssh: Show server fingerprints in SSH page - - - frontpage: Show public shortcuts to all users regardless of group - - - ikiwiki: Remove extra create button when no wiki/blog is present - - - quassel: Add Let's Encrypt component for certificates - - - Update translations for Czech, French, Bulgarian, Dutch, German, and Norwegian Bokmål - - -
-
- FreedomBox 19.18 (2019-10-07) - - - diagnostics: Ensure that exceptions are reported as failures - - - users: Rearrange UI to match with other apps - - - upgrades, ikiwiki, networks, backups: Replace page tabs with buttons - - - dynamicdns, i2p, pagekite, snapshot: Cleanup page templates - - - deluge: Support deluge 2 by starting it properly - - - minetest: Remove mod-torches no longer available in testing/unstable - - - security: Add past vulnerabilities count, move report to new page - - - Update translations for Spanish, Norwegian Bokmål, German - - -
-
- FreedomBox 19.17 (2019-09-23) - - - firstboot: Add new help menu to firstboot navbar - - - firstboot: Hide left menu during first boot as intended - - - Update translations for Chinese (Simplified) and Czech - - - Fix tests for letsencrypt and tor - - -
-
- FreedomBox 19.16 (2019-09-09) - - - backups: Allow adding backup repositories on multiple disks - - - help: Add buttons for contribute, support, and feedback - - - action_utils: Workaround problem with setting debconf answers - - - views: Fix failure in redirecting from language selection page - - - manual: Move PDF download link to HTML manual page - - - help: Convert help icon in the navbar to dropdown - - - ejabberd: Fix listen port configuration for ejabberd 19.x - - - cockpit, ejabberd: Prevent restart on freedombox startup - - - ejabberd: Perform host/domain name operations only when installed - - - logging: Improve formatting and reduce noise - - - translations: Update Hungarian, German, Italian, French, and Norwegian Bokmål - - -
-
- FreedomBox 19.15 (2019-08-26) - - - security: Hide vulnerability table by default - - - names: Perform better layout of domain names table on small screens - - - cockpit: Apply domain name changes immediately - - - ejabberd: Prevent processing empty domain name - - - config: Send hostname change signal only after fully processing it - - - letsencrypt: Don't try to obtain certificates for .local domains - - - avahi: Expose .local domain as a proper domain - - - cockpit: Make essential and install by default - - - tt-rss: Force upgrade to 18.12-1.1 and beyond - - - updates: Allow matrix-synapse 1.3 to be installed for buster users - - - javascript: Don't resubmit when refreshing the page - - - storage: Fix regression with restoring backups with storage - - - matrix-synapse: Use recommended reverse proxy configuration - - - Update translations for German, Hungarian, and Norwegian Bokmål - - -
-
- FreedomBox 19.14 (2019-08-12) - - - storage: Handle all device paths during eject - - - storage: Fix incorrect internationalization when throwing an error - - - upgrades: Use collapsible-button style for logs - - - firewall: Allow automatic upgrade to 0.7.x - - - upgrades: Handle release info change - - - frontpage: Fix regression with loading custom shortcuts - - - names: Add dynamic domain name - - - names: Add button to configure each type of name - - - names: Update page layout for clearer presentation - - - names: Introduce new API for domain name handling - - - api: Fix regression with listing only enabled apps in mobile app - - - Update translations for Czech, Hungarian, French, Chinese (Simplified), Turkish, Polish, and Norwegian Bokmål - - -
-
- FreedomBox 19.13 (2019-07-29) - - - backups: Make UI more consistent with other apps - - - backups: Make backup location tables collapsible - - - Updated translations for Chinese (Simplified), German, and Norwegian Bokmål - - - help: Show security notice when backports are in use - - - security: Show vulnerability counts - - -
-
- FreedomBox 19.12 (2019-07-22) - - - sharing: Allow directories to be publicly shared - - - backups: Add option to select/deselect all apps for backup or restore - - - dbus: Allow plinth user to own FreedomBox DBus service - - - letsencrypt: Simplify renewal hooks implementation - - - cockpit: Don't handle domains if app is not installed - - - dynamicdns: Send domain added signal properly during init - - - ejabberd: Backup and restore TLS certificates - - - Started new Galician translation on Weblate - - - Updated translations for Czech, Norwegian Bokmål, Hungarian, Spanish, Telugu, Chinese (Simplified), German, Turkish, and Russian - - -
-
- FreedomBox 19.2.2 (2019-07-17) - This release does not contain any functional changes, but fixes test failures when building the package. -
-
- FreedomBox 19.2.1 (2019-07-09) - This is a bugfix release for 19.2. - - - dbus: Allow plinth user to own FreedomBox DBus service - - -
-
- FreedomBox 19.11 (2019-07-08) - - - backups: Fixes to issues while adding SSH remotes: - - - Improve UX of adding ssh remote - - - Avoid creating duplicate SSH remotes - - - Fix issue with repository not being initialized - - - Verify SSH hostkey before mounting - - - Allow SSH directory paths with : in them - - - Require passphrase for encryption in add repository form - - - Don't send passphrase on the command line - - - Un-mount SSH repositories before deleting them - - - - - matrixsynapse: Fix missing translation mark - - - Started new Greek translation on Weblate - - - Updated translations for Chinese (Simplified), Hungarian, Spanish, and Russian - - -
-
- FreedomBox 19.10 (2019-06-24) - - - syncthing: Open firewall ports for listening and discovery - - - radicale: Workaround issue with creating log directory - - - Update translations for Turkish, German, Czech, Norwegian Bokmål, and Portuguese - - - Introduce components for firewall, webserver, uwsgi, and daemons - - -
-
- FreedomBox 19.9 (2019-06-10) - - - config: Add option to show advanced apps, which are hidden by default - - - monkeysphere: Hide by default - - - searx: Add option to allow public access to the application - - - Introduce component architecture for apps, with components for menus and shortcuts - - - Start new translation for Bulgarian - - - Update translations for Turkish and Norwegian Bokmål - - -
-
- FreedomBox 19.8 (2019-05-27) - - - Switch to using SVG icons for all apps. - - - Updated translations for Czech, Norwegian Bokmål, Hungarian, German, Turkish, and Spanish. - - -
-
- FreedomBox 19.7 (2019-05-13) - - - i2p: Include default favorites. - - - Separate enabled and disabled apps. - - - Display port forwarding info for apps. - - - Added Slovenian translation. - - - Updated translations for Dutch, German, Hungarian, Norwegian Bokmål, Polish, Portuguese, Telugu. - - -
-
- FreedomBox 19.6 (2019-04-29) - - - i2p: Enable new application for I2P Anonymity Network. - - - Updated translations for Czech, German, Norwegian Bokmål, and Turkish. - - - letsencrypt: Provide link to configure domain if not configured. - - - firewall: Show port numbers and types. - - -
-
- FreedomBox 19.5 (2019-04-15) - - - storage: Use more reliable method to list disks and disk space usage. - - - Updated translations for Russian and German. - - -
-
- FreedomBox 19.4 (2019-04-01) - - - clients: Open web app in a new browser tab - - - matrix-synapse: Change client diagnostics url - - - minetest: Fix duplicate domain names being displayed in UI - - - storage: Do not show an eject button on /boot partitions - - - letsencrypt: Call letsencrypt manage_hooks with correct arguments - - - dynamicdns: Install module by default - - - storage: Don't check type of the disk for / and /boot - - - storage: Don't log error when checking if partition is expandable - - - Updated translations for Norwegian Bokmål, Czech, German, Hungarian, Spanish, German, and Russian. - - -
-
- FreedomBox 19.3 (2019-03-18) - - - UI: Move tabs below descriptions. - - - firewall: Style heading - - - names: Add description - - - pagekite: Change heading text - - - ikiwiki: Consistent styling for delete warning page - - - main: Show service version in logs - - - setup: Organize data files into various apps - - - Updated translations for Czech, Hungarian, Norwegian Bokmål, Spanish, German, French, Italian, and Turkish. - - -
-
- FreedomBox 19.2 (2019-03-02) - - - config: Fix Ikiwiki entries not showing up as default apps - - - config: Migrate default app configuration to new conf file - - - config: Rename Default App to Webserver Home Page - - - config: Add option to use Apache's default home page as home page - - - config: Fix error when setting JSXC as the home page - - - Disable Coquelicot for Buster release - - - matrix-synapse: Fix LDAP login issue - - - config: Revert changes in freedombox.conf to avoid conffile prompt - - - openvpn: Migration from easy-rsa 2 to 3 for existing installations - - - tor: Use fixed 9001 port for relaying - - - package: Implement identifying packages that need conffile prompts - - - setup: Trigger force upgrade for app that implement it - - - bind: Handle conffile prompt during upgrade - - - apache: Pre-enable necessary apache modules - - - apache: Use cgid module instead of cgi - - - openvpn: Make frontpage shortcut appear after an upgrade - - - openvpn: Work around firewalld bug 919517 - - - firewalld: Implement upgrading from 0.4.x to 0.6.x - - - ttrss: Implement upgrade from 17.4 to 18.12 - - - radicale: Add description of web interface - - - ttrss: Add backup support - - - security: Migrate access config to new file - - - Updated translations for Czech, Hungarian, Norwegian Bokmål, Spanish, German, Telugu. - - -
-
- FreedomBox 19.1 (2019-02-14) - - - radicale: Increment module version to trigger upgrade handling - - - radicale: Remove obsolete diagnostics - - - radicale: Fix server URLs in client info - - - Updated translations for Czech, Norwegian Bokmål, and Spanish. - - - setup: Add option to handle configuration prompts during install - - - radicale: Simplify upgrading to newer packages - - - matrixsynapse: Use Let's Encrypt certificates - - -
-
- FreedomBox 19.0 (2019-02-09) - - - mldonkey: Add some more clients to the module page - - - mldonkey: Add to the description the three available front-ends - - - monkeysphere: Fix handling of multiple domains and keys - - - monkeysphere: Fix regression with reading new apache domain config - - - apache: Switch to mod_ssl from mod_gnutls - - - mldonkey: Enable app - - - upgrades: Fix priority for buster-backports version - - - upgrades: Fix premature adding of buster-backports sources - - - Updated translations for Czech, German, and Spanish - - - Switched to a new version number scheme: YY.N - - - YY is the year of release. - - - N is the release number within that year. - - - - -
-
- Version 0.49.1 (2019-02-07) - - - ui: Fix regression with configure button in home page. - - - backups: Rename 'Abort' buttons to 'Cancel'. - - - backups: Use icon for add repository button. - - - backups: Move subsubmenu below description. - - - backups: Add title and description to other pages. - - - backups: Add link to manual page. - - - backups: Fix styling for upload size warning. - - - backups: Increase timeout for SSH operations to 30 seconds. - - - letsencrypt: UI: Fix checkbox disabling. - - - datetime: Switch from chrony to systemd-timesyncd. - - - Updated translations for Czech, Norwegian Bokmål, and Spanish. - - -
-
- Version 0.49.0 (2019-02-05) - - - security: Update javascript for Content Security Policy. - - - help: Use correct package to determine available version. - - - repro: Disable app due to issues with Debian package. - - - ui: Fix regression with card icon style in front page. - - - js: Support full librejs compatibility. - - - js: Remove javascript license link from footer. - - - backups: Remove incorrectly set buffer size during download. - - - backups: Fix incomplete download archives. - - - backups: Improve performance of backup download. - - - radicale: Handle migration from 1.x to 2.x. - - - datetime: Switch from ntp to chrony. - - - backports: Add buster-backports to apt sources list. - - - Updated translations for Czech, Norwegian Bokmål, and Hungarian. - - -
-
- Version 0.48.0 (2019-01-28) - - - Updated translations for Czech, Hungarian, German, and Norwegian Bokmål. - - - UI improvements: - - - Fix top margin for content containers. - - - Fix setting width of card-list at various page sizes. - - - Show help nav item text when navbar is collapsed. - - - Hide restart/shutdown items when navbar is collapsed. - - - Compact pages on extra small screen sizes. - - - - - Backups improvements: - - - Add backup/restore support for syncthing and openvpn. - - - Upgrade apps before restoring them - - - Fix showing not-installed apps in create backup page - - - Automatically install required apps before restore. - - - Add a loader to the restore button to indicate progress. - - - - - Serve default favicon for apps that don't provide one. - - - radicale: Fix issue with configuration changes not applying. - - - storage: Fix false error message in log when visiting home page. - - - infinoted: Handle timeout issue when stopping daemon during setup. - - - matrix-synapse: Fix startup error caused by bind_address setting. - - - radicale: Avoid changes to conffile for radicale 2.x. - - - help: Fix showing status logs when an error occurs. - - - fail2ban: Enable bans for apache auth failures. - - - mldonkey: Initial work on new module for the eDonkey network. - - - Not available yet, due to bug in package. - - - - -
-
- Version 0.47.0 (2019-01-14) - - - Show Gujarati in the list of languages. - - - Replace glyphicons with forkawesome icons. - - - Snapshots: - - - Change configuration to avoid filling up disk. - - - Handle "Config in use" error. - - - Update descriptions and configuration options. - - - - - Firewall: Fix issue with transition from iptables. - - - Security: Switch to Argon2 password hash. - - - Cockpit: Add link to manual page and update description. - - - Radicale: Add initial support for radicale 2.x. - - - Setup: - - - Handle showing setup page after app completes installation. - - - Optimize installation in-progress checks and refresh time. - - - - -
-
- Version 0.46.0 (2018-12-31) - - - Updated translations for Czech, German, Spanish, Ukrainian, and Norwegian Bokmål. - - - Use systemd journal for logging. - - - Rename plinth binary package to "freedombox", and merge freedombox-setup package into it. - - -
-
- Version 0.45.0 (2018-12-17) - - - Storage: Merge list of removable media into existing table. - - - Backups: Allow remote backups to SSH servers using sshfs. - - - Backups: Removed asking for backup archive name. - - - Automatically handle future versions of PHP. - - - Updated translations for Hungarian, Czech, Spanish, Chinese (Simplified), Italian, Norwegian Bokmål, French, and German. - - -
-
- Version 0.44.0 (2018-12-03) - - - UI: Add card style and gray noise background to apps pages. - - - UI: Fix distortion of the client apps buttons. - - - ejabberd: Handle BOSH port change from TCP 5280 to 5443. - - - Minetest: Update mods list to available Debian packages. - - - Firewall: Use nftables instead of iptables. - - - Snapshots: Fix default snapshot listing. - - - Snapshots: Show description above either tab. - - - Snapshots: Allow snapshots to be selected for deletion. - - - Translations: Updated Czech, Norwegian Bokmål, Spanish, German, and Portuguese. - - -
-
- Version 0.43.0 (2018-11-19) - - - Backups improvements: - - - Allow backups to be downloaded directly, without export step. - - - Restore directly from uploaded backup. - - - Avoid error for apps with no data to backup. - - - Show free disk space on upload and restore page. - - - Do not limit maximum upload size. - - - - - openvpn: Migrate to easy-rsa 3 and fix setup issues. - - - Make single sign-on tickets valid for 12 hours. - - - Use consistent terminology for updates. - - - Updated translations for Czech and Portuguese. - - -
-
- Version 0.42.0 (2018-11-05) - - - Fix wrong color in mobile menu - - - snapshot: Fix broken snapshot management after snapper update - - - Enable backup/restore for tor, upgrades, monkeysphere, letsencrypt, tahoe - - - monkeysphere: Handle importing new OpenSSH format keys - - - udiskie: unmount drive as superuser - - - Updated translations for Telugu, Indonesian, and Italian - - -
-
- Version 0.41.0 (2018-10-22) - - - Enable backup/restore for datetime, deluge, avahi, backups, bind, security, snapshot, ssh, firewall, diagnostics, names, power, and storage. - - - snapshot: Fix issue with setting configuration. - - - backups: Fix backup archives ownership issue. - - - backups: Fix issue with showing exports from disks without labels. - - - backups: Don't rely on disk labels during export/restore. - - - backups: Fix downloading extracted archive files. - - - Updated translations for Norwegian Bokmål, French, Russian, and Spanish. - - -
-
- Version 0.40.0 (2018-10-08) - - - Backups - - - Enable backup/restore for mumble, privoxy, roundcube, searx, jsxc, coquelicot, transmission, quassel, shadowsocks, sharing, pagekite, and cockpit. - - - Allow backup archives to be downloaded/uploaded through browser. - - - mediawiki: Backup/restore settings as well as data. - - - - - User Interface - - - Change card text style and position. - - - Change maximum cards per row. - - - Add tint effect on card icons under "Apps". - - - - - mediawiki: Run update script for 1.31 upgrade. - - - customization: Show custom shortcuts on frontpage. - - - Updated translations for Norwegian Bokmål, Portuguese, Spanish, Czech, German, French, and Italian. - - -
-
- Version 0.39.0 (2018-09-24) - - - Updated translations for Hungarian and Norwegian Bokmål. - - - Merge Removable Media (udiskie) into Storage module. - - - Add Backups module for backing up apps data. - - -
-
- Version 0.38.0 (2018-09-10) - - - mediawiki: Enable SVG support for MediaWiki - - - upgrades: Clean up old kernel packages during automatic upgrades - - - Make the progress bar at the top of the page more visible. - - - Updated translations for Norwegian Bokmål, Czech, Russian, German, Hungarian, and Spanish. - - -
-
- Version 0.37.0 (2018-08-27) - - - Updated translations for Czech, Norwegian Bokmål, Russian, Spanish, Hungarian, and Dutch. - - - install: Use Post/Response/Get pattern for reloads. - - -
-
- Version 0.36.0 (2018-08-13) - - - Updated translations for Hindi, Spanish, Russian, Telugu, German, Hungarian, Czech, and French - - - ejabberd: Remove deprecated settings from already existing config files - - - mediawiki: Fix issue with re-installation - - - mediawiki: Enable Instant Commons - - - mediawiki: Fix images throwing 403s - - - turbolinks: Reload page using JavaScript - - - Add Lato woff2 fonts - - - Disable launch button for web client when not installed - - -
-
- Version 0.35.0 (2018-07-30) - - - configuration: Add an option to set a default app for FreedomBox. The root URL path (https://domainname/) will redirect to the selected app. - - - ejabberd: Remove deprecated iqdisc setting. To apply this fix, disable and then re-enable the Message Archive Management setting. - - - ejabberd: Replace logo with original version. - - - mediawiki: Enable short URLs, which look like https://domainname/mediawiki/ArticleName. - - - radicale: Clarify description for shared calendar/addressbook. - - - storage: Handle mount points with spaces. - - - udiskie: Add button to eject drives. - - - udiskie: Also show read-only filesystems. - - - udiskie: Remove internal networks warning. - - - udiskie: Show special message when no storage device available. - - - Add turbolinks library for smoother navigation. - - - Removed extra text from icons for mediawiki, radicale, and tahoe-lafs. - - - Updated translations for Russian, Spanish, Dutch, Hungarian, Hindi, Italian, Telugu, German, and Norwegian Bokmål. - - -
-
- Version 0.34.0 (2018-07-16) - - - Prompt for secret during firstboot welcome - - - (Does not apply to downloadable FreedomBox images, but only when installed using freedombox-setup package.) - - - - - Updated translations for Italian, Dutch, Hindi, Hungarian - - -
-
- Version 0.33.1 (2018-07-04) - - - Fix issue where editing a user would remove them from admin group - - - Updated translations for Hungarian, Czech, Spanish, Russian, Hindi - - -
-
- Version 0.33.0 (2018-07-02) - - - Updated translations for Hungarian, Norwegian Bokmål, Spanish, Russian, Czech, Hindi, Dutch, Italian - - - firewall: Display information that a service is internal only - - - users: Don't show Create User link to non-admin users - - - users: Redirect to users list on successful user creation - - - packages: Show button to refresh package lists when a package is not available for install - - - Only show front page shortcuts that a user is allowed to access - - - Restrict removal of last admin user - - - Use logos instead of icons in the apps page - - - udiskie: New module for automatic mounting of removable media - - -
-
- Version 0.32.0 (2018-06-18) - - - Apply new card based design - - - Fix client info table size and flickering - - - first-setup: Automatically expand root partition - - - mediawiki: Enable image uploads - - - mediawiki: Make private mode and public registrations mutually exclusive - - - mediawiki: Hide frontpage shortcut when private mode is enabled - - - Updated translations for Norwegian Bokmål, Czech, Spanish, Russian, Hindi, Telugu, Italian, Dutch, German, and Hungarian - - -
-
- Version 0.31.0 (2018-06-04) - - - Updated translations for Czech, Spanish, Russian, German, Italian, Hindi, Telugu, and Norwegian Bokmål - - - mediawiki: Added private mode option - - - users: Fix user permissions not being saved - - - users: internationalize a string - - - mediawiki: Run update script for 1.30 upgrade - - - shortcuts: Fix urls for ikiwiki shortcuts - - -
-
- Version 0.30.0 (2018-05-21) - - - Updated translations for Russian, Italian, Norwegian Bokmål, Hungarian, and Hindi - - - setup: Remove unavailable as a state in setup_helper - - -
-
- Version 0.29.1 (2018-05-08) - - - security: Fix issue with Plinth locked out from sudo - - - Updated translations for Czech and Spanish - - -
-
- Version 0.29.0 (2018-05-07) - - - security: Allow console login access to user plinth - - - Add an option to enable/disable public registrations in mediawiki - - - tt-rss: Skip the check for SELF_URL_PATH - - - searx: Fix issue with uwsgi crashing - - - Updated translations for Czech, Spanish, German, Norwegian Bokmål, and Italian - - -
-
- Version 0.28.0 (2018-04-23) - - - setup: disable install button for currently unavailable apps - - - Add locale for Lithuanian (lt) - - - Translation updates for Italian, Czech, Russian, Spanish, German, Norwegian Bokmål, Telugu, and Dutch - - -
-
- Version 0.27.0 (2018-04-09) - - - middleware: Skip 'installed' message for essential apps - - - users: Fix admin group appearing twice in permissions - - - apps: Fix app names and short descriptions not being translated - - - snapshots: Move manual page link to the index page - - - UI: Fix progress bar not appearing - - - snapshots: Fix for permissions issue when updating configuration - - - snapshots: Add option to enable/disable software installation snapshots - - - Translation updates for Italian, Czech, Russian, Spanish, Dutch, German, Norwegian Bokmål, and Ukrainian - - -
-
- Version 0.26.0 (2018-03-26) - - - snapshots: Update description - - - searx: Rewrite url from /searx to /searx/ - - - manual: Link to manual from each service - - - Workaround security issues in django-axes - - - apache: Only regenerate snake oil cert when needed - - - apache: Explicitly enable the latest version of PHP module - - - apache: Increase module version number to fix php7.2 - - - Update translations for Chinese (Simplified), Russian, Czech, German, Norwegian Bokmål, Hungarian, Spanish, and Italian - - -
-
- Version 0.25.0 (2018-03-12) - - - sharing: Add app for sharing disk folders. - - - ttrss: Update list of client apps. - - - infinoted: Allow setup to recover after timeout issue. - - - snapshots: Add configuration tab with settings for time-based snapshots. - - -
-
- Plinth v0.24.0 (2018-02-26) - - - Add file-sharing application Coquelicot. - - - Add metasearch engine application Searx. - - - Add locale for Hungarian (hu). - - - mediawiki: Allow shortcut to be publicly visible on front page. - - - clients: Add and correct Client Apps. - - - locale: Preferred language can be set in each user's profile. - - - locale: Anonymous users can select preferred language. - - - config: Remove language selection from config page. - - - matrixsynapse: Fix mail attribute for ldap login. - - -
-
- Plinth v0.23.0 (2018-02-12) - - - snapshots: Modify configurations to reduce disk usage. - - - snapshots: Skip currently active snapshot when deleting all snapshots. - - - jsxc: Use consistent url format. - - - sso: Increase timeout to 60 minutes. - - - theme: Change font from Helvetica to Lato. - - - Translation updates for Czech, German, Gujarati, and Telugu. - - -
-
- Plinth v0.22.0 (2018-01-30) - - - matrix-synapse: Make sure configuration file does not get corrupted. - - - tor: Show enabled status properly. - - - first_setup: Fix not showing admin user creation step. - - - Migrate from GitHub to Salsa - - - Migrate from CirceCI to GitLab CI on Salsa. - - - Translation updates for Czech, Dutch, Gujarati, Hindi, Russian and Telugu. - - - Started new translation for Ukrainian. - - -
-
- Plinth v0.21.0 (2018-01-15) - - - navigation bar: Change label from 'Configuration' to 'System'. - - - storage: Removed beta warning for expanding partition. - - - groups: Consistently show available user groups, even before applications are installed. - - - syncthing: Restrict administration to users in "syncthing" group. - - - help: Show menu on smaller screens also. - - - diagnostics: Enable the "Run Diagnostics" button when applications are enabled but not running. - - -
-
- Plinth v0.20.0 (2018-01-01) - - - bind: Don't use forwarders by default - - - ejabberd: Remove redundant button Client Apps - - - mediawiki: Add wiki application - - - users: Make sure first run actually works - - - bind: Add information about current utility - - -
-
- Plinth v0.19.0 (2017-12-18) - - - ejabberd: Use dynamic reload instead of restart when changing configuration. - - - manual: Make manual available as a PDF download. - - - minetest: Show domain information for users to connect to minetest. - - - snapshots: Add button to delete all snapshots. - - - snapshots: Add option to enable/disable automatic timeline snapshots. - - - users: Add groups for bit-torrent and feed-reader, available when these applications are installed. - - -
-
- Plinth v0.18.0 (2017-12-04) - - - Add Shadowsocks client with socks5 proxy. - - - Fix SSO regressions and conflict with captcha. - - - transmission: Fix sso not being enabled on upgrade. - - - avahi: Add service for FreedomBox discovery. - - - Add client information for modules. - - -
-
- Plinth v0.17.0 (2017-11-20) - - - transmission: Enable Single Sign On. - - - cockpit: Add short description to frontpage shortcut. - - - fail2ban: Fix spelling and sentence structure. - - -
-
- Plinth v0.16.0 (2017-11-06) -
- Added - - - Add mobile, web and desktop client info for modules. - - - Enable django SecurityMiddleware to improve security ratings. - - - cockpit: New module for server administration and web terminal. - - -
-
- Fixed - - - letsencrypt: Fix internal server error when obtaining a certificate. - - - ejabberd: Fix LDAP server entry in config file during setup. - - - jsxc: Fix outdated URLs for connecting to local ejabberd server. - - -
-
-
- Plinth v0.15.3 (2017-10-20) -
- Changed - - - Rename Disks to Storage. - - - Rename Snapshot to Storage Snapshots. - - - tt-rss: Enable API access by default. - - - Allow access to Plinth from outside the LAN. - - - matrix-synapse: Disable public registration by default. - - - power: Merge actions into the user dropdown. - - -
-
- Added - - - Add locales for Kannada (kn) and for Bengali (bn). - - - ejabberd: Use Let's Encrypt certificate, also across renewals. - - - matrix-synapse: Add enable/disable public registrations. - - - Add captcha validation on 3 failed attempts. - - - matrix-synapse: Enable LDAP integration. - - - letsencrypt: Automatically obtain and revoke SSL certificates. - - -
-
- Fixed - - - Fix front page label names. - - - Fix vertical alignment of shortcut icons. - - - storage: Fix issue with locales that use other decimal separators. - - - Make tt-rss api accessible using Apache basic auth. - - - letsencrypt: Handle case where current domain is empty. - - - Handle both admin and non-admin user names in update user template. - - -
-
-
- Plinth v0.15.2 (2017-09-24) -
- Added - - - letsencrypt: Show more info on cert validity status. - - - letsencrypt: Add option to delete certificates. - - - letsencrypt: Add option to let Plinth manage certbot's renewal hooks. - - - power: Warn if a package manager is running before shutdown/restart. - - - security: Install and manage fail2ban. - - - names: Include domain and services from dynamicdns. - - - disks: Add low disk space warning to system and disks page. - - - ssh: New application to manage SSH server. - - - Add api module to get enabled services and access info. - - - Add Django password validators. - - - ejabberd, ikiwiki, ttrss: Add user login descriptions. - - -
-
- Removed - - - diaspora: Disable for this release due to issues affecting package. - - - Remove help from navbar before firstboot complete. - - -
-
- Fixed - - - i18n: Don't use backslash-newline for wrapping long lines. - - - radicale: Update link to documentation. - - - sso: Upgrade crypto to 4096-bit RSA and SHA-512. - - - Users: Allow non-admin users to log out. - - -
-
- Changed - - - letsencrypt: Make Let's Encrypt an essential module. - - - UI: Make apps and configure pages responsive on small screens. - - - Make help accessible for logged-in non-admin users. - - -
-
-
- Plinth v0.15.0 (2017-07-01) - - - Added Tahoe-LAFS module for distributed file storage. - - - Added Diaspora* module for federated social networking. - - - Currently only available in "contrib" repository. - - - - - New Locales for Czech (cs) and Tamil (ta). - - - Added SSO using auth_pubtkt for Syncthing, TT-RSS, and the Repro admin panel. - - - If you are logged in to Plinth, you will be automatically logged in to these web apps. - - - - - ejabberd: Added option to enable/disable Message Archive Management. - - - help: Added Debian release name to about page. - - - firstboot: De-bloat first welcome screen. - - - Pinned footer to the bottom of the viewport. - - - disks: Restrict precision of reported available space on root partition. - - - diagnostics: Disable button if app/service is not running. - - - help: Only show help pages if user is logged in. - - - navbar: Moved logout to user drop-down and added a new power drop-down. - - - disks: Show disabled partition resize option if no space is available. - - - Added line break to titles to fix frontpage layout. - - - syncthing: Fixed typos and clarity in description. - - - firewall: Fix 500 error when firewalld is not running. - - - setup: Disable install/upgrade when dpkg/apt is running. - - - disks: Use information from lsblk for more accuracy. - - - datetime: Show timezone properly when it not in expected list. - - -
-
- Plinth v0.14.0 (2017-04) - - - tor: Added option to use upstream bridges. - - - openvpn: Added shortcut to front page, shown only when logged-in. - - - openvpn: Non-admin users can download their own profiles. - - - Added new locales for Hindi (hi) and Gujarati (gu). - - - Added Syncthing module for file synchronization. - - - Added Matrix Synapse as chat server with groups, audio and video. - - - Require admin access for all system configuration pages. - - - Changed appearance of topbar and footer. - - - openvpn: Regenerate user key or certificate if empty. - - - disks: Workaround issue in parted during resize. - - -
-
- Plinth v0.13.1 (2017-01-22) - - - Two new apps were added: - - - Gobby Server (infinoted) for collaborative editing of text documents - - - Domain Name Server (BIND), in system menu - - - - - Added JavaScript license web labels to provide partial support for LibreJS. - - - Added basic configuration form for Minetest server. - - - Added indicator to Help->About page if new Plinth version is available. - - - Show app logos on front page instead of generic icons. - - - Prevent anonymous users from accessing setup pages. - - - Split Chat Server (XMPP) app into Chat Server (ejabberd) and Chat Client (jsxc). - - -
-
- Plinth v0.12.0 (2016-12-08) - - - Open up RTP ports in the firewall for repro (SIP server). - - - Front page shortcuts for services show a Configure button in the details box for logged-in users. - - - Add mods packages to be installed with Minetest server. - - - Fix issue with reading Dynamic DNS status as non-root user. - - - After the hostname is changed, ensure the domain name is still set correctly. - - - Allow the domain name to be cleared, and properly set the configuration in this case. - - - On the Certificates (Let's Encrypt) page, show a more informative message when no domains are configured. - - - On the Chat Server (XMPP) page, show more clearly if domain is not set. - - - Apps that require login will not be shown on the front page, unless the user is logged in. - - - Show status block for News Feed Reader (Tiny Tiny RSS). - - - Change appearance of front page with larger icons and repositioned text. - - - Firewall page only lists services that have been setup. The port lists are collapsible under each service. - - - Support configuring IPv6 networks. - - - Make it less likely to accidentally delete the only Plinth user. - - - Updated to work with JSXC 3.0.0 (XMPP web client). - - -
-
- Plinth v0.11.0 (2016-09-29) - - - Added loading icon for additional busy operations. - - - Added basic front page with shortcuts to web apps, and information about enabled services. - - - networks: Add batctl as dependency, required for batman-adv mesh networking. - - - users: - - - Fixed checking restricted usernames. - - - Display error message if unable to set SSH keys. - - - Flush nscd cache after user operations to avoid some types of errors. - - - - - monkeysphere: - - - Adopted to using SHA256 fingerprints. - - - Sort items for consistent display. - - - Handle new uid format of gpg2. - - - Fixed handling of unavailable imported domains. - - - - - minetest: Fixed showing status block and diagnostics. - - - Fixed stretched favicon. - - - Switched base template from container-fluid to container. This will narrow the content area for larger displays. - - - Plinth is now able to run as "plinth" user instead of root user. - - - xmpp: Replaced jwchat with jsxc. - - - ikiwiki: Allow only alphanumerics in wiki/blog name to avoid invalid paths. - - -
-
- Plinth v0.10.0 (2016-08-21) - - - Updated Plinth to support Django 1.10. - - - Added a page to display recent status log from Plinth. It is accessible from the 500 error page. - - - Tor: Added options to toggle relay and bridge relay modes. - - - Radicale: Added access rights control. - - - Ikiwiki: Updated suggested packages. - - - Users and Groups: Fixed editing users without SSH keys. - - - Networks: Added basic support for configuring batman-adv mesh networking. - - - Networks: Fixed incorrect access for retrieving DNS entries. - - - New languages: - - - Persian (50% translated) - - - Indonesian (not started, contributions needed) - - - - - New modules added to Plinth: - - - Disks: Shows free space of mounted partitions, and allows expanding the root partition. - - - Security: Controls login restrictions. - - - Snapshots: Manages Btrfs snapshots. - - - - -
-
- Version 0.9.4 (2016-06-24) - - - Added Polish translation. - - - Fixed issue preventing access to Plinth on a non-standard port. - - - Dealt with ownCloud removal from Debian. The ownCloud page in Plinth will be hidden if it has not been setup. Otherwise, a warning is shown. - - - Fixed issue in Privoxy configuration. Two overlapping listen-addresses were configured, which prevented privoxy service from starting. - - - Fixed issue that could allow someone to start a module setup process without being logged in to Plinth. - - - Fixed issues with some diagnostic tests that would show false positive results. - - - Added check to Diagnostics to skip tests for modules that have not been setup. - - - Fixed some username checks that could cause errors when editing the user. - - - Added sorting of menu items per locale. - - - Moved Dynamic DNS and Pagekite from Applications to System Configuration. - - - Allowed setting IP for shared network connections. - - - Switched Dreamplug image from "non-free" to "free". This means that we no longer include the non-free firmware for the built-in wifi on Dreamplug. - - - Added the "userdir" module for the Apache web server. This allows users in the "admin" group to create a folder called "public_html" under their home folder, and to publicly share files placed in this folder. - - - New wiki and manual content licence: Creative Commons Attribution-ShareAlike 4.0 International (from June 13rd 2016). - - - Switched to using apt-get for module setup in Plinth. This fixes several issues that were seen during package installs. - - -
-
- Version 0.9 (2016-04-24) - - - Fixed Wi-Fi AP setup. - - - Prevent lockout of users in 'sudo' group after setup is complete. - - - Improved setup mechanism for Plinth modules. Allows users to see what a module is useful for, before doing the setup and package install. Also allows essential modules to be setup by default during FreedomBox install. - - - Added HTTPS certificates to Monkeysphere page. Reorganized so that multiple domains can be added to a key. - - - Added Radicale, a CalDAV and CardDAV server. - - - Added Minetest Server, a multiplayer infinite-world block sandbox. - - - Added Tiny Tiny RSS, a news feed reader. - - -
-
- Version 0.8 (2016-02-20) - - - Added Quassel, an IRC client that stays connected to IRC networks and can synchronize multiple frontends. - - - Improved first boot user interface. - - - Fixed Transmission RPC whitelist issue. - - - Added translations for Turkish, Chinese, and Russian. Fixed and updated translations in other languages. - - - Added Monkeysphere, which uses PGP web of trust for SSH host key verification. - - - Added Let's Encrypt, to obtain certificates for domains, so that browser certificate warnings can be avoided. - - - Added repro, a SIP server for audio and video calls. - - - Allow users to set their SSH public keys, so they can login over SSH without a password. - - -
-
- Version 0.7 (2015-12-13) - - - Translations! Full translations of the interface in Danish, Dutch, French, German and Norwegian Bokmål, and partial Telugu. - - - Support for OLinuXino A20 MICRO and LIME2 - - - New Plinth applications: OpenVPN, reStore - - - Improved first-boot experience - - - Many bugfixes and cleanups - - -
-
- Version 0.6 (2015-10-31) - - - New supported hardware target: Raspberry Pi 2 - - - New modules in Plinth: - - - Shaarli: Web application to manage and share bookmarks - - - Date & Time: Configure time zone and NTP service - - - Service Discovery: Configure Avahi service - - - - - Documentation revamp including new user manual and developer guide - - - Improved diagnostic tests, available in Plinth - - - Avoid unnecessary changes when installing on existing Debian system - - - Network configuration supports PPPoE connections - - - Debian packages can be download over Tor - - -
-
- Version 0.5 (2015-08-07) - - - New targets: CubieTruck, i386, amd64 - - - New apps in Plinth: Transmission, Dynamic DNS, Mumble, ikiwiki, Deluge, Roundcube, Privoxy - - - NetworkManager handles network configuration and can be manipulated through Plinth. - - - Software Upgrades (unattended-upgrades) module can upgrade the system, and enable automatic upgrades. - - - Plinth is now capable of installing ejabberd, jwchat, and privoxy, so they are not included in image but can be installed when needed. - - - User authentication through LDAP for SSH, XMPP (ejabberd), and ikiwiki. - - - Unit test suite is automatically run on Plinth upstream. This helps us catch at least some code errors before they are discovered by users! - - - New, simpler look for Plinth. - - - Performance improvements for Plinth. - - -
-
- Version 0.3 (2015-01-20) - - - Tor Bridges: All boxes now act as non-exit Tor bridges, routing traffic for the Tor network. - - - Firewall: firewall is on by default and is automatically managed. - - - Add BeagleBone support. We now have images for BeagleBone, RaspberryPi, VirtualBox i386/amd64, and DreamPlug. - - - Ability to enable and use Tor Hidden Services. Works with Ejabberd/JWChat and ownCloud services. - - - Enable Tor obfsproxy with scramblesuit. - - - Drop well-known root password (an account with sudo capabilities still exists for now but will be removed soon). - - - Switch to unstable as suite of choice for easier development. - - - Newer images are built with systemd by default (due to Debian change). - - - Install and operate firewall automatically (uses firewalld). - - - Major restructuring of Plinth UI using Python3, Django web development framework and Bootstrap3. Code quality is much better and UI is more polished. - - - Introduced packaging framework in Plinth UI for on-demand application installation. - - -
-
- Version 0.2 (2014-03-16) - - - Support for Raspberry Pi and VirtualBox (x86) in addition to the DreamPlug. - - - New Services: - - - Configuration Management UI. - - - Instant Messaging. - - - OwnCloud. - - - dnsmasq. - - - Low-Level Configuration Management. - - - Service Announcement. - - - LDAP Server. - - - LXC Support. - - - Source Packages. - - - - - The privoxy setup is now the default from Debian. - - -
-
- Version 0.1 (2013-02-26) - - - First FreedomBox software release (0.1 image, developer release). - - - Full hardware support in Debian - - - Support for DreamPlug. - - - Basic software tools selected as common working environment: - - - User interface system "plinth" - - - Cryptography tools: gpg or "monkeysphere" - - - Box-to-box communication design: Freedom-buddy (uses TOR network) - - - Web cleaning: "privoxy-freedombox". - - - - -
-
-
-
- Contributing - From code, design and translation to spreading the word and donation, here are a number of ways to contribute to FreedomBox. -
- Quick Links - - FreedomBox Developer Manual - - - Progress calls - - - TODO page - - - Donation page - -
-
- Welcome to newcomers - As a new contributor, you are more than welcome to introduce yourself to others on the FreedomBox discussion forum, mailing list or on the #freedombox IRC channel. In addition to make useful contacts, you can start reporting bugs and translate (see below) the wiki website and the FreedomBox web interface. -
-
- Development priorities - Upcoming priorities are discussed on an regular basis. You find the progress of the FreedomBox Service with its priorities here: issues board and milestones. - Please check next progress calls to keep yourself on track and meet members of the release team. A TODO page aggregates the complete list of the items to work on for FreedomBox. -
-
- Contributions needed -
- Add an Application - If you are a developer and wish to see an application available in FreedomBox, you can contribute by adding the application to FreedomBox. See the FreedomBox Developer Manual. -
-
- Bugs - List of bugs, feature requests and improvements are tracked on the FreedomBox issue tracker. In addition to that, see list of bugs to help out the Debian package we depend on. Also see the FreedomBox packaging team's dashboard for status of various packages that we use. -
-
- Code - If you are a developer, you can contribute code to one of the sub-projects of FreedomBox. Step-by-step process of contributing code to FreedomBox is available. - - - FreedomBox Service: a web interface to administer the functions of FreedomBox. - - - Freedom Maker: a script to build FreedomBox disk images for use on various hardware devices or virtual machines. - - - You can pickup a task from one of the TODO lists. The individual page project pages contain information availabily of the code, how to build and TODO lists. -
-
- Design -
- User Experience Design - If you are a user experience designer, you can help FreedomBox with the following items: - - - UI experience for the FreedomBox Service web interface - - - Web design for freedombox.org, freedomboxfoundation.org and the wiki pages - - - Logo and branding (we currently have an identity manual and logos) - - - Possible designs for custom FreedomBox cases on single board computers - - - - User experience design - - - -
-
- Technical Design - FreedomBox needs your technical expertise to devise implementation plans for upcoming features. You can contribute to the discussion on various technical design and implementation aspects of FreedomBox. See FreedomBox discussion forum's development category. -
-
-
- Donate - The FreedomBox Foundation is a 501(c)(3) federal nonprofit corporation with recognition from the IRS. FreedomBox project is run by volunteers. You can help the project financially by donating via PayPal, Bitcoin or by mailing a check. Please see the donation page for details on how to donate. -
-
- Document: User Manual, Website and Wiki - FreedomBox needs better documentation for users and contributors. FreedomBox manual is prepared by aggregating various pages on the wiki and exporting to various formats. The manual is then used in FreedomBox Service and elsewhere. - If you wish to contribute to the FreedomBox wiki (and consequently the FreedomBox manual), you can create a wiki account and start editing. - For contributing to the website please start a discussion on the FreedomBox discussion forum's development category. -
-
- Quality Assurance - - - FreedomBox already runs on many platforms and it is not possible for developers to test all possible platforms. If you have one of the supported hardware you can help with testing FreedomBox on the platform. - - - When an application is made available on FreedomBox, not all of its functionality is tested in the real world by developer doing the work. Deploying the application and testing it will help ensure high quality applications in FreedomBox. - - - See the quality assurance page for a basic list of test cases to check for and information on reporting bugs. -
-
- Localization - All text visible to users of FreedomBox needs to be localized to various languages. This translation work includes: - - - Web Interface for FreedomBox - - - FreedomBox documentation - - - FreedomBox wiki, website and foundation website. - - - Django web framework that FreedomBox uses. - - - Individual applications that FreedomBox exposes to users. - - - You can contribute to the localization effort using the web-based tool at Weblate or directly to the source tree via Salsa. - If you wish to see FreedomBox available for one of your languages, please start a discussion on the FreedomBox discussion forum's development category to work with others translating for that language. - For more information, please visit the FreedomBox translators page. -
-
- Spread the Word - Speak to your family, friends, local community or at global conferences about the importance of FreedomBox. To be a successful project we need many more participants, be it users or contributors. Write about your efforts at the talks page and on the wiki. -
-
-
-
- Developer Guide - The FreedomBox Developer Manual provides a step by step tutorial for writing apps for FreedomBox and an API reference. It is available from docs.freedombox.org. -
-
- Hacking - FreedomBox consists of two main projects: - - - FreedomBox Service (Plinth), the web interface - - - Freedom Maker, a script to build disk images for various hardware - - -
- FreedomBox Service (Plinth) - FreedomBox Service (Plinth) is a web interface to administer the functions of the FreedomBox. - FreedomBox Service is Free Software under GNU Affero General Public License version 3 or (at your option) a later version. -
- Using - - - FreedomBox Service comes installed with all FreedomBox images. You can download FreedomBox images and run on any of the supported hardware. Then, you can access FreedomBox Service by visiting the URL or . - - - If you are on a Debian box, you may install FreedomBox Service from Debian package archive. Currently, only Buster (stable), Bullseye (testing), and Sid (unstable) are supported. To install FreedomBox Service run: - - - - - - You can also get FreedomBox Service from its Git repository and install from source. - - -
-
- Screenshots - - - - - - - - Home Page - - - - - - - - - - Apps Page - - - - - - - - - - System Page - - - - - - - - - - - - Enabling Tor Onion Services - - - - - - - - - - Newsfeed from anywhere - - - - - - - - - - Email Client - - - - - - - - - - - - Manual Pages - - - - - - - - - - About Page - - - - -
-
- Support - You may ask for support on - - - - The discussion forum - - - - - The mailing list - - - - - #freedombox IRC channel - - - - - FreedomBox Matrix channel - - - -
-
- Contributing - We are looking for help to improve FreedomBox Service. You can contribute to FreedomBox Service by not just by coding but also by translating, documenting, designing, packaging and providing support. - - - Instructions on how to contribute code are available. - - - The primary Git repository is hosted at FreedomBox Salsa Page. - - - Instructions for installing from source and hacking the source are available. - - - List of bugs, TODO items and feature requests are available on the issue tracker. - - - Before contributing to FreedomBox Service code, you need understand Python and Django on top which it is built. - - - You can request for development assistance on the discussion forum, the mailing list or the #freedombox IRC channel. - - -
- Debian Package - - - FreedomBox Service is packaged for Debian. FreedomBox Service is a native package and packaging source code is part of the main package source code. - - - Issues related to packaging are listed on Debian BTS. - - -
-
-
-
- Freedom Maker - Freedom Maker is a script to build FreedomBox disk images for use on various hardware devices or virtual machines. - Freedom Maker can currently build FreedomBox disk images for the following: - - - - A20-OlinuXino-LIME - - - - - A20-OlinuXino-LIME2 - - - - - A20-OLinuXino-MICRO - - - - - Banana Pro - - - - - BeagleBone - - - - - Cubieboard2 - - - - - Cubietruck - - - - - pcDuino3 - - - - - Raspberry Pi 2 - - - - - Raspberry Pi 3 Model B - - - - - Raspberry Pi 3 Model B+ - - - - - VirtualBox - - - - - QEMU - - - - AMD64 (x86-64) Machines, X86 Machines and other virtual machines (using raw disk images) - - - If a hardware platform is capable of running Debian, it should not be too much effort adopt Freedom Maker to create FreedomBox images for the platform. - Freedom Maker is Free Software licensed under GNU General Public License version 3 or (at your option) a later version. -
- Building FreedomBox Images - - - You can get Freedom Maker from its Git repository and follow the instructions in the README to build a FreedomBox image. - - -
-
- Support - You may ask for support on - - - - The discussion forum - - - - - The mailing list - - - - - #freedombox IRC channel - - - - - FreedomBox Matrix channel - - - -
-
- Contributing - We are looking for help to improve Freedom Maker. - - - Instructions on how to contribute code are available. - - - Freedom Maker is hosted at FreedomBox Salsa Project. The primary Git repository is hosted there. - - - You can contribute to FreedomBox by adding support for more hardware platforms. Freedom Maker can be easily adopted to newer platforms if they already support running Debian. - - - You can create and test images with Freedom Maker regularly to test for new features and check for regressions. - - - List of bugs, TODO items and feature requests are available on the issue tracker. - - - You can request for development assistance on the discussion forum, the mailing list or the #freedombox IRC channel. - - -
-
-
-
- Tell people around you - - - - FreedomBox - - - - - FreedomBox in the Press - - - - - Conferences - - - - - Talks and presentations - - - - Available Material Slides and other raw material - - - - - - Facebook - - - - - Twitter - - - - - Mastodon - - - - - Debconf11 Videos - - - -
-
diff --git a/doc/manual/en/images/Coturn-icon_en_V01.png b/doc/manual/en/images/Coturn-icon_en_V01.png new file mode 100644 index 000000000..1b45b6761 Binary files /dev/null and b/doc/manual/en/images/Coturn-icon_en_V01.png differ diff --git a/doc/manual/en/images/Deluge-icon_en_V01.png b/doc/manual/en/images/Deluge-icon_en_V01.png new file mode 100644 index 000000000..dfad91f02 Binary files /dev/null and b/doc/manual/en/images/Deluge-icon_en_V01.png differ diff --git a/doc/manual/en/images/Disks.png b/doc/manual/en/images/Disks.png deleted file mode 100644 index eff9983cb..000000000 Binary files a/doc/manual/en/images/Disks.png and /dev/null differ diff --git a/doc/manual/en/images/Gitweb-icon_en_V01.png b/doc/manual/en/images/Gitweb-icon_en_V01.png new file mode 100644 index 000000000..b0c00abbe Binary files /dev/null and b/doc/manual/en/images/Gitweb-icon_en_V01.png differ diff --git a/doc/manual/en/images/I2P-icon_en_V01.png b/doc/manual/en/images/I2P-icon_en_V01.png new file mode 100644 index 000000000..ef23a9d93 Binary files /dev/null and b/doc/manual/en/images/I2P-icon_en_V01.png differ diff --git a/doc/manual/en/images/Ikiwiki-icon_en_V01.png b/doc/manual/en/images/Ikiwiki-icon_en_V01.png new file mode 100644 index 000000000..c8dfe0ae5 Binary files /dev/null and b/doc/manual/en/images/Ikiwiki-icon_en_V01.png differ diff --git a/doc/manual/en/images/Infinoted-icon_en_V01.png b/doc/manual/en/images/Infinoted-icon_en_V01.png new file mode 100644 index 000000000..317f73162 Binary files /dev/null and b/doc/manual/en/images/Infinoted-icon_en_V01.png differ diff --git a/doc/manual/en/images/JSXC-KO_en_V01.png b/doc/manual/en/images/JSXC-KO_en_V01.png new file mode 100644 index 000000000..dffa7646c Binary files /dev/null and b/doc/manual/en/images/JSXC-KO_en_V01.png differ diff --git a/doc/manual/en/images/JSXC-icon_en_V01.png b/doc/manual/en/images/JSXC-icon_en_V01.png new file mode 100644 index 000000000..62b32439e Binary files /dev/null and b/doc/manual/en/images/JSXC-icon_en_V01.png differ diff --git a/doc/manual/en/images/JSXC-ok_en_V01.png b/doc/manual/en/images/JSXC-ok_en_V01.png new file mode 100644 index 000000000..cb1365110 Binary files /dev/null and b/doc/manual/en/images/JSXC-ok_en_V01.png differ diff --git a/doc/manual/en/images/MLDonkey-icon_en_V01.png b/doc/manual/en/images/MLDonkey-icon_en_V01.png new file mode 100644 index 000000000..0d2a77245 Binary files /dev/null and b/doc/manual/en/images/MLDonkey-icon_en_V01.png differ diff --git a/doc/manual/en/images/Matrix-icon_en_V01.png b/doc/manual/en/images/Matrix-icon_en_V01.png new file mode 100644 index 000000000..56fc7bc2e Binary files /dev/null and b/doc/manual/en/images/Matrix-icon_en_V01.png differ diff --git a/doc/manual/en/images/MediaWiki-icon_en_V01.png b/doc/manual/en/images/MediaWiki-icon_en_V01.png new file mode 100644 index 000000000..bae1cca6d Binary files /dev/null and b/doc/manual/en/images/MediaWiki-icon_en_V01.png differ diff --git a/doc/manual/en/images/Minetest-icon_en_V01.png b/doc/manual/en/images/Minetest-icon_en_V01.png new file mode 100644 index 000000000..85ae3cc9d Binary files /dev/null and b/doc/manual/en/images/Minetest-icon_en_V01.png differ diff --git a/doc/manual/en/images/MiniDLNA-icon_en_V01.png b/doc/manual/en/images/MiniDLNA-icon_en_V01.png new file mode 100644 index 000000000..3af61ea2a Binary files /dev/null and b/doc/manual/en/images/MiniDLNA-icon_en_V01.png differ diff --git a/doc/manual/en/images/Mumble-icon_en_V01.png b/doc/manual/en/images/Mumble-icon_en_V01.png new file mode 100644 index 000000000..c1eff5f88 Binary files /dev/null and b/doc/manual/en/images/Mumble-icon_en_V01.png differ diff --git a/doc/manual/en/images/OpenVPN-icon_en_V01.png b/doc/manual/en/images/OpenVPN-icon_en_V01.png new file mode 100644 index 000000000..26f76b652 Binary files /dev/null and b/doc/manual/en/images/OpenVPN-icon_en_V01.png differ diff --git a/doc/manual/en/images/Privoxy-icon_en_V01.png b/doc/manual/en/images/Privoxy-icon_en_V01.png new file mode 100644 index 000000000..86d6eaa40 Binary files /dev/null and b/doc/manual/en/images/Privoxy-icon_en_V01.png differ diff --git a/doc/manual/en/images/Quassel-icon_en_V02.png b/doc/manual/en/images/Quassel-icon_en_V02.png new file mode 100644 index 000000000..4bd208102 Binary files /dev/null and b/doc/manual/en/images/Quassel-icon_en_V02.png differ diff --git a/doc/manual/en/images/Quassel_PortForwarding.png b/doc/manual/en/images/Quassel_PortForwarding.png deleted file mode 100644 index 0559fa8f4..000000000 Binary files a/doc/manual/en/images/Quassel_PortForwarding.png and /dev/null differ diff --git a/doc/manual/en/images/Radicale-icon_en_V01.png b/doc/manual/en/images/Radicale-icon_en_V01.png new file mode 100644 index 000000000..49c1bed3b Binary files /dev/null and b/doc/manual/en/images/Radicale-icon_en_V01.png differ diff --git a/doc/manual/en/images/Roundcube-icon_en_V01.png b/doc/manual/en/images/Roundcube-icon_en_V01.png new file mode 100644 index 000000000..66a47a271 Binary files /dev/null and b/doc/manual/en/images/Roundcube-icon_en_V01.png differ diff --git a/doc/manual/en/images/Samba-icon_en_V01.png b/doc/manual/en/images/Samba-icon_en_V01.png new file mode 100644 index 000000000..6094fda41 Binary files /dev/null and b/doc/manual/en/images/Samba-icon_en_V01.png differ diff --git a/doc/manual/en/images/Searx-icon_en_V01.png b/doc/manual/en/images/Searx-icon_en_V01.png new file mode 100644 index 000000000..c4e65a667 Binary files /dev/null and b/doc/manual/en/images/Searx-icon_en_V01.png differ diff --git a/doc/manual/en/images/Shadowsocks-icon_en_V01.png b/doc/manual/en/images/Shadowsocks-icon_en_V01.png new file mode 100644 index 000000000..1d0eaa067 Binary files /dev/null and b/doc/manual/en/images/Shadowsocks-icon_en_V01.png differ diff --git a/doc/manual/en/images/Sharing-icon_en_V01.png b/doc/manual/en/images/Sharing-icon_en_V01.png new file mode 100644 index 000000000..ccb5a3530 Binary files /dev/null and b/doc/manual/en/images/Sharing-icon_en_V01.png differ diff --git a/doc/manual/en/images/Syncthing-icon_en_V01.png b/doc/manual/en/images/Syncthing-icon_en_V01.png new file mode 100644 index 000000000..42c0c9fba Binary files /dev/null and b/doc/manual/en/images/Syncthing-icon_en_V01.png differ diff --git a/doc/manual/en/images/TinyTinyRSS-icon_en_V01.png b/doc/manual/en/images/TinyTinyRSS-icon_en_V01.png new file mode 100644 index 000000000..b65d03938 Binary files /dev/null and b/doc/manual/en/images/TinyTinyRSS-icon_en_V01.png differ diff --git a/doc/manual/en/images/Tor-icon_en_V01.png b/doc/manual/en/images/Tor-icon_en_V01.png new file mode 100644 index 000000000..2e42348aa Binary files /dev/null and b/doc/manual/en/images/Tor-icon_en_V01.png differ diff --git a/doc/manual/en/images/Transmission-icon_en_V01.png b/doc/manual/en/images/Transmission-icon_en_V01.png new file mode 100644 index 000000000..f09930d5c Binary files /dev/null and b/doc/manual/en/images/Transmission-icon_en_V01.png differ diff --git a/doc/manual/en/images/WireGuard-icon_en_V01.png b/doc/manual/en/images/WireGuard-icon_en_V01.png new file mode 100644 index 000000000..b68834818 Binary files /dev/null and b/doc/manual/en/images/WireGuard-icon_en_V01.png differ diff --git a/doc/manual/en/images/about.png b/doc/manual/en/images/about.png deleted file mode 100644 index 5bda5544d..000000000 Binary files a/doc/manual/en/images/about.png and /dev/null differ diff --git a/doc/manual/en/images/add_security_exception.png b/doc/manual/en/images/add_security_exception.png deleted file mode 100644 index 8b4414c1a..000000000 Binary files a/doc/manual/en/images/add_security_exception.png and /dev/null differ diff --git a/doc/manual/en/images/apps.png b/doc/manual/en/images/apps.png deleted file mode 100644 index 6fe3e50b3..000000000 Binary files a/doc/manual/en/images/apps.png and /dev/null differ diff --git a/doc/manual/en/images/banana-pro.jpg b/doc/manual/en/images/banana-pro.jpg new file mode 100644 index 000000000..44746826b Binary files /dev/null and b/doc/manual/en/images/banana-pro.jpg differ diff --git a/doc/manual/en/images/bepasty-icon_en_V01.png b/doc/manual/en/images/bepasty-icon_en_V01.png new file mode 100644 index 000000000..ff37d49ef Binary files /dev/null and b/doc/manual/en/images/bepasty-icon_en_V01.png differ diff --git a/doc/manual/en/images/bepasty_logged_in_page.png b/doc/manual/en/images/bepasty_logged_in_page.png new file mode 100644 index 000000000..d7812e080 Binary files /dev/null and b/doc/manual/en/images/bepasty_logged_in_page.png differ diff --git a/doc/manual/en/images/cubieboard2.jpg b/doc/manual/en/images/cubieboard2.jpg new file mode 100644 index 000000000..69f023563 Binary files /dev/null and b/doc/manual/en/images/cubieboard2.jpg differ diff --git a/doc/manual/en/images/dreamplug.jpg b/doc/manual/en/images/dreamplug.jpg deleted file mode 100644 index f24f7d78a..000000000 Binary files a/doc/manual/en/images/dreamplug.jpg and /dev/null differ diff --git a/doc/manual/en/images/dreamplug_thumb.jpg b/doc/manual/en/images/dreamplug_thumb.jpg deleted file mode 100644 index 5c81fbd47..000000000 Binary files a/doc/manual/en/images/dreamplug_thumb.jpg and /dev/null differ diff --git a/doc/manual/en/images/ejabberd-icon_en_V01.png b/doc/manual/en/images/ejabberd-icon_en_V01.png new file mode 100644 index 000000000..790e8b0cd Binary files /dev/null and b/doc/manual/en/images/ejabberd-icon_en_V01.png differ diff --git a/doc/manual/en/images/emailclient.png b/doc/manual/en/images/emailclient.png deleted file mode 100644 index 67cf1ba09..000000000 Binary files a/doc/manual/en/images/emailclient.png and /dev/null differ diff --git a/doc/manual/en/images/freedombox-frontpage-2018-02-26.png b/doc/manual/en/images/freedombox-frontpage-2018-02-26.png deleted file mode 100644 index 170d94871..000000000 Binary files a/doc/manual/en/images/freedombox-frontpage-2018-02-26.png and /dev/null differ diff --git a/doc/manual/en/images/freedombox-frontpage-2018-06-19.png b/doc/manual/en/images/freedombox-frontpage-2018-06-19.png deleted file mode 100644 index 8ab984803..000000000 Binary files a/doc/manual/en/images/freedombox-frontpage-2018-06-19.png and /dev/null differ diff --git a/doc/manual/en/images/frontpage.png b/doc/manual/en/images/frontpage.png deleted file mode 100644 index 878b78a1d..000000000 Binary files a/doc/manual/en/images/frontpage.png and /dev/null differ diff --git a/doc/manual/en/images/help.png b/doc/manual/en/images/help.png deleted file mode 100644 index 783944396..000000000 Binary files a/doc/manual/en/images/help.png and /dev/null differ diff --git a/doc/manual/en/images/icons/alert.png b/doc/manual/en/images/icons/alert.png new file mode 100644 index 000000000..b576a6bee Binary files /dev/null and b/doc/manual/en/images/icons/alert.png differ diff --git a/doc/manual/en/images/icons/checkmark.png b/doc/manual/en/images/icons/checkmark.png new file mode 100644 index 000000000..61a0701e2 Binary files /dev/null and b/doc/manual/en/images/icons/checkmark.png differ diff --git a/doc/manual/en/images/icons/icon-error.png b/doc/manual/en/images/icons/icon-error.png new file mode 100644 index 000000000..c874dc47b Binary files /dev/null and b/doc/manual/en/images/icons/icon-error.png differ diff --git a/doc/manual/en/images/icons/icon-info.png b/doc/manual/en/images/icons/icon-info.png new file mode 100644 index 000000000..93a0fdc71 Binary files /dev/null and b/doc/manual/en/images/icons/icon-info.png differ diff --git a/doc/manual/en/images/icons/star_off.png b/doc/manual/en/images/icons/star_off.png new file mode 100644 index 000000000..edbbd536e Binary files /dev/null and b/doc/manual/en/images/icons/star_off.png differ diff --git a/doc/manual/en/images/icons/star_on.png b/doc/manual/en/images/icons/star_on.png new file mode 100644 index 000000000..e223dd41c Binary files /dev/null and b/doc/manual/en/images/icons/star_on.png differ diff --git a/doc/manual/en/images/newsfeed.png b/doc/manual/en/images/newsfeed.png deleted file mode 100644 index 541b31c9e..000000000 Binary files a/doc/manual/en/images/newsfeed.png and /dev/null differ diff --git a/doc/manual/en/images/one-week.png b/doc/manual/en/images/one-week.png deleted file mode 100644 index 40b03fdbd..000000000 Binary files a/doc/manual/en/images/one-week.png and /dev/null differ diff --git a/doc/manual/en/images/orange-pi-zero.jpg b/doc/manual/en/images/orange-pi-zero.jpg new file mode 100644 index 000000000..79382ce7d Binary files /dev/null and b/doc/manual/en/images/orange-pi-zero.jpg differ diff --git a/doc/manual/en/images/plinth_all_apps_full_page.png b/doc/manual/en/images/plinth_all_apps_full_page.png deleted file mode 100644 index 65e36c9b7..000000000 Binary files a/doc/manual/en/images/plinth_all_apps_full_page.png and /dev/null differ diff --git a/doc/manual/en/images/plinth_firstboot_account.png b/doc/manual/en/images/plinth_firstboot_account.png deleted file mode 100644 index 0b6ff1fe4..000000000 Binary files a/doc/manual/en/images/plinth_firstboot_account.png and /dev/null differ diff --git a/doc/manual/en/images/plinth_firstboot_complete.png b/doc/manual/en/images/plinth_firstboot_complete.png deleted file mode 100644 index b1094d99d..000000000 Binary files a/doc/manual/en/images/plinth_firstboot_complete.png and /dev/null differ diff --git a/doc/manual/en/images/plinth_firstboot_welcome.png b/doc/manual/en/images/plinth_firstboot_welcome.png deleted file mode 100644 index e8761bfa0..000000000 Binary files a/doc/manual/en/images/plinth_firstboot_welcome.png and /dev/null differ diff --git a/doc/manual/en/images/plinth_frontpage.png b/doc/manual/en/images/plinth_frontpage.png deleted file mode 100644 index 9f7878dcb..000000000 Binary files a/doc/manual/en/images/plinth_frontpage.png and /dev/null differ diff --git a/doc/manual/en/images/plinth_insecure_connection.png b/doc/manual/en/images/plinth_insecure_connection.png deleted file mode 100644 index 10dba4401..000000000 Binary files a/doc/manual/en/images/plinth_insecure_connection.png and /dev/null differ diff --git a/doc/manual/en/images/raspberry_thumb.jpg b/doc/manual/en/images/raspberry_thumb.jpg deleted file mode 100644 index 376c21550..000000000 Binary files a/doc/manual/en/images/raspberry_thumb.jpg and /dev/null differ diff --git a/doc/manual/en/images/raspberrypi.jpg b/doc/manual/en/images/raspberrypi.jpg deleted file mode 100644 index 7aeff254d..000000000 Binary files a/doc/manual/en/images/raspberrypi.jpg and /dev/null differ diff --git a/doc/manual/en/images/raspberrypi3bplus.jpg b/doc/manual/en/images/raspberrypi3bplus.jpg index 95e191050..0bc4ff9dd 100644 Binary files a/doc/manual/en/images/raspberrypi3bplus.jpg and b/doc/manual/en/images/raspberrypi3bplus.jpg differ diff --git a/doc/manual/en/images/raspberrypi3bplus_thumb.jpg b/doc/manual/en/images/raspberrypi3bplus_thumb.jpg index 7a7b504df..f5e9a73be 100644 Binary files a/doc/manual/en/images/raspberrypi3bplus_thumb.jpg and b/doc/manual/en/images/raspberrypi3bplus_thumb.jpg differ diff --git a/doc/manual/en/images/raspberrypi4b.jpg b/doc/manual/en/images/raspberrypi4b.jpg new file mode 100644 index 000000000..0763131d9 Binary files /dev/null and b/doc/manual/en/images/raspberrypi4b.jpg differ diff --git a/doc/manual/en/images/raspberrypi4b_thumb.jpg b/doc/manual/en/images/raspberrypi4b_thumb.jpg new file mode 100644 index 000000000..5896e39d6 Binary files /dev/null and b/doc/manual/en/images/raspberrypi4b_thumb.jpg differ diff --git a/doc/manual/en/images/repro_domains.png b/doc/manual/en/images/repro_domains.png deleted file mode 100644 index c0924f83f..000000000 Binary files a/doc/manual/en/images/repro_domains.png and /dev/null differ diff --git a/doc/manual/en/images/repro_users.png b/doc/manual/en/images/repro_users.png deleted file mode 100644 index acfa62ba9..000000000 Binary files a/doc/manual/en/images/repro_users.png and /dev/null differ diff --git a/doc/manual/en/images/rock64.jpg b/doc/manual/en/images/rock64.jpg new file mode 100644 index 000000000..b54537b86 Binary files /dev/null and b/doc/manual/en/images/rock64.jpg differ diff --git a/doc/manual/en/images/rock64_thumb.jpg b/doc/manual/en/images/rock64_thumb.jpg new file mode 100644 index 000000000..fa72d8b68 Binary files /dev/null and b/doc/manual/en/images/rock64_thumb.jpg differ diff --git a/doc/manual/en/images/rockpro64.jpg b/doc/manual/en/images/rockpro64.jpg new file mode 100644 index 000000000..4d757adc7 Binary files /dev/null and b/doc/manual/en/images/rockpro64.jpg differ diff --git a/doc/manual/en/images/rockpro64_thumb.jpg b/doc/manual/en/images/rockpro64_thumb.jpg new file mode 100644 index 000000000..b6a01aa6c Binary files /dev/null and b/doc/manual/en/images/rockpro64_thumb.jpg differ diff --git a/doc/manual/en/images/smile.png b/doc/manual/en/images/smile.png deleted file mode 100644 index 361d70545..000000000 Binary files a/doc/manual/en/images/smile.png and /dev/null differ diff --git a/doc/manual/en/images/snapshots.png b/doc/manual/en/images/snapshots.png deleted file mode 100644 index 21e97959b..000000000 Binary files a/doc/manual/en/images/snapshots.png and /dev/null differ diff --git a/doc/manual/en/images/snapshots_v2.png b/doc/manual/en/images/snapshots_v2.png new file mode 100644 index 000000000..170d29039 Binary files /dev/null and b/doc/manual/en/images/snapshots_v2.png differ diff --git a/doc/manual/en/images/system.png b/doc/manual/en/images/system.png deleted file mode 100644 index ed51ad4b2..000000000 Binary files a/doc/manual/en/images/system.png and /dev/null differ diff --git a/doc/manual/en/images/tor.png b/doc/manual/en/images/tor.png deleted file mode 100644 index 0f19e400c..000000000 Binary files a/doc/manual/en/images/tor.png and /dev/null differ diff --git a/doc/manual/en/images/update.png b/doc/manual/en/images/update.png new file mode 100644 index 000000000..716f63cd7 Binary files /dev/null and b/doc/manual/en/images/update.png differ diff --git a/doc/manual/en/images/upgrades.png b/doc/manual/en/images/upgrades.png deleted file mode 100644 index 73db78022..000000000 Binary files a/doc/manual/en/images/upgrades.png and /dev/null differ diff --git a/doc/manual/en/images/user.png b/doc/manual/en/images/user.png deleted file mode 100644 index 93fe668eb..000000000 Binary files a/doc/manual/en/images/user.png and /dev/null differ diff --git a/doc/manual/en/pcDuino3.raw.wiki b/doc/manual/en/pcDuino3.raw.wiki new file mode 100644 index 000000000..a5eea2965 --- /dev/null +++ b/doc/manual/en/pcDuino3.raw.wiki @@ -0,0 +1,52 @@ +== pcDuino3 == + +{{attachment:pcduino3s.jpg|LinkSprite pcDuino3S|width=682,height=310}} + +[[https://www.linksprite.com/linksprite-pcduino3s/|LinkSprite pcDuino3S]] is a single board computer running on Allwinner A20 and sold with a good case. !FreedomBox images are built and tested for this device. + +Note: The !FreedomBox logo is simply a sticker on top of device brought from store. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + + +=== Similar Hardware === + +Although untested, the following similar hardware is also likely to work well with !FreedomBox. + + * [[https://www.linksprite.com/linksprite-pcduino3/]] also covers pcDuino3B + +=== Download === + +!FreedomBox disk [[FreedomBox/Download|images]] for this hardware are available. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card, USB disk, SSD or hard drive and boot into !FreedomBox. Pick the image meant for pcduino3. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the APU and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: 89 USD + * [[http://store.linksprite.com/pcduino3s-a20-single-board-computer-no-power-supply-or-hdmi-cable/|LinkSprite]] + * [[http://www.linksprite.com/buy-2/|Full list of suppliers]] + +=== Hardware === + + * Open Hardware: No + * CPU: !AllWinner A20 SoC, 1GHz ARM Cortex A7 Dual Core + * RAM: 1 GB + * Storage: SD card, 4 GB onboard flash + * Architecture: armhf + * Ethernet: 10/100 Mbps + * !WiFi: Built-in WiFi requires non-free firmware, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] instead + * SATA: 1 SATA host socket + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Requires non-free firmware + * Boot Firmware: [[https://linux-sunxi.org/BROM|BROM]] (GPLV2+) + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/A20-OLinuXino-Lime2.raw.wiki b/doc/manual/es/A20-OLinuXino-Lime2.raw.wiki new file mode 100644 index 000000000..94a440f71 --- /dev/null +++ b/doc/manual/es/A20-OLinuXino-Lime2.raw.wiki @@ -0,0 +1,76 @@ +== A20 OLinuXino Lime2 == + +{{attachment:a20-olinuxino-lime2.jpg|A20 OLinuXino Lime2|width=640,height=432}} + +Olimex's [[https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-LIME2/open-source-hardware|A20 OLinuXino Lime2]] is a fully 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. It uses the Allwinner A20 Dual Core ARM processor. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Similar Hardware === + +The following similar hardware will also work well with !FreedomBox. + + * Olimex's [[https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-LIME2-4GB/open-source-hardware|A20 OLinuXino Lime2 4GB]]. This hardware merely has extra 4GB NAND storage that is not used by !FreedomBox. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] are available for this device. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. These SD card images are meant for use with the on-board SD card slot and won't work when used with a separate SD card reader connected via USB. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: 45 EUR (A20 OLinuXino Lime2) + * Price: 55 EUR (A20 OLinuXino Lime2 4GB) + * [[https://www.olimex.com/Products/OLinuXino/A20/open-source-hardware|Olimex Store]] + +=== Hardware === + + * Open Source Hardware (OSHW): [[https://github.com/OLIMEX/OLINUXINO/tree/master/HARDWARE|Yes]] + * CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core + * RAM: 1 GiB DDR3 + * Storage: 4 GB NAND flash built-in (only on 4GB model), 1x microSD slot + * Architecture: armhf + * Ethernet: 10/100/1000, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: 1x port + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + * Boot Firmware: [[https://linux-sunxi.org/BROM|BROM]] (GPLV2+) + +=== Known Issues === + + * Revision C hardware has [[DebianBug:845128|poor performance when receiving Ethernet data in Gigabit mode]]. To workaround the problem, you can switch to 100 Mbps mode instead of Gigabit mode. Login to your !FreedomBox as root (or plugin the SD card into another computer) and create the file /etc/NetworkManager/dispatcher.d/20-fix-ethernet-problem with the following contents: + {{{ +#!/bin/bash + +set -e # Exit with code on error + +IFACE="$1" +ACTION="$2" + +if [[ "$IFACE" != "eth0" ]]; then + exit 0 +fi + +case ${ACTION} in + up) + logger "Setting up $IFACE in 100Mbps mode" + mii-tool eth0 -A 100BaseTx-FD + ;; + *) + ;; +esac +}}} + * Revision G2 hardware has [[DebianBug:927397|poor performance when transmitting Ethernet data in Gigabit mode]]. Download and use the [[https://ftp.freedombox.org/pub/freedombox/pioneer/|Pioneer Edition image]] to fix the issue. It contains a slightly [[https://salsa.debian.org/freedombox-team/u-boot/commit/2cb18893ef|modified u-boot]]. The above workaround to put the Ethernet into 100 Mbps mode also fixes this issue. + * Revision K hardware is [[https://salsa.debian.org/freedombox-team/freedom-maker/issues/148|not working properly]]. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/A20-OLinuXino-MICRO.raw.wiki b/doc/manual/es/A20-OLinuXino-MICRO.raw.wiki new file mode 100644 index 000000000..dfc8d6343 --- /dev/null +++ b/doc/manual/es/A20-OLinuXino-MICRO.raw.wiki @@ -0,0 +1,54 @@ +== A20 OLinuXino MICRO == + +{{attachment:a20-olinuxino-micro.jpg|A20 OLinuXino MICRO|width=640,height=359}} + +Olimex's [[https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-MICRO/open-source-hardware|A20 OLinuXino MICRO]] is a fully 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. It uses the Allwinner A20 Dual Core ARM processor. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Similar Hardware === + +The following similar hardware will also work well with !FreedomBox. + + * Olimex's [[https://www.olimex.com/Products/OLinuXino/A20/A20-OLinuXIno-MICRO-4GB/open-source-hardware|A20 OLinuXino MICRO 4GB]]. This hardware merely has extra 4GB NAND storage that is not used by !FreedomBox. + +=== Download === + +!FreedomBox MicroSD card [[FreedomBox/Download|images]] are available for this device. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox MicroSD card and boot the device. These MicroSD card images are meant for use with the on-board MicroSD card slot and won't work on the SD card slot or when using a separate MicroSD card reader connected via USB. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: 50 EUR (A20 OLinuXino MICRO) + * Price: 63 EUR (A20 OLinuXino MICRO 4GB) + * [[https://www.olimex.com/Products/OLinuXino/A20/open-source-hardware|Olimex Store]] + +=== Hardware === + + * Open Source Hardware (OSHW): [[https://github.com/OLIMEX/OLINUXINO/tree/master/HARDWARE|Yes]] + * CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core + * RAM: 1 GiB DDR3 + * Storage: 4 GB NAND flash built-in (only on 4GB model), 1x microSD slot + * Architecture: armhf + * Ethernet: 10/100, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: 1x port + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + * Boot Firmware: [[https://linux-sunxi.org/BROM|BROM]] (GPLV2+) + +=== Known Issues === + + * Not visible on local network + * When booting the 'stable' image (made on 2017-06-18) the board does not automatically get an IP address from the router's DHCP server over ethernet. Booting the 'testing' image (2018-06) the board does get an IP address. Tested on MICRO hardware revision J. see also: [[https://www.olimex.com/forum/index.php?topic=5839.msg24167#msg24167]] + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/APU.raw.wiki b/doc/manual/es/APU.raw.wiki new file mode 100644 index 000000000..f0ea04232 --- /dev/null +++ b/doc/manual/es/APU.raw.wiki @@ -0,0 +1,75 @@ +== APU == + +{{attachment:apu1d.jpg|PC Engines APU 1D|width=632,height=319}} + +[[http://www.pcengines.ch/apu1d.htm|PC Engines APU 1D]] is a single board computer with 3 Gigabit ethernet ports, a powerful AMD APU and Coreboot firmware. !FreedomBox images built for AMD64 machines are tested to work well for it. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Similar Hardware === + +Although untested, the following similar hardware is also likely to work well with !FreedomBox. + + * Using amd64 image: + * [[http://www.pcengines.ch/apu1c.htm|apu1c]] + * [[http://www.pcengines.ch/apu1c4.htm|apu1c4]] + * [[http://www.pcengines.ch/apu1d4.htm|apu1d4]] + * [[http://www.pcengines.ch/apu2b2.htm|apu2b2]] + * [[http://www.pcengines.ch/apu2b4.htm|apu2b4]] + * [[http://www.pcengines.ch/apu2c0.htm|apu2c0]] + * [[http://www.pcengines.ch/apu2c2.htm|apu2c2]] + * [[http://www.pcengines.ch/apu2c4.htm|apu2c4]] + * [[http://www.pcengines.ch/apu3a2.htm|apu3a2]] + * [[http://www.pcengines.ch/apu3a4.htm|apu3a4]] + * [[http://www.pcengines.ch/apu3b2.htm|apu3b2]] + * [[http://www.pcengines.ch/apu3b4.htm|apu3b4]] + + * Using i386 image: + * [[http://www.pcengines.ch/alix1d.htm|alix1d]] + * [[http://www.pcengines.ch/alix1e.htm|alix1e]] + * [[http://www.pcengines.ch/alix2d2.htm|alix2d2]] + * [[http://www.pcengines.ch/alix2d3.htm|alix2d3]] + * [[http://www.pcengines.ch/alix2d13.htm|alix2d13]] + * [[http://www.pcengines.ch/alix3d2.htm|alix3d2]] + * [[http://www.pcengines.ch/alix3d3.htm|alix3d3]] + * [[http://www.pcengines.ch/alix6f2.htm|alix6f2]] + +=== Download === + +!FreedomBox disk [[FreedomBox/Download|images]] for this hardware are available. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card, USB disk, SSD or hard drive and boot into !FreedomBox. Pick the image meant for all amd64 machines. + +An alternative to downloading these images is to [[InstallingDebianOn/Alix3d2|install Debian]] on the APU and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Networking === + +The first network port, the left most one in the above picture, is configured by !FreedomBox to be an upstream Internet link and the remaining 2 ports are configured for local computers to connect to. + +=== Availability === + + * Price: 110 - 170 USD (depending on the board and supplier) + * [[http://www.pcengines.ch/order.htm|PC Engines]] + * [[http://www.pcengines.ch/order.htm|Full list of suppliers]] + +=== Hardware === + + * Open Hardware: No + * CPU: [[http://www.amd.com/en-gb/products/embedded/processors/g-series|AMD G series T40E]] + * RAM: 2 GB DDR3-1066 DRAM + * Storage: SD card, External USB + * Architecture: amd64 + * Ethernet: 3 Gigabit Ethernet ports + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: 1 m-SATA and 1 SATA + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + * Boot firmware: [[http://www.pcengines.ch/apu1d.htm|Coreboot]] + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Apache_userdir.raw.wiki b/doc/manual/es/Apache_userdir.raw.wiki new file mode 100644 index 000000000..02ce020cd --- /dev/null +++ b/doc/manual/es/Apache_userdir.raw.wiki @@ -0,0 +1,44 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Apache_userdir|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Sitios Web de Usuario (User websites) == + +=== ¿Qué es User websites? === + +''User websites'' es un módulo del servidor web ''Apache'' habilitado para permitir a los usuarios definidos en el sistema !FreedomBox exponer un conjunto de archivos del sistema de ficheros de !FreedomBox como sitio web a la red local y/o a internet de acuerdo a la configuración de la red y el cortafuegos. + +||||'''Datos básicos de la aplicación'''|| +||Categoría|| Compartición de archivos || +||Disponible desde la versión || 0.9.4|| +||Sitio web del proyecto original || https://httpd.apache.org/docs/2.4/mod/mod_userdir.html|| +||Documentación original de usuario || https://httpd.apache.org/docs/2.4/howto/public_html.html|| + +=== Captura de pantalla === + +/* Añadir cuando/si se crea un interfaz para FreedomBox */ + +=== Usar User websites === + +El módulo está siempre activado y el interfaz web de !FreedomBox no ofrece configuración ni página de estado para este módulo. +Para servir documentos con el módulo solo se necesita poner los documentos en un subdirectorio designado '''`/home//public_html`'''. + +`User websites` servirá los archivos que haya en este directorio cuando se reciban peticiones con la URI `~`. Por tanto para un dominio `ejemplo.org` con un usuario `pepe` una petición `ejemplo.org/~pepe/index.html` transferirá el fichero `/home/pepe/public_html/index.html`. + + +=== Usar SFTP para crear public_html y subir archivos === + +/* Pendiente de redactar */ + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Apache_userdir.raw.xml b/doc/manual/es/Apache_userdir.raw.xml deleted file mode 100644 index d187acfde..000000000 --- a/doc/manual/es/Apache_userdir.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Apache_userdir72020-05-30 19:46:57SunilMohanAdapaUpdate the title to emphasize app name over its generic name62020-05-23 22:51:13fioddorSe alinea con la versión 07 en inglés del 23 de mayo de 202052020-03-01 11:59:06fioddorSe alinea con la versión 06 en inglés del 26 de febrero de 202042019-10-21 14:19:20fioddorCorrección menor32019-10-21 14:17:11fioddorCorrección menor22019-08-29 12:55:24fioddorCorrección menor12019-08-29 12:50:13fioddorSe crea la versión española.
Sitios Web de Usuario (User websites)
¿Qué es User websites?User websites es un módulo del servidor web Apache habilitado para permitir a los usuarios definidos en el sistema FreedomBox exponer un conjunto de archivos del sistema de ficheros de FreedomBox como sitio web a la red local y/o a internet de acuerdo a la configuración de la red y el cortafuegos. Datos básicos de la aplicaciónCategoría Compartición de archivos Disponible desde la versión 0.9.4Sitio web del proyecto original Documentación original de usuario
Captura de pantallaAñadir cuando/si se crea un interfaz para FreedomBox
Usar User websitesEl módulo está siempre activado y el interfaz web de FreedomBox no ofrece configuración ni página de estado para este módulo. Para servir documentos con el módulo solo se necesita poner los documentos en un subdirectorio designado /home/<un_usuario_de_plinth>/public_html. User websites servirá los archivos que haya en este directorio cuando se reciban peticiones con la URI ~<un_usuario_de_freedombox>. Por tanto para un dominio ejemplo.org con un usuario pepe una petición ejemplo.org/~pepe/index.html transferirá el fichero /home/pepe/public_html/index.html.
Usar SFTP para crear public_html y subir archivosPendiente de redactar Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Backups.raw.wiki b/doc/manual/es/Backups.raw.wiki new file mode 100644 index 000000000..273473037 --- /dev/null +++ b/doc/manual/es/Backups.raw.wiki @@ -0,0 +1,96 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Backups|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Copias de respaldo (backups) == + +!FreedomBox incluye la posibilidad de copiar y restaurar datos, preferencias, configuración y secretos de la mayoría de las aplicaciones. La funcionalidad de ''Backups'' se resuelve con el software de ''backup'' ''Borg''. ''Borg'' es un programa de ''backup'' con deduplicación y compresión. Está diseñado para hacer ''backups'' eficientes y seguros. Esta funcionalidad de ''backups'' se puede emplear para respaldar y recuperar datos aplicación por aplicación. Las copias de respaldado se pueden almacenar en la propia máquina !FreedomBox o en un servidor remoto. Cualquier servidor remoto con acceso por SSH se puede emplear como almacenamiento para los ''backups'' de la !FreedomBox. Las copias remotas se pueden cifrar para que el servidor remoto no pueda leer los datos que alberga. + + +=== Estados de la Funcionalidad de Backups === + +|| '''App/Funcionalidad''' || '''Soporte en Versión''' || '''Notas''' || +|| Avahi || - || no precisa ''backup'' || +|| Backups || - || no precisa ''backup'' || +|| Bind || 0.41 || || +|| Cockpit || - || no precisa ''backup'' || +|| Datetime || 0.41 || || +|| Deluge || 0.41 || '''no''' incluye archivos descargados ni semillas || +|| Diagnostics || - || no precisa ''backup'' || +|| Dynamic DNS || 0.39 || || +|| ejabberd || 0.39 || incluye todos los datos y configuración || +|| Firewall || - || no precisa ''backup'' || +|| ikiwiki || 0.39 || incluye todos los wikis/blogs y sus contenidos || +|| infinoted || 0.39 || incluye todos los datos y claves || +|| JSXC || - || no precisa ''backup'' || +|| Let's Encrypt || 0.42 || || +|| Matrix Synapse || 0.39 || incluye media y cargas || +|| !MediaWiki || 0.39 || incluye páginas de wiki y archivos adjuntos || +|| Minetest || 0.39 || || +|| MLDonkey || 19.0 || || +|| Monkeysphere || 0.42 || || +|| Mumble || 0.40 || || +|| Names || - || no precisa ''backup'' || +|| Networks || No || sin planes para implementar ''backup'', de momento || +|| OpenVPN || 0.48 || incluye a todos los usuarios y claves de servidor || +|| Pagekite || 0.40 || || +|| Power || - || no precisa ''backup'' || +|| Privoxy || - || no precisa ''backup'' || +|| Quassel || 0.40 || incluye usuarios y registros de ejeución (''logs'') || +|| Radicale || 0.39 || incluye calendario y datos de tarjetas de todos los usuarios || +|| Roundcube || - || no precisa ''backup'' || +|| SearX || - || no precisa ''backup'' || +|| Secure Shell (SSH) Server || 0.41 || incluye las claves del servidor || +|| Security || 0.41 || || +|| Shadowsocks || 0.40 || solo secretos || +|| Sharing || 0.40 || '''no''' incluye datos de las carpetas compartidas || +|| Snapshot || 0.41 || solo configuración, '''no''' incluye datos de capturas (snapshots) || +|| Storage || - || no precisa ''backup'' || +|| Syncthing || 0.48 || '''no''' incluye datos de las carpetas compartidas || +|| Tahoe-LAFS || 0.42 || incluye todos los datos y configuración || +|| Tiny Tiny RSS || 19.2 || incluye base de datos con ''feeds'', historias, etc. || +|| Tor || 0.42 || includes configuración y secretos como las claves de servicios Tor Onion || +|| Transmission || 0.40 || '''no''' incluye archivos descargados ni semillas || +|| Upgrades || 0.42 || || +|| Users || No || sin planes para implementar ''backup'', de momento || + +=== Cómo instalar y usar Backups === + +'''Paso 1: Ir a la página de Copias de Seguridad''' + +{{attachment:Backups_Step1_es_v02.png|Backups: Paso 1|width=800}} + +'''Paso 2: Pulsar el botón Instalar''' + +{{attachment:Backups_Step2_v49.png|Backups: Paso 2|width=800}} + +'''Paso 3: Esperar a que se instalen todos los componentes de la aplicación''' + +{{attachment:Backups_Step3_es_v01.png|Backups: Paso 3|width=800}} + +'''Paso 4: Pulsar el botón de Crear Copia de Seguridad''' + +{{attachment:Backups_Step4_es_v02.png|Backups: Paso 4|width=800}} + +'''Paso 5: Seleccionar las aplicaciones a respaldar y pulsar Enviar''' + +{{attachment:Backups_Step5_es_v02.png|Backups: Paso 5|width=800}} + +'''Paso 6: Pulsar en el botón Descargar''' + +{{attachment:Backups_Step6_es_v02.png|Backups: Paso 6|width=800}} + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Backups.raw.xml b/doc/manual/es/Backups.raw.xml deleted file mode 100644 index 66d09519a..000000000 --- a/doc/manual/es/Backups.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Backups92020-05-24 07:22:56fioddorSe alinea con la versión 32 en inglés del 23 de mayo de 202082020-04-11 10:33:24fioddorhttps://salsa.debian.org/freedombox-team/plinth/-/issues/1831#note_15425872020-04-04 13:32:23fioddorCorrección menor62020-04-04 13:31:45fioddorImágenes indicativas52020-04-04 13:10:54fioddorCorrección.42020-04-04 13:09:42fioddorSe usan imágenes traducidas y más actuales.32020-04-04 13:06:11fioddorCorrección. Descripción de pasos como texto en los títulos en vez de como imágenes (mejor accesibilidad)22019-11-14 18:14:48fioddorSe alinea con la versión 31 en inglés del 11 de noviembre de 201912019-06-18 15:14:43fioddorSe crea la versión española.
Copias de respaldo (backups)FreedomBox incluye la posibilidad de copiar y restaurar datos, preferencias, configuración y secretos de la mayoría de las aplicaciones. La funcionalidad de Backups se resuelve con el software de backup Borg. Borg es un programa de backup con deduplicación y compresión. Está diseñado para hacer backups eficientes y seguros. Esta funcionalidad de backups se puede emplear para respaldar y recuperar datos aplicación por aplicación. Las copias de respaldado se pueden almacenar en la propia máquina FreedomBox o en un servidor remoto. Cualquier servidor remoto con acceso por SSH se puede emplear como almacenamiento para los backups de la FreedomBox. Las copias remotas se pueden cifrar para que el servidor remoto no pueda leer los datos que alberga.
Estados de la Funcionalidad de Backups App/Funcionalidad Soporte en Versión Notas Avahi - no precisa backup Backups - no precisa backup Bind 0.41 Cockpit - no precisa backup Coquelicot 0.40 incluye ficheros subidos Datetime 0.41 Deluge 0.41 no incluye archivos descargados ni semillas Diagnostics - no precisa backup Dynamic DNS 0.39 ejabberd 0.39 incluye todos los datos y configuración Firewall - no precisa backup ikiwiki 0.39 incluye todos los wikis/blogs y sus contenidos infinoted 0.39 incluye todos los datos y claves JSXC - no precisa backup Let's Encrypt 0.42 Matrix Synapse 0.39 incluye media y cargas MediaWiki 0.39 incluye páginas de wiki y archivos adjuntos Minetest 0.39 MLDonkey 19.0 Monkeysphere 0.42 Mumble 0.40 Names - no precisa backup Networks No sin planes para implementar backup, de momento OpenVPN 0.48 incluye a todos los usuarios y claves de servidor Pagekite 0.40 Power - no precisa backup Privoxy - no precisa backup Quassel 0.40 incluye usuarios y registros de ejeución (logs) Radicale 0.39 incluye calendario y datos de tarjetas de todos los usuarios repro 0.39 incluye a todos los usuarios, datos y claves Roundcube - no precisa backup SearX - no precisa backup Secure Shell (SSH) Server 0.41 incluye las claves del servidor Security 0.41 Shadowsocks 0.40 solo secretos Sharing 0.40 no incluye datos de las carpetas compartidas Snapshot 0.41 solo configuración, no incluye datos de capturas (snapshots) Storage - no precisa backup Syncthing 0.48 no incluye datos de las carpetas compartidas Tahoe-LAFS 0.42 incluye todos los datos y configuración Tiny Tiny RSS 19.2 incluye base de datos con feeds, historias, etc. Tor 0.42 includes configuración y secretos como las claves de servicios Tor Onion Transmission 0.40 no incluye archivos descargados ni semillas Upgrades 0.42 Users No sin planes para implementar backup, de momento
Cómo instalar y usar BackupsPaso 1: Ir a la página de Copias de Seguridad Backups: Paso 1 Paso 2: Pulsar el botón Instalar Backups: Paso 2 Paso 3: Esperar a que se instalen todos los componentes de la aplicación Backups: Paso 3 Paso 4: Pulsar el botón de Crear Copia de Seguridad Backups: Paso 4 Paso 5: Seleccionar las aplicaciones a respaldar y pulsar Enviar Backups: Paso 5 Paso 6: Pulsar en el botón Descargar Backups: Paso 6 Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/BananaPro.raw.wiki b/doc/manual/es/BananaPro.raw.wiki new file mode 100644 index 000000000..b1800a66e --- /dev/null +++ b/doc/manual/es/BananaPro.raw.wiki @@ -0,0 +1,37 @@ +== Banana Pro == + +{{attachment:banana-pro.jpg|Banana Pro|width=640}} + +[[http://www.lemaker.org|LeMaker]] Banana Pro is an updated version of its predecessor Banana Pi. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] for this hardware are available. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot into !FreedomBox. Pick the image meant for Banana Pro. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Hardware === + + * Open Source Hardware (OSHW): No + * CPU: Allwinner A20, Dual-core ARM Cortex A7 processor + * RAM: 3 variants - 1 GB + * Storage: SD card + * Architecture: armhf + * Ethernet: 10/100/1000 Mbps + * Battery: No + * !WiFi: WiFi 802.11 b/g/n 2.4GHz (not tested with !FreedomBox) + * SATA: SATA 2.0 (2.5 inch SSD or HDD recommended) + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Unknown + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/BeagleBone.raw.wiki b/doc/manual/es/BeagleBone.raw.wiki new file mode 100644 index 000000000..6484da94d --- /dev/null +++ b/doc/manual/es/BeagleBone.raw.wiki @@ -0,0 +1,46 @@ +== Beagle Bone Black == + +{{attachment:beagleboard.jpg|Beagle Bone Black|width=632,height=421}} + +[[https://beagleboard.org/black|Beagle Bone Black]] (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. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] are available for this device. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. + +Note: This image is for !BeagleBone Black (Revision C.1) only. It will not work on the !BeagleBone Green, and also not on the Revisions A&B. If you have such a device and would like to help getting !FreedomBox to run on it, contact us! + +An alternative to downloading these images is to [[InstallingDebianOn/TI/BeagleBone|install Debian]] on the !BeagleBone and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: ~ 59 USD (50 EUR) + * [[http://dk.mouser.com/access/?pn=595-BB-BBLK-000|Mouser Electronics]] + * [[https://beagleboard.org/black|Full list of suppliers]] + +=== Hardware === + + * Open Source Hardware (OSHW): [[http://elinux.org/Beagleboard:BeagleBoneBlack|Yes]] + * CPU: [[http://www.ti.com/product/am3358|AM335x 1GHz ARM Cortex-A8]] + * RAM: 512MB DDR3L 800 Mhz + * Storage: Onboard 4GB, 8bit Embedded MMC and microSD + * Architecture: armhf + * Ethernet: 10/100, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: None + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +Beagle Bone Black image is licensed under a Creative Commons Attribution-!ShareAlike 3.0 Unported License by [[http://elinux.org/File:REV_A5A.jpg|Circuitco]]. diff --git a/doc/manual/es/Bind.raw.wiki b/doc/manual/es/Bind.raw.wiki new file mode 100644 index 000000000..b4595f801 --- /dev/null +++ b/doc/manual/es/Bind.raw.wiki @@ -0,0 +1,24 @@ +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: - [[FreedomBox/Manual/Bind|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== BIND (Servidor de Nombre de Dominio) == + +BIND te permite publicar en Internet tu información de Sistema de Nombre de Dominio (DNS) y resolver consultas DNS de los dispositivos de usuario en tu red. + +Actualmente en !FreedomBox BIND solo se usa para resolver consultas DNS de otras máquinas en tu red local. También es incompatible con compartir conexiones a Internet de tu !FreedomBox. + +Nota: Este servicio solo está disponible en redes configuradas como zona "interna". Tampoco está disponble a través de OpenVPN (es incompatible). + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Bind.raw.xml b/doc/manual/es/Bind.raw.xml deleted file mode 100644 index 2d0e37c70..000000000 --- a/doc/manual/es/Bind.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Bind42020-05-30 19:48:23SunilMohanAdapaUpdate the title to emphasize app name over its generic name32020-05-26 14:04:08fioddorCorrección.22020-05-26 13:55:43fioddorEnlaces a traducciones12020-05-26 13:51:17fioddorNueva página traducidaTranslation(s): - English - Español
BIND (Servidor de Nombre de Dominio)BIND te permite publicar en Internet tu información de Sistema de Nombre de Dominio (DNS) y resolver consultas DNS de los dispositivos de usuario en tu red. Actualmente en FreedomBox BIND solo se usa para resolver consultas DNS de otras máquinas en tu red local. También es incompatible con compartir conexiones a Internet de tu FreedomBox. Nota: Este servicio solo está disponible en redes configuradas como zona "interna". Tampoco está disponble a través de OpenVPN (es incompatible). Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Cockpit.raw.wiki b/doc/manual/es/Cockpit.raw.wiki new file mode 100644 index 000000000..a21dd5075 --- /dev/null +++ b/doc/manual/es/Cockpit.raw.wiki @@ -0,0 +1,131 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Cockpit|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Cockpit (Administración de Servidor) == + +Cockpit es una aplicación que facilita administrar servidores GNU/Linux desde el navegador web. En una !FreedomBox, hay disponibles controles para muchas funciones avanzadas que normalmente no se necesitan. También hay disponible un terminal web para operaciones de consola. + +Cualquier usuario del grupo de administradores de to !FreedomBox puede acceder a Cockpit. Cockpit solo se puede usar si tienes una configuración de nombre de dominio apropiada para tu !FreedomBox y usas ese nombre de dominio para acceder a Cockpit. Para más información mira la sección de Resolución de Problemas. + +{{{#!wiki caution +Usa cockpit sólo si eres un administrador de sistemas GNU/Linux con habilidades avanzadas. !FreedomBox intenta coexistir con los cambios al sistema que efectúan los administradores y sus herramientas, como Cockpit. Sin embargo, los cambios al sistema inadecuados pueden causar fallos en las funciones de !FreedomBox. +}}} + +=== Usar Cockpit === + +Instala Cockpit como cualquier otra aplicación de !FreedomBox. Y a continuación asegúrate de que Cockpit está habilitado. + +{{attachment:cockpit-enable.png}} + +Asegúrate de que la cuenta de usuario de !FreedomBox que se empleará con Cockpit es parte del grupo de administradores. + +{{attachment:cockpit-admin-user.png}} + +Arranca el interfaz web de Cockpit. Ingresa con la cuenta de usuario configurada. + +{{attachment:cockpit-login.png}} + +Empieza a usar cockpit. + +{{attachment:cockpit-system.png}} + +Cockpit también funciona con interfaces mobiles. + +{{attachment:cockpit-mobile.png}} + +=== Funcionalidades === + +Las siguientes funcionalidades de Cockpit pueden ser útiles para usuarios avanzados de !FreedomBox. + +==== Cuadro de Mando del Sistema ==== + +Cockpit tiene un cuadro de mando del sistema que + * Muestra información detallada del ''hardware''. + * Muestra métricas básicas de rendimiento del sistema. + * Permite cambiar la hora y el huso del sistema. + * Permite cambiar el ''hostname''. Por favor usa el interfaz de usuario de !FreedomBox UI para hacer esto. + * Muestra las huellas del servidor SSH. + +{{attachment:cockpit-system.png}} + + +==== Visualización de los Registros de Ejecución (logs) del Sistema ==== + +Cockpit permite consultar los registros de ejecución (logs) del sistema y examinarlos a todo detalle. + +{{attachment:cockpit-logs.png}} + +==== Administración de Almacenamiento ==== + +Cockpit permite las siguientes funciones avanzadas de almacenamiento: + + * Visualización de llenado de discos. + * Edición de particiones de disco. + * Administración de RAID. + +{{attachment:cockpit-storage1.png}} + +{{attachment:cockpit-storage2.png}} + +==== Redes ==== + +Tanto Cockpit como !FreedomBox se apoyan en !NetworkManager para configurar la red. No obstante, Cockpit ofrece alguna configuración avanzada no disponible en !FreedomBox: + + * Configuración de rutas. + * Configuración de enlaces, puentes y VLANs. + +{{attachment:cockpit-network1.png}} + +{{attachment:cockpit-network2.png}} + +{{attachment:cockpit-network3.png}} + +==== Servicios ==== + +Cockpit permite agendar servicios y tareas periódicas (como cron). + +{{attachment:cockpit-services1.png}} + +{{attachment:cockpit-services2.png}} + +==== Terminal Web ==== + +Cockpit ofrece un terminal web que se puede usar para ejecutar tareas manuales de administración del sistema. + +{{attachment:cockpit-terminal.png}} + +=== Resolución de Problemas === + +Cockpit require un nombre de dominio adecuadamente configurado en tu !FreedomBox y solo funcionará cuando accedas a él mediante una URL con ese nombre de dominio. Cockpit no funcionará con una dirección IP en la URL. Tampoco con ''freedombox.local'' como nombre de dominio. Por ejemplo, las URLs siguientes no funcionarán: + +{{{ +https://192.168.0.10/_cockpit/ +https://freedombox.local/_cockpit/ +}}} + +A partir de la versión 19.15 funciona el dominio ''.local''. Puedes acceder a Cockpit mediante la URL https://freedombox.local/_cockpit/. El dominio ''.local'' se basa en tu ''hostname''. Si tu ''hostname'' es ''mifb'' tu nombre de dominio ''.local'' será ''mifb.local'' y la URL de Cockpit será https://mifb.local/_cockpit/. + +Para acceder apropiadamente a Cockpit, usa el nombre de dominio [[es/FreedomBox/Manual/Configure|configurado]] en tu !FreedomBox. Cockpit también funcionará cuando se use un [[es/FreedomBox/Manual/Tor|Servicio Tor Onion]]. Las siguientes URLs funcionarán: + +{{{ +https://mybox.freedombox.rocks/cockpit/ +https://exampletorhs.onion/cockpit/ +}}} + +La razón para este comportamiento es que Cockpit emplea !WebSockets para conectar con el servidor de ''backend''. Por seguridad se deben evitar las peticiones a !WebSockets con servidores cruzados. Para implementar esto Cockpit maintiene una lista de todos los dominios desde los que se admiten peticiones. !FreedomBox configura automaticamente esta lista cuando añades o borras un dominio. Sin embargo, como no podemos fiarnos de las direcciones IP, !FreedomBox no las añade a esta lista. Puedes mirar la lista actual de dominios aceptados administrada por !FreedomBox en ''/etc/cockpit/cockpit.conf''. Puedes editarla pero hazlo solo si comprendes sus consecuencias para la seguridad web. + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Cockpit.raw.xml b/doc/manual/es/Cockpit.raw.xml deleted file mode 100644 index dbede8343..000000000 --- a/doc/manual/es/Cockpit.raw.xml +++ /dev/null @@ -1,3 +0,0 @@ -
es/FreedomBox/Manual/Cockpit92020-05-30 19:48:03SunilMohanAdapaUpdate the title to emphasize app name over its generic name82020-05-24 07:23:47fioddorSe alinea con la versión 07 en inglés del 23 de mayo de 202072019-11-14 18:06:47fioddorSe alinea con la versión 06 en inglés del 14 de noviembre de 201962019-11-14 18:01:18fioddorSe alinea con la versión 05 en inglés del 11 de noviembre de 201952019-08-28 07:46:04fioddorTítulo explicativo y el nombre de la app entre paréntesis como aclaración adicional42019-08-22 11:10:28fioddorSe actualiza a la versión inglesa 4 del 20 de agosto de 2019.32019-07-22 17:57:58fioddorSe incorpora la traducción de una sección nueva.22019-07-01 12:32:35fioddorClaridad.12019-07-01 09:47:44fioddorSe crea la versión española.
Cockpit (Administración de Servidor)Cockpit es una aplicación que facilita administrar servidores GNU/Linux desde el navegador web. En una FreedomBox, hay disponibles controles para muchas funciones avanzadas que normalmente no se necesitan. También hay disponible un terminal web para operaciones de consola. Cualquier usuario del grupo de administradores de to FreedomBox puede acceder a Cockpit. Cockpit solo se puede usar si tienes una configuración de nombre de dominio apropiada para tu FreedomBox y usas ese nombre de dominio para acceder a Cockpit. Para más información mira la sección de Resolución de Problemas. Usa cockpit sólo si eres un administrador de sistemas GNU/Linux con habilidades avanzadas. FreedomBox intenta coexistir con los cambios al sistema que efectúan los administradores y sus herramientas, como Cockpit. Sin embargo, los cambios al sistema inadecuados pueden causar fallos en las funciones de FreedomBox.
Usar CockpitInstala Cockpit como cualquier otra aplicación de FreedomBox. Y a continuación asegúrate de que Cockpit está habilitado. cockpit-enable.png Asegúrate de que la cuenta de usuario de FreedomBox que se empleará con Cockpit es parte del grupo de administradores. cockpit-admin-user.png Arranca el interfaz web de Cockpit. Ingresa con la cuenta de usuario configurada. cockpit-login.png Empieza a usar cockpit. cockpit-system.png Cockpit también funciona con interfaces mobiles. cockpit-mobile.png
FuncionalidadesLas siguientes funcionalidades de Cockpit pueden ser útiles para usuarios avanzados de FreedomBox.
Cuadro de Mando del SistemaCockpit tiene un cuadro de mando del sistema que Muestra información detallada del hardware. Muestra métricas básicas de rendimiento del sistema. Permite cambiar la hora y el huso del sistema. Permite cambiar el hostname. Por favor usa el interfaz de usuario de FreedomBox UI para hacer esto. Muestra las huellas del servidor SSH. cockpit-system.png
Visualización de los Registros de Ejecución (logs) del SistemaCockpit permite consultar los registros de ejecución (logs) del sistema y examinarlos a todo detalle. cockpit-logs.png
Administración de AlmacenamientoCockpit permite las siguientes funciones avanzadas de almacenamiento: Visualización de llenado de discos. Edición de particiones de disco. Administración de RAID. cockpit-storage1.png cockpit-storage2.png
RedesTanto Cockpit como FreedomBox se apoyan en NetworkManager para configurar la red. No obstante, Cockpit ofrece alguna configuración avanzada no disponible en FreedomBox: Configuración de rutas. Configuración de enlaces, puentes y VLANs. cockpit-network1.png cockpit-network2.png cockpit-network3.png
ServiciosCockpit permite agendar servicios y tareas periódicas (como cron). cockpit-services1.png cockpit-services2.png
Terminal WebCockpit ofrece un terminal web que se puede usar para ejecutar tareas manuales de administración del sistema. cockpit-terminal.png
Resolución de ProblemasCockpit require un nombre de dominio adecuadamente configurado en tu FreedomBox y solo funcionará cuando accedas a él mediante una URL con ese nombre de dominio. Cockpit no funcionará con una dirección IP en la URL. Tampoco con freedombox.local como nombre de dominio. Por ejemplo, las URLs siguientes no funcionarán: A partir de la versión 19.15 funciona el dominio .local. Puedes acceder a Cockpit mediante la URL . El dominio .local se basa en tu hostname. Si tu hostname es mifb tu nombre de dominio .local será mifb.local y la URL de Cockpit será . Para acceder apropiadamente a Cockpit, usa el nombre de dominio configurado en tu FreedomBox. Cockpit también funcionará cuando se use un Servicio Tor Onion. Las siguientes URLs funcionarán: La razón para este comportamiento es que Cockpit emplea WebSockets para conectar con el servidor de backend. Por seguridad se deben evitar las peticiones a WebSockets con servidores cruzados. Para implementar esto Cockpit maintiene una lista de todos los dominios desde los que se admiten peticiones. FreedomBox configura automaticamente esta lista cuando añades o borras un dominio. Sin embargo, como no podemos fiarnos de las direcciones IP, FreedomBox no las añade a esta lista. Puedes mirar la lista actual de dominios aceptados administrada por FreedomBox en /etc/cockpit/cockpit.conf. Puedes editarla pero hazlo solo si comprendes sus consecuencias para la seguridad web. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Configure.raw.wiki b/doc/manual/es/Configure.raw.wiki new file mode 100644 index 000000000..534afd502 --- /dev/null +++ b/doc/manual/es/Configure.raw.wiki @@ -0,0 +1,39 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Configure|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Configurar == + +Configurar tiene algunas opciones generales de configuración: + +=== Hostname === + . ''Hostname'' es el nombre local por el que otros dispositivos pueden alcanzar tu !FreedomBox desde la red local. El ''hostname'' por defecto es ''freedombox''. + +=== Nombre de Dominio === + . El Nombre de Dominio es el nombre global por el que otros dispositivos pueden alcanzar tu !FreedomBox desde la Internet. El valor que se asigne aquí es el que usarán [[FreedomBox/Manual/ejabberd|Chat Server (XMPP)]], [[FreedomBox/Manual/MatrixSynapse|Matrix Synapse]], [[FreedomBox/Manual/LetsEncrypt|Certificates (Let's Encrypt)]], y [[FreedomBox/Manual/Monkeysphere|Monkeysphere]]. + +=== Página Principal (home) del Servidor Web === + . Esta es una opción avanzada que te permite establecer como ''home'' algo diferente al servicio !FreedomBox para que se sirva a quien acceda con el navegador al nombre de dominio de !FreedomBox. Por ejemplo, si el nombre de dominio de tu !FreedomBox es https://myfreedombox.rocks y estableces a !MediaWiki como ''home'', al visitar https://mifreedombox.mola te llevará a https://myfreedombox.rocks/mediawiki/ en vez de a https://mifreedombox.mola/plinth/. Puedes asignar la ''home'' a cualquier aplicación web, los wikis y blogs de Ikiwiki o la página index.html por defecto de Apache. + +{{{#!wiki caution + +Una vez asignada como ''home'' otra aplicación, ya solo puedes navegar al servicio !FreedomBox tecleando en el navegador https://mifreedombox.mola/plinth/. <
> +''/freedombox'' también se puede usar como alias para ''/plinth'' +}}} + + + . ''Consejo:'' Guarda la URL del servicio !FreedomBox antes de asignar la ''home'' a otra app. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Configure.raw.xml b/doc/manual/es/Configure.raw.xml deleted file mode 100644 index 4a6206a4b..000000000 --- a/doc/manual/es/Configure.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Configure32020-05-23 23:06:23fioddorSe alinea con la versión 11 en inglés del 23 de mayo de 202022019-06-18 15:50:11fioddorCorrección menor12019-06-18 15:46:38fioddorSe crea la versión española.
ConfigurarConfigurar tiene algunas opciones generales de configuración:
HostnameHostname es el nombre local por el que otros dispositivos pueden alcanzar tu FreedomBox desde la red local. El hostname por defecto es freedombox.
Nombre de DominioEl Nombre de Dominio es el nombre global por el que otros dispositivos pueden alcanzar tu FreedomBox desde la Internet. El valor que se asigne aquí es el que usarán Chat Server (XMPP), Matrix Synapse, Certificates (Let's Encrypt), y Monkeysphere.
Página Principal (home) del Servidor WebEsta es una opción avanzada que te permite establecer como home algo diferente al servicio FreedomBox para que se sirva a quien acceda con el navegador al nombre de dominio de FreedomBox. Por ejemplo, si el nombre de dominio de tu FreedomBox es y estableces a MediaWiki como home, al visitar te llevará a en vez de a . Puedes asignar la home a cualquier aplicación web, los wikis y blogs de Ikiwiki o la página index.html por defecto de Apache. Una vez asignada como home otra aplicación, ya solo puedes navegar al servicio FreedomBox tecleando en el navegador . /freedombox también se puede usar como alias para /plinth Consejo: Guarda la URL del servicio FreedomBox antes de asignar la home a otra app. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Contribute.raw.wiki b/doc/manual/es/Contribute.raw.wiki new file mode 100644 index 000000000..5a052e30e --- /dev/null +++ b/doc/manual/es/Contribute.raw.wiki @@ -0,0 +1,112 @@ +# language es +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Contribute|English]] - Español -~ +---- + +<> + +## BEGIN_INCLUDE + += Participa = + +Desde la codificación, el diseño y la traducción hasta la divulgación y las donaciones he aquí varias formas de contribuir a !FreedomBox. + +== Enlaces Rápidos == + +[[https://docs.freedombox.org/|Manual del Desarrollador de FreedomBox]] <
> +[[FreedomBox/ProgressCalls|Reuniones de revisión de avance]] <
> +[[FreedomBox/TODO|Página de trabajos pendientes]] <
> +[[https://www.freedomboxfoundation.org/donate/|Página de Donaciones]]<
> + + +== Bienvenida a los recién llegados == + +Como nuevo contribuyente, eres más que bienvenido a presentarte a otros en el [[https://discuss.freedombox.org/c/development|foro de debate]], la [[http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss|lista de correo]] o el [[irc://irc.debian.org/freedombox|canal de IRC]] de !FreedomBox. Además de hacer contactos útiles, puedes empezar a informar fallos y traducir (ver abajo) el wiki y el interfaz de !FreedomBox. + +== Prioridades de Desarrollo == + +Las prioridades se discuten regularmente. Encontrarás el avance del Servicio !FreedomBox con sus prioridades aquí: [[https://salsa.debian.org/groups/freedombox-team/-/boards|panel de tareas]] e [[https://salsa.debian.org/groups/freedombox-team/-/milestones|hitos]]. + +Por favor, asiste a las próximas [[FreedomBox/ProgressCalls|reuniones de avance]] para mantenerte al día y tratar con los miembros del equipo de publicación (release). La [[FreedomBox/TODO|Página de trabajos pendientes]] recopila la lista completa de los elementos en los que trabajar para !FreedomBox. + +== Se necesitan Contribuciones == + +=== Añadir una Aplicación === + +Si eres desarrollador y quieres ver disponible en !FreedomBox alguna aplicación, puedes contribuir añadiéndola a !FreedomBox. Mira el [[https://docs.freedombox.org/|Manual del Desarrollador de FreedomBox]]. + +=== Defectos === + +Las listas de defectos, peticiones de funcionalidad y mejoras se controlan en el [[https://salsa.debian.org/freedombox-team/freedombox/issues/|gestor de tiquets]] de !FreedomBox. Mira también la [[FreedomBox/Contribute/Bugs|lista de defectos]] para ayudar al paquete Debian del que dependemos y el [[https://qa.debian.org/developer.php?login=freedombox-pkg-team%40lists.alioth.debian.org&comaint=yes|cuadro de mando del equipo de paquetizado]] de !FreedomBox para ver el estado los paquetes que usamos. + +=== Codificar === + +Si eres desarrollador puedes contribuir código a algún sub-proyecto de !FreedomBox. Éste es el procedimiento paso a paso para [[FreedomBox/Contribute/Code|contribuir código]]. + + * [[FreedomBox/Plinth|Servicio FreedomBox]]: un interfaz web para administrar las funciones de !FreedomBox. + * [[FreedomBox/Maker|Freedom Maker]]: un script para construir imágenes de disco de !FreedomBox para usarlas en dispositivos de hardware variados o en máquinas virtuales. + +Puedes tomar una tarea de la [[FreedomBox/TODO|Página de trabajos pendientes]]. Las páginas de cada proyecto contienen información acerca de acceso al código, cómo construir y listas de trabajos pendientes. + +=== Diseño === + +==== Diseño de Experiencia de Usuario (UX) ==== + +Si eres diseñador de UX, puedes ayudar a !FreedomBox con esto: + + * Experiencia de interacción para el interfaz web del Servicio !FreedomBox. + * Diseño web para los sitios [[https://freedombox.org|freedombox.org]], [[https://freedomboxfoundation.org|freedomboxfoundation.org]] y el [[FreedomBox|wiki]]. + * Logo y marca (actualmente tenemos [[https://salsa.debian.org/freedombox-team/freedombox/tree/master/static/themes/default|un manual de identidad y logos]]). + * Propuestas de diseño para casos de uso de !FreedomBox sobre SBCs personalizados. + * [[FreedomBox/Design|Diseño de UX]] + +==== Diseño Técnico ==== + +!FreedomBox necesita tu conocimiento técnico para elaborar planes de implementación de nuevas funcionalidades. Puedes contribuir a los debates acerca de varios aspectos de diseño técnico e implementación de !FreedomBox. Mira la [[https://discuss.freedombox.org/c/development|sección de desarrollo]] de los foros de discusión. + +=== Donar === + +La ''[[https://freedomboxfoundation.org|FreedomBox Foundation]]'' es una corporación federal 501(c)(3) reconocida por el IRS. El proyecto !FreedomBox lo llevan voluntarios. Puedes ayudar a su financiación donando mediante !PayPal, Bitcoin o enviando un cheque. Mira por favor la [[https://www.freedomboxfoundation.org/donate/|página de donación]] para más detalles acerca de cómo donar. + +=== Documentar: Manual de Usuario, Sitio Web y Wiki === + +!FreedomBox necesita mejor documentación para usuarios y contribuyentes. El manual de !FreedomBox se prepara agregando diferentes páginas del wiki y exportando a various formatos. El manual se usa en el Servicio !FreedomBox y en otros sitios. + +Si quieres contribuir al [[FreedomBox|wiki]] (y por extensión al manual) de !FreedomBox, puedes crear una cuenta en el wiki y empezar a editar. + +Para contribuir al sitio web por favor inicia un debate en la [[https://discuss.freedombox.org/c/development|sección de desarrollo]] del foro de !FreedomBox. + +=== Asegurar la Calidad === + + * !FreedomBox ya funciona sobre muchas plataformas y a los desarrolladores les resulta imposible probar en todas. Si tienes algún hardware soportado puedes ayudar probando !FreedomBox en tu platforma. + + * Cuando se integra una nueva aplicación en !FreedomBox, el desarrollador que hace el trabajo no prueba toda la functionalidad en el mundo real. Desplegar la aplicación y probarla ayudará a tener aplicaciones de alta calidad en !FreedomBox. + +Mira en la página de [[FreedomBox/QualityAssurance|aseguramiento de la calidad]] la lista de casos de prueba que hay que verificar y la información acerca de cómo informar defectos. + +=== Localizar (l10n) === + +Todo texto visible por los usuarios de !FreedomBox necesita ser localizado a varios idiomas. Este trabajo de traducción incluye: + + * El [[FreedomBox/Plinth|Interfaz web]] de !FreedomBox + * La documentación de !FreedomBox + * El [[FreedomBox|wiki]] y los sitios web de [[https://freedombox.org|FreedomBox]] y la ''[[https://freedomboxfoundation.org|Freedombox Foundation]]''. + * El [[https://docs.djangoproject.com/en/dev/internals/contributing/localizing/|framework Django]] que emplea !FreedomBox. + * Cada aplicación que !FreedomBox expone a sus usuarios. + +Puedes contribuir al esfuerzo de localización usando la herramienta web [[https://hosted.weblate.org/projects/freedombox/|Weblate]] o directamente en el repositorio de código mediante [[https://salsa.debian.org/freedombox-team/freedombox/tree/master/plinth/locale|Salsa]]. + +Si quieres ver a !FreedomBox disponible en alguno de tus idiomas, por favor abre un debate en la [[https://discuss.freedombox.org/c/development|sección de desarrollo]] del foro de !FreedomBox para trabajar con otros traduciendo para ese idioma. + +Para más información, por favor visita la página de [[FreedomBox/Translate|traductores]]. + +=== Correr la Voz === + +Cuenta a tu familia, amistades, comunidad local o en conferencias globales la importancia de !FreedomBox. Para ser un proyecto exitoso necesitamos muchos más +participantes, ya sean usuarios o contribuyentes. Comenta tus esfuerzos de divulgación en la [[https://www.freedomboxfoundation.org/appearances/index.en.html|página de charlas]] y en el [[FreedomBox/TalksAndPresentations|wiki]]. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Coquelicot.raw.xml b/doc/manual/es/Coquelicot.raw.xml deleted file mode 100644 index 2c28f8e63..000000000 --- a/doc/manual/es/Coquelicot.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Coquelicot52020-05-30 19:32:53SunilMohanAdapaUpdate the title to emphasize app name over its generic name42020-05-24 06:45:44fioddorSe alinea con la versión 10 en inglés del 23 de mayo de 202032020-04-13 16:17:26fioddorSe alinea con la versión 08 en inglés del 12 de abril de 202022019-09-11 10:34:42fioddorCorrecciones menores.12019-09-11 10:27:55fioddorSe crea la versión española.
Coquelicot (Compartición de Archivos)
Acerca de CoquelicotCoquelicot es aplicación web para compartir archivos enfocada a proteger la privacidad de sus usuarios. El principio básico es simple: los usuarios pueden subir un archivo al servidor y a cambio reciben una URL única para descargarlo que se puede compartir con terceros. Además se puede establecer una contraseña para reforzar el acceso. Más información acerca de Coquelicot en su LEEME Disponible desde: versión 0.24.0
Cuando usar CoquelicotEl mejor uso de Coquelicot es para compartir rápidamente un archivo suelto. Si quieres compartir una carpeta... ...para usar y tirar, comprime la carpeta y compartela como archivo con Coquelicot ...que deba mantenerse sincronizada entre ordenadores usa mejor Syncthing Coquelicot también puede proporcionar un grado de privacidad razonable. Si se necesita anonimato mejor sopesas emplear la aplicación de escritorio Onionshare. Como Coquelicot carga todo el archivo al servidor tu FreedomBox consumirá ancho de banda tanto para la subida como para la descarga. Para archivos muy grandes sopesa compartirlos creando un fichero BitTorrent privado. Si se necesita anonimato usa Onionshare. Es P2P y no necesita servidor.
Coquelicot en FreedomBoxCon Coquelicot instalado puedes subir archivos a tu servidor FreedomBox y compartirlos en privado. Tras la instalación la página de Coquelicot ofrece 2 preferencias. Contraseña de Subida: Actualmente y por facilidad de uso Coquelicot está configurado en FreedomBox para usar autenticación simple por contraseña. Recuerda que se trata de una contraseña global para esta instancia de Coquelicot y no tu contraseña de usuario para FreedomBox. Tienes que acordarte de esta contraseña. Puedes establecer otra en cualquier momento desde el interfaz de FreedomBox. Tamaño Máximo de Archivo: Puedes alterar el tamaño máximo de los archivos a transferir mediante Coquelicot usando esta preferencia. El tamaño se expresa en Mebibytes y el máximo solo está limitado por el espacio en disco de tu FreedomBox.
PrivacidadAlguien que monitorice tu tráfico de red podría averiguar que se está transfiriendo un archivo en tu FreedomBox y posiblemente también su tamaño pero no sabrá su nombre. Coquelicot cifra los archivos en el servidor y sobrescribe los contenidos con 0s al borrarlos, eliminando el riesgo de que se desvelen los contenidos del fichero si tu FreedomBox resultara confiscada o robada. El riesgo real que hay que mitigar es que además del destinatario legítimo un tercero también descargue tu fichero.
Compartir mediante mensajería instantáneaAlgunas aplicaciones de mensajería instantánea con vista previa de sitios web podrían descargar tu fichero para mostrarla (su vista previa) en la conversación. Si configuras la opción de descarga única para un archivo podrías notar que la aplicación de mensajería consume la única descarga. Si compartes mediante estas aplicaciones usa una contraseña de descarga en combinación con la opción de descarga única.
Compartir en privado enlaces de descargaSe recomienda compartir las contraseñas y los enlaces de descarga de tus archivos por canales cifrados. Puedes evitar todos los problemas anteriores con las vistas previas de la mensajería instantánea símplemente empleando aplicaciones de mensajería que soporten conversaciones cifradas como Riot con Matrix Synapse o XMPP (servidor ejabberd en FreedomBox) con clientes que soporten cifrado punto a punto. Envía la contraseña y el enlace de descarga separados en 2 mensajes distintos (ayuda que tu aplicación de mensajería soporte perfect forward secrecy como XMPP con OTR). También puedes compartir tus enlaces por correo electrónico cifrado con PGP usando Thunderbird. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Coturn.raw.wiki b/doc/manual/es/Coturn.raw.wiki new file mode 100644 index 000000000..c73cfaa65 --- /dev/null +++ b/doc/manual/es/Coturn.raw.wiki @@ -0,0 +1,67 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Coturn|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Coturn (Asistente para VoIP) == +|| {{attachment:FreedomBox/Manual/Coturn/Coturn-icon_en_V01.png|icono de Coturn}} || + +'''Disponible desde''': versión 20.8 + +Coturn es un servidor para facilitar llamadas y conferencias de audio/video proporcionando una implementación de los protocolos TURN y STUN. Los servidores de comunicación por WebRTC, SIP y otros pueden usarlo para establecer una llamada entre partes que de otro modo no podrían conectarse entre si. + +No está pensado para que lo usen diréctamente los usuarios. Los servidores como Matrix Synapse necesitan configurarse con los datos proporcionados en la página de app de Coturn. Además de Matrix Synapse, Jitsi, Ejabberd, Nextcloud Talk, etc. pueden usar el servidor Coturn para llamadas y conferencias de audio/video. No hace falta que los servidores se ejecuten en la misma máquina que !FreedomBox. Los servidores externos pueden usar un Coturn ejecutado en !FreedomBox. + +Coturn está configurada en !FreedomBox como app avanzada. Esto implica que para ver el icono de Coturn en la sección "Apps" necesitas marcar en "Mostrar apps y funcionalidades avanzadas" en "Configuración General". + +=== Cómo funciona === + +Al hacer una llamada de audio/video lo mejor es enrutar los flujos multimedia directamente entre los pares porque minimiza la latencia (mejor calidad de señal) y evita depender de un servidor centralizado (privacidad). Esto escala bien porque un servidor de chat simple puede albergar miles de llamadas sin involucrarse de ningún otro modo que para establecer la llamada. Sin embargo este enfoque no suele funcionar la mayoría de las veces por cómo se configuran las redes. La mayoría de los pares de la red carecen de una dirección IP propia reservada para ellos y suelen operar detrás de un dispositivo de red que les traduce las direcciones de red (NAT: ''"Network Address Translation"''). Esto significa que en realidad estos pares no tienen modo de alcanzarse entre sí directamente. + +Para abordar este problema se introdujo una técnica simple conocida como STUN. Con ayuda de un servidor STUN los pares pueden prescindir de los dispositivos NAT para transmitir entre ellos. Desafortunadamente este truco solo funciona un 80% de las ocasiones. Así que si STUN falla, los pares no tienen más opción que enrutar su comunicación a través de un intermediario llamado servidor TURN. Todo el mecanismo de intentar primero con STUN y recaer en TURN se describe en un protocolo llamado ICE. + +En !FreedomBox, Coturn proporciona servidores STUN y TURN. Ambos servicios se proporcionan tanto sobre TCP como sobre UDP y tanto en canales cifrados (que tienen mayor probabilidad de éxito) como sin cifrar. Como los servidores STUN son baratos y no consumen muchos recursos no se necesita autenticación para usarlos. Por otra parte los servidores TURN sí la necesitan. Esta autenticación está altamente simplificada y no requiere mantener una base de datos de usuarios. Un servidor como matrix-synapse que vaya a establecer una llamada de audio/video entre dos pares generará un nombre de usuario y contraseña empleando un secreto compartido. Cuando los pares usen el servidor TURN se les validará usando estas credenciales porque el servidor TURN conoce este secreto. + +En resumen, un servidor de comunicaciones necesita saber las URLs de los servidores STUN/TURN junto con el secreto de autenticación para TURN. Después, durante el establecimiento de la llamada de audio/video guiarán a los pares a usar los servidores STUN/TURN. La app Coturn de !FreedomBox proporciona exactamente ésta información, que se puede usar para configurar un servidor de comunicaciones independientemente de que se ejecute en la misma máquina que !FreedomBox o en otro servidor. + +=== Configurar Matrix Synapse === + +El servidor de Matrix Synapse de !FreedomBox se puede configurar para que use el servidor de TURN/STUN Coturn. En el futuro, cuando instales Matrix Synapse !FreedomBox instalará Coturn automáticamente y configurará sus parámetros en Matrix Synapse. Para configurar Matrix Synapse, edita el fichero ''/etc/matrix-synapse/homeserver.yaml'' con las siguientes líneas: + +{{{ +turn_uris: [ "stun:myfreedombox.example.org:3478?transport=udp", "stun:myfreedombox.example.org:3478?transport=tcp", "turn:myfreedombox.example.org:3478?transport=udp", "turn:myfreedombox.example.org:3478?transport=tcp" ] +turn_shared_secret: "my-freedombox-provided-secret" +turn_user_lifetime: 86400000 +turn_allow_guests: True +}}} + +El valor para `turn_shared_secret` se proporciona como `static-auth-secret` en el archivo `/etc/coturn/freedombox.conf`. + +Y luego reinicia el servidor matrix-synapse deshabilitando y rehabilitando la app de matrix-synapse. + +=== Redirección de Puertos === + +Si tu !FreedomBox está detrás de un router, necesitarás configurar la redirección de los siguientes puertos para Coturn: + * UDP 3478 + * TCP 3478 + * UDP 3479 + * TCP 3479 + * UDP 5349 + * TCP 5349 + * UDP 5350 + * TCP 5350 + * UDP 49152-50175 + * TCP 49152-50175 + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Coturn.raw.xml b/doc/manual/es/Coturn.raw.xml deleted file mode 100644 index 699bf1a60..000000000 --- a/doc/manual/es/Coturn.raw.xml +++ /dev/null @@ -1,4 +0,0 @@ -
es/FreedomBox/Manual/Coturn62020-05-30 20:00:26SunilMohanAdapaUpdate the title to emphasize app name over its generic name52020-05-24 07:12:27fioddorSe alinea con la versión 09 en inglés del 23 de mayo de 202042020-05-19 20:56:07fioddorSe alinea con la versión 08 en inglés del 19 de mayo de 202032020-05-10 10:31:28fioddorImprovement22020-05-10 10:30:35fioddorCorrection12020-05-10 10:10:39fioddorNueva página traducida
Coturn (Asistente para VoIP)Coturn es un servidor para facilitar llamadas y conferencias de audio/video proporcionando una implementación de los protocolos TURN y STUN. Los servidores de comunicación por WebRTC, SIP y otros pueden usarlo para establecer una llamada entre partes que de otro modo no podrían conectarse entre si. No está pensado para que lo usen diréctamente los usuarios. Los servidores como Matrix Synapse necesitan configurarse con los datos proporcionados en la página de app de Coturn. Además de Matrix Synapse, Jitsi, Ejabberd, Nextcloud Talk, etc. pueden usar el servidor Coturn para llamadas y conferencias de audio/video. No hace falta que los servidores se ejecuten en la misma máquina que FreedomBox. Los servidores externos pueden usar un Coturn ejecutado en FreedomBox. Coturn está disponible en FreedomBox desde la version 20.8 como app avanzada. Esto implica que para ver el icono de Coturn en la sección "Apps" necesitas marcar en "Mostrar apps y funcionalidades avanzadas" en "Configuración General".
Cómo funcionaAl hacer una llamada de audio/video lo mejor es enrutar los flujos multimedia directamente entre los pares porque minimiza la latencia (mejor calidad de señal) y evita depender de un servidor centralizado (privacidad). Esto escala bien porque un servidor de chat simple puede albergar miles de llamadas sin involucrarse de ningún otro modo que para establecer la llamada. Sin embargo este enfoque no suele funcionar la mayoría de las veces por cómo se configuran las redes. La mayoría de los pares de la red carecen de una dirección IP propia reservada para ellos y suelen operar detrás de un dispositivo de red que les traduce las direcciones de red (NAT: "Network Address Translation"). Esto significa que en realidad estos pares no tienen modo de alcanzarse entre sí directamente. Para abordar este problema se introdujo una técnica simple conocida como STUN. Con ayuda de un servidor STUN los pares pueden prescindir de los dispositivos NAT para transmitir entre ellos. Desafortunadamente este truco solo funciona un 80% de las ocasiones. Así que si STUN falla, los pares no tienen más opción que enrutar su comunicación a través de un intermediario llamado servidor TURN. Todo el mecanismo de intentar primero con STUN y recaer en TURN se describe en un protocolo llamado ICE. En FreedomBox, Coturn proporciona servidores STUN y TURN. Ambos servicios se proporcionan tanto sobre TCP como sobre UDP y tanto en canales cifrados (que tienen mayor probabilidad de éxito) como sin cifrar. Como los servidores STUN son baratos y no consumen muchos recursos no se necesita autenticación para usarlos. Por otra parte los servidores TURN sí la necesitan. Esta autenticación está altamente simplificada y no requiere mantener una base de datos de usuarios. Un servidor como matrix-synapse que vaya a establecer una llamada de audio/video entre dos pares generará un nombre de usuario y contraseña empleando un secreto compartido. Cuando los pares usen el servidor TURN se les validará usando estas credenciales porque el servidor TURN conoce este secreto. En resumen, un servidor de comunicaciones necesita saber las URLs de los servidores STUN/TURN junto con el secreto de autenticación para TURN. Después, durante el establecimiento de la llamada de audio/video guiarán a los pares a usar los servidores STUN/TURN. La app Coturn de FreedomBox proporciona exactamente ésta información, que se puede usar para configurar un servidor de comunicaciones independientemente de que se ejecute en la misma máquina que FreedomBox o en otro servidor.
Configurar Matrix SynapseEl servidor de Matrix Synapse de FreedomBox se puede configurar para que use el servidor de TURN/STUN Coturn. En el futuro, cuando instales Matrix Synapse FreedomBox instalará Coturn automáticamente y configurará sus parámetros en Matrix Synapse. Para configurar Matrix Synapse, edita el fichero /etc/matrix-synapse/homeserver.yaml con las siguientes líneas: Y luego reinicia el servidor matrix-synapse deshabilitando y rehabilitando la app de matrix-synapse. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Cubieboard2.raw.wiki b/doc/manual/es/Cubieboard2.raw.wiki new file mode 100644 index 000000000..aad8164d0 --- /dev/null +++ b/doc/manual/es/Cubieboard2.raw.wiki @@ -0,0 +1,40 @@ +== Cubieboard 2 == + +{{attachment:cubieboard2.jpg|Cubieboard 2|width=640,height=426}} + +The Cubieboard 2 is a single board computer based on the Allwinner A20 processor. It doesn't require any non-free firmware to run !FreedomBox, and Wifi capability can be added via a USB adaptor if needed. This board is available in two versions, one with on-board flash and a microSD slot, and a version with two microSD card slots. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] are available for this device. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. + +=== Availability === + + * [[http://cubieboard.org/buy|Full list of suppliers]] + +=== Hardware === + + * CPU: ARM Cortex A7 Dual-Core + * RAM: 1GB DDR3 @960M + * Storage: 4GB internal NAND flash, up to 64GB on uSD slot + * Architecture: armhf + * Ethernet: 10/100, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: Yes + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + + +Cubieboard 2 image is licensed under a Creative Commons Attribution-!ShareAlike 2.0 Generic License by [[https://www.flickr.com/photos/120586634@N05/14673300334/in/photolist-pMbdDm-omCuYN-o5kVMu-dy9jTD-dy99Kz|Flickr]]. diff --git a/doc/manual/es/Cubietruck.raw.wiki b/doc/manual/es/Cubietruck.raw.wiki new file mode 100644 index 000000000..cd7c259fc --- /dev/null +++ b/doc/manual/es/Cubietruck.raw.wiki @@ -0,0 +1,56 @@ +== Cubietruck == + +=== FreedomBox Danube Edition === + +{{attachment:freedombox-danube.jpg|FreedomBox Danube Edition|width=640,height=561}} + +[[http://projectdanube.org|FreedomBox Danube Edition]] is a custom casing around Cubietruck and an SSD-hard drive. + +=== Cubietruck / Cubieboard3 === + +[[http://cubieboard.org/model/|Cubietruck]] (Cubieboard3) is a single board computer with very good performance compared to many other boards. !FreedomBox images are built for this device. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] are provided for this hardware. These SD card images are meant for use with the on-board SD card slot and do not work when used with a separate SD card reader connected via USB. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the Cubietruck and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + +Cubietruck / Cubieboard3 + + * Price: 89 USD + * [[http://cubieboard.org/buy/|List of suppliers]] + +=== Hardware === + + * Open Hardware: No + * CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core + * RAM: 2 GiB DDR3 @ 480 MHz + * Storage: 8 GB NAND flash built-in, 1x microSD slot + * Architecture: armhf + * Ethernet: 10/100/1000, RJ45 + * !WiFi: Broadcom BCM4329/BCM40181 (no free !WiFi drivers + firmware available) + * SATA: 1x 2.0 port + +=== Non-Free Status === + + * Non-free blobs required: ? + * !WiFi: no free !WiFi drivers + firmware available + +=== Known Issues === + + * The on-board !WiFi does not work with free software. A separate [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] is recommended. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +[[http://projectdanube.org/|FreedomBox Danube Edition]] image is copyright Markus Sabadello, used here with permission. diff --git a/doc/manual/es/DateTime.raw.wiki b/doc/manual/es/DateTime.raw.wiki new file mode 100644 index 000000000..b96b52c68 --- /dev/null +++ b/doc/manual/es/DateTime.raw.wiki @@ -0,0 +1,28 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/DateTime|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Fecha y hora == + +Este servidor de hora de red es un programa que mantiene el tiempo del sistema sincronizado con servidores de Internet. + +Puedes seleccionar el huso horario + * escogiendo una capital cercana (están ordenadas por ''Continente/Ciudad'') o + * seleccionando directamente el huso en relación a GMT (Greenwich Mean Time). + +{{attachment:DateTime_es_v01.png}} + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/DateTime.raw.xml b/doc/manual/es/DateTime.raw.xml deleted file mode 100644 index f1eb44e2e..000000000 --- a/doc/manual/es/DateTime.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/DateTime42020-04-11 10:24:24fioddorhttps://salsa.debian.org/freedombox-team/plinth/-/issues/1831#note_15425832020-04-03 18:15:29fioddorSe usa imagen traducida y más actual.22020-04-03 17:08:45fioddorSe alinea con la versión 03 en inglés del 30 de marzo de 202012019-06-19 10:26:32fioddorSe crea la versión española.
Fecha y horaEste servidor de hora de red es un programa que mantiene el tiempo del sistema sincronizado con servidores de Internet. Puedes seleccionar el huso horario escogiendo una capital cercana (están ordenadas por Continente/Ciudad) o seleccionando directamente el huso en relación a GMT (Greenwich Mean Time). DateTime_es_v01.png Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Debian.raw.wiki b/doc/manual/es/Debian.raw.wiki new file mode 100644 index 000000000..6e1192ec4 --- /dev/null +++ b/doc/manual/es/Debian.raw.wiki @@ -0,0 +1,87 @@ +#language en +#pragma section-numbers 2 +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[de/FreedomBox/Hardware/Debian|Deutsch]] - English - [[es/FreedomBox/Hardware/Debian|Español]]-~ + +## BEGIN_INCLUDE + +== Debian == + +##{{attachment:debian.png|Debian|width=425,height=546}} + +!FreedomBox is a [[DebianPureBlends|pure blend]] of Debian. This means that all the work on !FreedomBox is available in Debian as packages. It also means that any machine running Debian can be turned into a !FreedomBox. + +This page describes the process of installing !FreedomBox on a Debian system. Currently, !FreedomBox works in Debian Stable (Buster), Testing (Bullseye), and Unstable (Sid). + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this approach. + +{{{#!wiki caution +'''Use a fresh Debian installation''' + +Installing !FreedomBox changes your Debian system in many important ways. This includes installing a firewall and regenerating server certificates. It is hence recommended that you install !FreedomBox on a fresh Debian installation instead of an existing setup. +}}} + +{{{#!wiki caution +'''Console/GUI logins for non-admin users will be disabled''' + +After !FreedomBox is fully setup, your system will no longer allow users not belonging to the ''admin'' group to log in to the system via console, secure shell (SSH) or graphical login. This behaviour can be disabled from the [[FreedomBox/Manual/Security|Security]] page. Use the administrator account created during !FreedomBox first boot for console logins and add further user accounts to ''admin'' group, if necessary. +}}} + +=== Installing on Debian 10.0 (Buster) or newer === + +Check the Troubleshooting section below, for any tips or workarounds that might help during the install. + + 1. [[InstallingDebianOn|Install Debian]] 10.0 (Buster), or Unstable (Sid) on your hardware. + + 1. Update your package list. + + {{{ +$ sudo apt-get update + }}} + + 1. Install `freedombox` package. + + {{{ +$ sudo DEBIAN_FRONTEND=noninteractive apt-get install freedombox + }}} + + * The "DEBIAN_FRONTEND=noninteractive" will avoid several configuration prompts that would otherwise appear during the install. + + 1. During the installation, you will be provided a secret key that needs to be entered during the initial configuration process. Note this down. The secret can also be read at a later time from the file `/var/lib/plinth/firstboot-wizard-secret`. + + 1. You can start [[FreedomBox/Manual/QuickStart|using]] !FreedomBox. During initial wizard, you will need to enter the secret noted above. + +=== Tips and Troubleshooting === + + 1. !FreedomBox uses !NetworkManager to manage network configuration. If you have configured your network interfaces using Debian installer or by editing `/etc/network/interfaces`, !FreedomBox will not manage those interfaces. (See [[https://bugs.debian.org/797614|bug #797614]].) To let !FreedomBox/NetworkManager manage your network interfaces, edit the `/etc/network/interfaces` manually and ensure that it contains only the following: + + {{{ +auto lo +iface lo inet loopback +}}} + + If you have already completed the setup process without doing this step, you will need to clear out the `/etc/network/interfaces` file keeping only the above lines. Then perform a reboot. On Debian 9 (Stretch), after this network connections configured by the `setup` step above will configure your network. Network interfaces will then be in the `internal` or `external` firewall zone. This is essential for the !FreedomBox's web interface to be reachable from other machines in the network. You can tweak network manager connections with the `nmtui` command if you wish. + + 1. !FreedomBox will use an automatically configured IP address by default. You can assign a static IP address if necessary. Network configuration changes can be done using !FreedomBox web interface or by using the `nmtui` or `nmcli` commands. `nmcli` can be used as follows: + + {{{ + nmcli con mod "Ethernet connection 1" \ + ipv4.addresses A.A.A.A/X \ + ipv4.gateway G.G.G.G \ + ipv4.dns N.N.N.N \ + ipv4.dns-search somedomain.com \ + ipv4.method "manual" \ + ipv4.ignore-auto-dns yes \ + ipv6.method ignore +}}} + + ...with the block capitals and somedomain.com replaced with your actual address, mask description, gateway and dns server details. + + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +See the [[https://www.debian.org/logos/|Debian logo]] page for information on its copyright. diff --git a/doc/manual/es/Deluge.raw.wiki b/doc/manual/es/Deluge.raw.wiki new file mode 100644 index 000000000..2f9ccb327 --- /dev/null +++ b/doc/manual/es/Deluge.raw.wiki @@ -0,0 +1,49 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Deluge|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Deluge (Cliente web de BitTorrent) == +|| {{attachment:FreedomBox/Manual/Deluge/Deluge-icon_en_V01.png|icono de Deluge}} || + +'''Disponible desde''': versión 0.5 + +=== ¿Qué es Deluge? === + +''!BitTorrent'' es un protocolo de comunicaciones para compartir ficheros entre pares (P2P = ''peer-to-peer''). No es anónimo; debes asumir que otros puedan ver qué ficheros estás comprtiendo. Hay 2 clientes web para !BitTorrent disponibles en !FreedomBox: [[es/FreedomBox/Manual/Transmission|Transmission]] y ''Deluge''. Tienen funcionalidades similares pero quizá prefieras uno sobre otro. + +Deluge es un cliente !BitTorrent altamente configurable. Se puede añadir funcionalidad adicional instalando extensiones (''plugins''). + +=== Captura de pantalla === + +{{attachment:deluge.png|Deluge Web UI|width=800}} + +=== Configuración Inicial === + +Tras instalar ''Deluge'' se puede acceder apuntando tu navegador a {{{https:///deluge}}}. Necesitarás introducir una contraseña para ingresar: + +{{attachment:deluge_login.png|Deluge Login}} + +La contraseña inicial es `deluge`. La primera vez que ingreses ''Deluge'' te preguntará si quieres cambiarla. Debes cambiarla por algo más dificil de adivinar. + +A continuación se te mostrará el administrador de conexiones. Haz clic sobre la primera entrada (Offline - 127.0.0.1:58846). Luego pulsa "Arrancar el Demonio" para que arranque el servicio ''Deluge service'' que se ejecutará en segundo plano. + +{{attachment:deluge_connection_manager.png|Deluge Connection Manager (Offline)}} + +Ahora debería poner "Online". Haz clic en "Conectar" para completar la configuración. + +{{attachment:deluge_connection_manager_2.png|Deluge Connection Manager (Online)}} + +En este punto ya estás usando ''Deluge''. Puedes hacer más cambios en las Preferencias o añadir un fichero o una URL de torrent. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Deluge.raw.xml b/doc/manual/es/Deluge.raw.xml deleted file mode 100644 index 9eec2889c..000000000 --- a/doc/manual/es/Deluge.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Deluge52020-05-30 20:00:52SunilMohanAdapaMatch title with FreedomBox interface42020-05-30 19:33:24SunilMohanAdapaUpdate the title to emphasize app name over its generic name32020-05-24 06:26:30fioddorSe alinea con la versión 12 en inglés del 23 de mayo de 202022019-09-04 09:35:32fioddorCorrección menor12019-09-04 09:33:21fioddorSe crea la versión española.
Deluge (Cliente web de BitTorrent)
¿Qué es Deluge?BitTorrent es un protocolo de comunicaciones para compartir ficheros entre pares (P2P = peer-to-peer). No es anónimo; debes asumir que otros puedan ver qué ficheros estás comprtiendo. Hay 2 clientes web para BitTorrent disponibles en FreedomBox: Transmission y Deluge. Tienen funcionalidades similares pero quizá prefieras uno sobre otro. Deluge es un cliente BitTorrent altamente configurable. Se puede añadir funcionalidad adicional instalando extensiones (plugins).
Captura de pantallaDeluge Web UI
Configuración InicialTras instalar Deluge se puede acceder apuntando tu navegador a https://<tu freedombox>/deluge. Necesitarás introducir una contraseña para ingresar: Deluge Login La contraseña inicial es deluge. La primera vez que ingreses Deluge te preguntará si quieres cambiarla. Debes cambiarla por algo más dificil de adivinar. A continuación se te mostrará el administrador de conexiones. Haz clic sobre la primera entrada (Offline - 127.0.0.1:58846). Luego pulsa "Arrancar el Demonio" para que arranque el servicio Deluge service que se ejecutará en segundo plano. Deluge Connection Manager (Offline) Ahora debería poner "Online". Haz clic en "Conectar" para completar la configuración. Deluge Connection Manager (Online) En este punto ya estás usando Deluge. Puedes hacer más cambios en las Preferencias o añadir un fichero o una URL de torrent. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Developer.raw.wiki b/doc/manual/es/Developer.raw.wiki new file mode 100644 index 000000000..bcac8d400 --- /dev/null +++ b/doc/manual/es/Developer.raw.wiki @@ -0,0 +1,12 @@ +## BEGIN_INCLUDE + +El Manual del Desarrollador de !FreedomBox proporciona un tutorial paso a paso para escribir apps para !FreedomBox y una referencia para la API. Está disponible en [[https://docs.freedombox.org|docs.freedombox.org]]. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Diagnostics.raw.wiki b/doc/manual/es/Diagnostics.raw.wiki new file mode 100644 index 000000000..da48678ea --- /dev/null +++ b/doc/manual/es/Diagnostics.raw.wiki @@ -0,0 +1,23 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Diagnostics|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Diagnósticos == + +La prueba de diagnóstico del sistema ejecutará varias verificaciones sobre tu sistema para confirmar que las aplicaciones y servicios están funcionando como se espera. + +Sólo haz clic ''Ejecutar Diagnósticos''. Esto puede llevar varios minutos. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Diagnostics.raw.xml b/doc/manual/es/Diagnostics.raw.xml deleted file mode 100644 index 64251a654..000000000 --- a/doc/manual/es/Diagnostics.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Diagnostics12019-06-19 10:39:40fioddorSe crea la versión española.
DiagnósticosLa prueba de diagnóstico del sistema ejecutará varias verificaciones sobre tu sistema para confirmar que las aplicaciones y servicios están funcionando como se espera. Sólo haz clic Ejecutar Diagnósticos. Esto puede llevar varios minutos. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Download.raw.wiki b/doc/manual/es/Download.raw.wiki new file mode 100644 index 000000000..1f119850a --- /dev/null +++ b/doc/manual/es/Download.raw.wiki @@ -0,0 +1,259 @@ +# language es +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[de/FreedomBox/Download|Deutsch]] - [[FreedomBox/Download|English]] - Español - [[fr/FreedomBox/Telecharger|Français]] -~ +---- +<> + +## BEGIN_INCLUDE + += Descarga e Instalación = + +Bienvenido a la página de descargas de !FreedomBox. + + '''Nota''': Si has comprado un kit !FreedomBox esta sección no está pensada para tí, así que puedes simplemente saltártela entera. (A no ser que quieras específicamente compilarte una imagen alternativa del software). + +Puedes instalar !FreedomBox sobre alguno de los baratos dispositivos [[es/FreedomBox/Hardware|hardware]] soportados, sobre cualquier sistema operativo [[es/FreedomBox/Hardware/Debian|Debian]] Linux, o sobre una máquina virtual. + +Instalar en una máquina que lleve el sistema Debian es fácil porque !FreedomBox está disponble como paquete. Recomendamos instalar !FreedomBox sobre una placa SBC soportada. La placa estaría dedicada al uso de !FreedomBox en el hogar. Esto evitará un montón de riesgos, como configuraciones accidentalmente incorectas por el usuario. En caso de duda decidiendo qué hardware es el más apropiado para tí o durante la instalación, usa por favor la [[es/FreedomBox/Support|página de soporte]] o lee la página de [[es/FreedomBox/QuestionsAndAnswers|Preguntas y Respuestas]] basada en los archivos de la lista de correo [[https://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss|Freedombox-discuss]]. + +== Descargando en Debian == + +Si estás instalando sobre un sistema Debian existente no necesitas descargar las imágenes. Lee las [[es/FreedomBox/Hardware/Debian|instrucciones]] para configurar !FreedomBox en Debian. + +== Descargando para placa SBC o Máquina Virtual == + +=== Preparar tu dispositivo === + +Lee las instrucciones específicas para tu hardware respecto a como preparar tu dispositivo en la sección [[es/FreedomBox/Hardware|Hardware]]. En la web hay abundante documentación respecto a como configurar tu dispositivo y grabar USB's o tarjetas SD para arrancar tu hardware. + +=== Descargar Imágenes === + +Las imágenes recientes para hardware soportado están disponibles aquí: + + * Imágenes Oficiales: https://freedombox.org/download/ + + * Imágenes Oficiales: https://ftp.freedombox.org/pub/freedombox/ + +=== Verificar las Imágenes Descargadas === + +Es importante verificar las imágenes que has descargado para asegurar que el fichero no se ha corrompido durante la transmisión y que efectívamente es la imagen construída por los desarrolladores de !FreedomBox. + +'''Nota:''' Las imágenes de prueba y nocturnas las firma el servidor de integración contínua de !FreedomBox automaticamente. + + * Primero abre un terminal e importa las claves publicas de los desarrolladores de !FreedomBox que construyeron las imágenes: + {{{ +$ gpg --recv-keys BCBEBD57A11F70B23782BC5736C361440C9BC971 + +$ gpg --recv-keys 7D6ADB750F91085589484BE677C0C75E7B650808 + +# Esta es la clave del servidor de integración contínua de FreedomBox +$ gpg --recv-keys 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8 +}}} + Si este comando muestra un error como ''new key but contains no user ID - skipped'' usa un servidor de claves diferente para descargarlas: + {{{ +$ gpg --keyserver keys.gnupg.net --recv-keys BCBEBD57A11F70B23782BC5736C361440C9BC971 +$ gpg --keyserver keys.gnupg.net --recv-keys 7D6ADB750F91085589484BE677C0C75E7B650808 +$ gpg --keyserver keys.gnupg.net --recv-keys 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8 + }}} + O + {{{ +$ gpg --keyserver keyserver.ubuntu.com --recv-keys BCBEBD57A11F70B23782BC5736C361440C9BC971 +$ gpg --keyserver keyserver.ubuntu.com --recv-keys 7D6ADB750F91085589484BE677C0C75E7B650808 +$ gpg --keyserver keyserver.ubuntu.com --recv-keys 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8 + }}} + * A continuación, verifica la huella de las claves públicas: + {{{ +$ gpg --fingerprint BCBEBD57A11F70B23782BC5736C361440C9BC971 +pub 4096R/0C9BC971 2011-11-12 + Key fingerprint = BCBE BD57 A11F 70B2 3782 BC57 36C3 6144 0C9B C971 +uid Sunil Mohan Adapa +sub 4096R/4C1D4B57 2011-11-12 + +$ gpg --fingerprint 7D6ADB750F91085589484BE677C0C75E7B650808 +pub 4096R/7B650808 2015-06-07 [expires: 2020-06-05] + Key fingerprint = 7D6A DB75 0F91 0855 8948 4BE6 77C0 C75E 7B65 0808 +uid James Valleroy +uid James Valleroy +sub 4096R/25D22BF4 2015-06-07 [expires: 2020-06-05] +sub 4096R/DDA11207 2015-07-03 [expires: 2020-07-01] +sub 2048R/2A624357 2015-12-22 + +$ gpg --fingerprint 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8 +pub rsa4096 2018-06-06 [SC] + 013D 86D8 BA32 EAB4 A669 1BF8 5D41 53D6 FE18 8FC8 +uid [ unknown] FreedomBox CI (Continuous Integration server) +sub rsa4096 2018-06-06 [E] +}}} + * Finalmente, verifica tu imágen descargada con su archivo de firma `.sig`. Por ejemplo: + {{{ +$ $ gpg --verify freedombox-stable-free_buster_cubietruck-armhf.img.xz.sig +gpg: assuming signed data in 'freedombox-stable-free_buster_cubietruck-armhf.img.xz' +gpg: Signature made Sat 09 May 2020 11:54:01 AM EDT +gpg: using RSA key 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8 +gpg: Good signature from "FreedomBox CI (Continuous Integration server) " [undefined] +gpg: WARNING: This key is not certified with a trusted signature! +gpg: There is no indication that the signature belongs to the owner. +Primary key fingerprint: 013D 86D8 BA32 EAB4 A669 1BF8 5D41 53D6 FE18 8FC8 +}}} + +=== Instalación === + +Tras la descarga puedes emplear la imágen para arrancar tu [[es/FreedomBox/Hardware|hardware]] (incluyendo máquinas virtuales). Necesitarás copiar la imágen a la tarjeta de memoria o pincho USB así: + + 1. Averigua en qué dispositivo está tu tarjeta. + + 1. Desconecta tu tarjeta (Sácala de la ranura). + + 1. Ejecuta `dmesg -w` mara mostrar y seguir los mensajes del núcleo (kernel). + + 1. Conecta tu tarjeta (insértala en su ranura). Verás mensajes como estos: + {{{ +[33299.023096] usb 4-6: new high-speed USB device number 12 using ehci-pci +[33299.157160] usb 4-6: New USB device found, idVendor=058f, idProduct=6361 +[33299.157162] usb 4-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3 +[33299.157164] usb 4-6: Product: Mass Storage Device +[33299.157165] usb 4-6: Manufacturer: Generic +[33299.157167] usb 4-6: SerialNumber: XXXXXXXXXXXX +[33299.157452] usb-storage 4-6:1.0: USB Mass Storage device detected +[33299.157683] scsi host13: usb-storage 4-6:1.0 +[33300.155626] scsi 13:0:0:0: Direct-Access Generic- Compact Flash 1.01 PQ: 0 ANSI: 0 +[33300.156223] scsi 13:0:0:1: Direct-Access Multiple Flash Reader 1.05 PQ: 0 ANSI: 0 +[33300.157059] sd 13:0:0:0: Attached scsi generic sg4 type 0 +[33300.157462] sd 13:0:0:1: Attached scsi generic sg5 type 0 +[33300.462115] sd 13:0:0:1: [sdg] 30367744 512-byte logical blocks: (15.5 GB/14.4 GiB) +[33300.464144] sd 13:0:0:1: [sdg] Write Protect is off +[33300.464159] sd 13:0:0:1: [sdg] Mode Sense: 03 00 00 00 +[33300.465896] sd 13:0:0:1: [sdg] No Caching mode page found +[33300.465912] sd 13:0:0:1: [sdg] Assuming drive cache: write through +[33300.470489] sd 13:0:0:0: [sdf] Attached SCSI removable disk +[33300.479493] sdg: sdg1 +[33300.483566] sd 13:0:0:1: [sdg] Attached SCSI removable disk +}}} + + 1. En este caso, el disco insertado recientemente está disponible en ''/dev/sdg''. Toma nota con mucho cuidado para emplearla en el paso de copia más adelante. + + 1. Descomprime la descarga usando tar: + {{{ +$ xz -d freedombox-stable-free_buster_cubietruck-armhf.img.xz +}}} + + El comando de arriba es un ejemplo para la imagen estable para ''cubietruck''. El nombre de archivo de tu descarga será diferente. + + 1. Copia la imágen a tu tarjeta. Asegúrate de que '''NO''' escribes sobre el almacenamiento principal de tu ordenador (como /dev/sda). Asegúrate +también de que '''NO''' ejecutas este paso como root para evitar sobreescribir datos en tu disco duro por una identificación errónea del dispositivo +o fallos al teclear el comando. No habitual es que los usuarios normales tuvieran acceso de escritura sobre los discos USB y tarjetas SD pinchados +en el sistema. Si no tienes permiso para escribir en tu tarjeta SD como usuario normal quizá necesites ejecutar éste comando como root. En tal +caso comprueba y recomprueba todo antes de ejecutar el comando. Otra precaución de seguridad es desconectar todos los demás discos externos excepto +la tarjeta SD antes de ejecutar el comando. + + Por ejemplo, si tu tarjeta SD es ''/dev/sdg'', como en el paso anterior, para copiar la imágen, ejecuta: + {{{ +$ dd bs=1M if=freedombox-stable-free_buster_cubietruck-armhf.img of=/dev/sdg conv=fdatasync status=progress +}}} + +Un comando alternativo para copiar a la tarjeta SD: + {{{ +$ cat freedombox-unstable-free_2015-12-13_cubietruck-armhf.img > /dev/sdg ; sync +}}} +En MS Windows necesitarás una herramienta como ''etcher''. +En MacOS (OSX) puedes usar programas como ''balenaetcher'' y ''rosaimagewriter''. + + El comando anterior es un ejemplo para la imagen estable para ''cubietruck''. El nombre del archivo de tu imágen será diferente. + + Al identificar el dispositivo, usa el destino con letra de unidad como ''/dev/sdg'', NO un destino numerado como ''/dev/sdg1''. El dispositivo + sin número refiere al dispositivo completo, mientras que el numerado refiere a una partición concreta. Queremos usar todo el dispositivo. + Las imágenes descargadas contienen información completa acerca de cuantas particiones debería haber, sus tamaños y tipos. + No necesitas formatear tu tarjeta SD ni crear particiones. Todo el contenido previo de la tarjeta será eliminado durante el proceso de escritura. + + 1. Usa la imágen insertando la tarjeta SD o disco USB en el dispositivo de destino y arrancándolo. Tu dispositivo también debe estár preparado + (ver la sección [[es/FreedomBox/Hardware|Hardware]]). + + 1. Lee (el resto de) el [[es/FreedomBox/Manual|Manual]] para obtener instrucciones acerca de como usar las aplicaciones de !FreedomBox. + + +== Obtener el Código Fuente == + +!FreedomBox es 100% [[https://www.gnu.org/philosophy/free-sw.html|software libre]] y puedes obtener el código fuente para estudiarlo, modificarlo y distribuir mejoras. + +=== Desde (dentro de) FreedomBox === + +!FreedomBox se compone de diferentes programas de software y puedes obtener el código fuente de cualquiera de ellos. Estas instrucciones son similares a obtener y [[https://www.debian.org/doc/manuals/maint-guide/build.en.html|construír]] [[https://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.en.html|código fuente]] [[https://wiki.debian.org/BuildingTutorial|de Debian]] ya que !FreedomBox es una variante pura de Debian. Usando este procedimiento puedes obtener el código fuente de la misma versión del paquete que estás usando actualmene en !FreedomBox. + + 1. Para ver la lista de paquetes software instalados en tu !FreedomBox, ejecuta lo siguiente en un terminal: + {{{ +dpkg -l +}}} + 1. Para obtener el código fuente de cualquiera de esos programas ejecuta: + {{{ +apt source +}}} + Esto requiere que el archivo [[SourcesList|/etc/apt/sources/list]] contenga información acerca de los repositorios de código fuente. Esto es así por defecto en todas las imágenes !FreedomBox. Pero si has instalado !FreedomBox desde Debian necesitas asegurarte de que los repositorios de código fuente figuren en este archivo. + 1. Para construir el paquete desde su código fuente, primero instala sus dependencias + {{{ +apt build-dep +}}} + Cambia al directorio fuente creado con el comando ''apt source'': + {{{ +cd +}}} + Y construye el paquete + {{{ + dpkg-buildpackage -rfakeroot -uc +}}} + 1. Instala el paquete: + {{{ + dpkg -i ../.deb +}}} + +=== Otras Maneras de Obtener el Código Fuente === + + 1. El código fuente de cualquier paquete se puede ver y buscar usando el interfaz web de [[https://sources.debian.org/|sources.debian.org]]. Por ejemplo, mira el paquete [[https://sources.debian.org/src/plinth/|plinth]]. + + 1. El código fuente y el binario precompilado de cualquier version de un paquete, incluyendo versiones antigüas, se pueden obtener de [[https://snapshot.debian.org/|snapshot.debian.org]]. Por ejemplo, mira el paquete [[https://snapshot.debian.org/package/plinth/|plinth]]. + + 1. También puedes obtener los enlaces a la web del proyecto original, al control de versiones del proyecto original, al control de versiones de Debian, registro de cambios, etc. desde la página de control Debian para el proyecto en [[https://tracker.debian.org/|tracker.debian.org]]. Por ejemplo, mira la página de control para el paquete [[https://tracker.debian.org/pkg/plinth|plinth]]. + + 1. Puedes compilar e instalar un paquete desde el control de versiones de Debian. Por ejemplo, + {{{ + git clone https://salsa.debian.org/freedombox-team/freedombox.git + cd freedombox + apt build-dep . + dpkg-buildpackage -rfakeroot -uc + dpkg -i ../freedombox*.deb +}}} + +=== Construyendo Imágenes de disco === + +También puedes construír imágenes de disco !FreedomBox para varias platformas de ''hardware'' usando la herramienta '''freedom-maker'''. Esta también está disponible como paquete Debian y su código fuente se puede obtener empleando los métodos anteriores. Hay disponibles [[https://salsa.debian.org/freedombox-team/freedom-maker/blob/master/README.md|Instrucciones de Construcción]] para generar imágenes de disco incluídas en el código fuente del paquete '''freedom-maker'''. + +Las imágenes de disco de !FreedomBox se construyen y suben a los servidores oficiales empleando la infraestructura de integración contínua automatizada. Esta infraestructura está disponible también como [[https://salsa.debian.org/freedombox-team/infrastructure|código fuente]] y proporciona información precisa acerca de como se contruyen las imágenes de !FreedomBox. + +==== Imágenes U-boot sobre Pioneer Edition ==== + +Hay una excepción menor en el paquete u-boot que viene con el ''hardware'' que se vende como Kits de Servidor Doméstico !FreedomBox Pioneer Edition. Contiene un parche pequeño pero importante que no está en el código fuente de Debian. Tanto el repositorio fuente de Debian u-boot como el parche de !FreedomBox están disponibles como [[https://salsa.debian.org/freedombox-team/u-boot|un repositorio aparte]]. Esperamos que en algún momento este parche esté integrado en u-boot de serie y este repositorio ya no sea necesario. Este paquete se puede compilar en una máquina Debian armhf como sigue (también se puede hacer compilación cruzada, simplemente sigue las instrucciones para compilación cruzada de paquetes Debian): + +{{{ +apt install git git-buildpackage +git clone https://salsa.debian.org/freedombox-team/u-boot.git +cd u-boot +pbuilder create --distribution=buster +gbp buildpackage --git-pbuilder +}}} + +El paquete u-boot Debian estará en ''u-boot-sunxi*.deb''. Este paquete contendrá + +{{{ +mkdir temp +dpkg -x u-boot-suxi*.deb temp +unxz +dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of= seek=8 bs=1k conv=notrunc +}}} + +La imagen resultante tendrá el u-boot modificado. + + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/DynamicDNS.raw.wiki b/doc/manual/es/DynamicDNS.raw.wiki new file mode 100644 index 000000000..8359b65b8 --- /dev/null +++ b/doc/manual/es/DynamicDNS.raw.wiki @@ -0,0 +1,89 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/DynamicDNS|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Cliente de DNS Dinamico == + +=== ¿Qué es DNS Dinamico? === + +Para que se pueda llegar a un servidor desde Internet este necesita tener una dirección pública permanente, también conocida como dirección IP estática o fija. Muchos proveedores de servicio de Internet no otorgan IP fija a sus usuarios normales o la cobran. En su lugar les otorgan una IP temporal diferente cada vez que el usuario se conecta a internet. O una que cambia de vez en cuando. Si es tu caso los clientes que quieran contactar con tu servidor tendrán dificultades. + +Los proveedores de servicio de DNS Dinamico ayudan a solventar este problema. Primero te dan un nombre de dominio, como 'miservidor.ejemplo.org' y te permiten asociar tu dirección IP temporal a este nombre de dominio cada vez que esta cambia. De este modo quien quiera llegar a tu servidor empleará el nombre de dominio 'miservidor.ejemplo.org' que siempre apuntará a la última dirección IP de tu servidor. + +Para que esto funcione cada vez que te conectes a Internet tendrás que decirle a tu proveedor de servicio de DNS Dinamico cual es tu dirección IP provisional actual. Por esto necesitas tener un software especial en tu servidor que haga esto. La funcionalidad DNS Dinamico de tu !FreedomBox permite a los usuarios sin dirección IP pública fija mantener su dirección IP pública temporal actualizada en el servicio de DNS Dinamico. Esto te permite exponer servicios de tu !FreedomBox, como ownCloud, a Internet. + +=== GnuDIP vs. Update URL === + +Eisten 2 mecanismos principales para notificar al the servicio de DNS Dinamico cual es tu dirección IP provisional actual: empleando el protocolo ''GnuDIP'' o empleando el mecanismo ''URL de actualización''. + +Si un servicio expuesto usando URL de actualización no se securiza apropiadamente mediante HTTPS, tus credenciales podrían quedar expuestas. Una vez que un atacante accede a tus credenciales podrá reproducir tus comunicaciones con el servicio de DNS Dinamico y suplantar tu dominio. + +Por otra parte el protocolo GnuDIP solo transportará un valor MD5 salpimentado de tu contraseña de tal forma que es seguro contra ataques de este tipo. + +=== Emplear el protocolo GnuDIP === + + 1. Registra una cuenta en cualquier proveedor de servicio de DNS Dinamico. Hay un servicio gratuito provisto por la comunidad !FreedomBox disponible en https://gnudip.datasystems24.net . + + 1. Habilita el Servicio de DNS Dinamico en el interfaz de usuario de !FreedomBox. + + 1. Selecciona ''GnuDIP'' como ''tipo de servicio'', introduce la dirección de tu proveedor de servicio de DNS Dinamico (por ejemplo, gnudip.datasystems24.net) en el campo ''Dirección del servidor GnuDIP''. + + {{attachment:DynamicDNS-Settings.png|Dynamic DNS Settings|width=800}} + + 1. Completa la información que te ha dado tu proveedor en los campos correspondientes ''Nombre de Dominio'', ''Usuario'' y ''Contraseña''. + +=== Emplear URL de actualización === + +Se implementa esta funcionalidad porque los proveedores de servicio de DNS Dinamico más populares están empleando el mecanismo URL de actualización. + + 1. Registra una cuenta en el proveedor de servicio de DNS Dinamico que emplea el mecanismo Update URL. Se listan algunos proveedores de ejemplo en la propia página de configuración. + + 1. Habilita el Servicio de DNS Dinamico en el interfaz de usuario de !FreedomBox. + + 1. Selecciona ''URL de actualización'' como ''tipo de servicio'', introduce la URL de actualización que te ha dado tu proveedor de servicio de DNS Dinamico en el campo ''URL de actualización''. + + 1. Si vas a la URL de actualización con tu navegador de Internet y te muestra un aviso acerca de un certificado no confiable, activa ''aceptar todos los certificados SSL''. AVISO: ¡Tus credenciales podrían quedar expuestas en este punto a un ataque MIM (man-in-the-middle)! Valora la posibilidad de elegir otro proveedor de servicio mejor. + + 1. Si vas a la URL de actualización con tu navegador de Internet y te muestra la caja de usuario/contraseña, selecciona ''usar autenticación HTTP basica'' e introduce el usuario y la contraseña. + + 1. Si la URL de actualización contiene tu dirección IP temporal actual reemplaza la dirección IP por la cadena de texto ''''. + +=== Comprobar si funciona === + + 1. Asegúrate de que los servicios externos que has habilitado como /jwchat, /roundcube o /ikiwiki están disponibles en tu dirección de dominio. + + 1. Ve a la página ''Estado'' y asegúrate de que el tipo de NAT se detecta correctamente. Si tu !FreedomBox está detrás de un dispositivo NAT debería detectarse en este punto (Texto: ''Detrás de NAT''). Si tu !FreedomBox tiene una dirección IP pública asignada el texto debería ser "Conexión directa a Internet". + + 1. Comprueba que el último estado de actualización no sea ''fallida''. + +=== Recap: How to create a DNS name with GnuDIP === +/* to delete or to replace the old text */ + 1. Access to [[https://gnudip.datasystems24.net|GnuIP login page]] (answer Yes to all pop ups) + 1. Click on "Self Register" + 1. Fill the registration form (Username and domain will form the public IP address [username.domain]) + 1. Take note of the username/hostname and password that will be used on the !FreedomBox app. + 1. Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login). + 1. Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices). + 1. Leave the GnuDIP interface and open the Dynamic DNS Client app page in your !FreedomBox. + 1. Click on "Set Up" in the top menu. + 1. Activate Dynamic DNS + 1. Choose GnuDIP service. + 1. Add server address (gnudip.datasystems24.net) + 1. Add your fresh domain name (username.domain, ie [username].freedombox.rocks) + 1. Add your fresh username (the one used in your new IP address) and password + 1. Add your GnuDIP password + 1. Fill the option with http://myip.datasystems24.de (try this url in your browser, you will figure out immediately) + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/DynamicDNS.raw.xml b/doc/manual/es/DynamicDNS.raw.xml deleted file mode 100644 index 38ad27061..000000000 --- a/doc/manual/es/DynamicDNS.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/DynamicDNS62020-05-24 07:27:37fioddorSe alinea con la versión 17 en inglés del 23 de mayo de 202052019-08-20 10:59:21fioddorSe incorpora la traducción de una sección nueva.42019-08-20 10:52:54fioddorSe incorpora la traducción de una sección nueva.32019-08-20 10:35:42fioddorSe incorpora la traducción de una sección nueva.22019-08-20 10:26:28fioddorSe incorpora la traducción de una sección nueva.12019-08-20 10:15:28fioddorSe crea la versión española (traducción incompleta).
Cliente de DNS Dinamico
¿Qué es DNS Dinamico?Para que se pueda llegar a un servidor desde Internet este necesita tener una dirección pública permanente, también conocida como dirección IP estática o fija. Muchos proveedores de servicio de Internet no otorgan IP fija a sus usuarios normales o la cobran. En su lugar les otorgan una IP temporal diferente cada vez que el usuario se conecta a internet. O una que cambia de vez en cuando. Si es tu caso los clientes que quieran contactar con tu servidor tendrán dificultades. Los proveedores de servicio de DNS Dinamico ayudan a solventar este problema. Primero te dan un nombre de dominio, como 'miservidor.ejemplo.org' y te permiten asociar tu dirección IP temporal a este nombre de dominio cada vez que esta cambia. De este modo quien quiera llegar a tu servidor empleará el nombre de dominio 'miservidor.ejemplo.org' que siempre apuntará a la última dirección IP de tu servidor. Para que esto funcione cada vez que te conectes a Internet tendrás que decirle a tu proveedor de servicio de DNS Dinamico cual es tu dirección IP provisional actual. Por esto necesitas tener un software especial en tu servidor que haga esto. La funcionalidad DNS Dinamico de tu FreedomBox permite a los usuarios sin dirección IP pública fija mantener su dirección IP pública temporal actualizada en el servicio de DNS Dinamico. Esto te permite exponer servicios de tu FreedomBox, como ownCloud, a Internet.
GnuDIP vs. Update URLEisten 2 mecanismos principales para notificar al the servicio de DNS Dinamico cual es tu dirección IP provisional actual: empleando el protocolo GnuDIP o empleando el mecanismo URL de actualización. Si un servicio expuesto usando URL de actualización no se securiza apropiadamente mediante HTTPS, tus credenciales podrían quedar expuestas. Una vez que un atacante accede a tus credenciales podrá reproducir tus comunicaciones con el servicio de DNS Dinamico y suplantar tu dominio. Por otra parte el protocolo GnuDIP solo transportará un valor MD5 salpimentado de tu contraseña de tal forma que es seguro contra ataques de este tipo.
Emplear el protocolo GnuDIPRegistra una cuenta en cualquier proveedor de servicio de DNS Dinamico. Hay un servicio gratuito provisto por la comunidad FreedomBox disponible en . Habilita el Servicio de DNS Dinamico en el interfaz de usuario de FreedomBox. Selecciona GnuDIP como tipo de servicio, introduce la dirección de tu proveedor de servicio de DNS Dinamico (por ejemplo, gnudip.datasystems24.net) en el campo Dirección del servidor GnuDIP. Dynamic DNS Settings Completa la información que te ha dado tu proveedor en los campos correspondientes Nombre de Dominio, Usuario y Contraseña.
Emplear URL de actualizaciónSe implementa esta funcionalidad porque los proveedores de servicio de DNS Dinamico más populares están empleando el mecanismo URL de actualización. Registra una cuenta en el proveedor de servicio de DNS Dinamico que emplea el mecanismo Update URL. Se listan algunos proveedores de ejemplo en la propia página de configuración. Habilita el Servicio de DNS Dinamico en el interfaz de usuario de FreedomBox. Selecciona URL de actualización como tipo de servicio, introduce la URL de actualización que te ha dado tu proveedor de servicio de DNS Dinamico en el campo URL de actualización. Si vas a la URL de actualización con tu navegador de Internet y te muestra un aviso acerca de un certificado no confiable, activa aceptar todos los certificados SSL. AVISO: ¡Tus credenciales podrían quedar expuestas en este punto a un ataque MIM (man-in-the-middle)! Valora la posibilidad de elegir otro proveedor de servicio mejor. Si vas a la URL de actualización con tu navegador de Internet y te muestra la caja de usuario/contraseña, selecciona usar autenticación HTTP basica e introduce el usuario y la contraseña. Si la URL de actualización contiene tu dirección IP temporal actual reemplaza la dirección IP por la cadena de texto <Ip>.
Comprobar si funcionaAsegúrate de que los servicios externos que has habilitado como /jwchat, /roundcube o /ikiwiki están disponibles en tu dirección de dominio. Ve a la página Estado y asegúrate de que el tipo de NAT se detecta correctamente. Si tu FreedomBox está detrás de un dispositivo NAT debería detectarse en este punto (Texto: Detrás de NAT). Si tu FreedomBox tiene una dirección IP pública asignada el texto debería ser "Conexión directa a Internet". Comprueba que el último estado de actualización no sea fallida.
Recap: How to create a DNS name with GnuDIPto delete or to replace the old text Access to GnuIP login page (answer Yes to all pop ups) Click on "Self Register" Fill the registration form (Username and domain will form the public IP address [username.domain]) Take note of the username/hostname and password that will be used on the FreedomBox app. Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login). Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices). Leave the GnuDIP interface and open the Dynamic DNS Client app page in your FreedomBox. Click on "Set Up" in the top menu. Activate Dynamic DNS Choose GnuDIP service. Add server address (gnudip.datasystems24.net) Add your fresh domain name (username.domain, ie [username].freedombox.rocks) Add your fresh username (the one used in your new IP address) and password Add your GnuDIP password Fill the option with (try this url in your browser, you will figure out immediately) Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Firewall.raw.wiki b/doc/manual/es/Firewall.raw.wiki new file mode 100644 index 000000000..75632beb4 --- /dev/null +++ b/doc/manual/es/Firewall.raw.wiki @@ -0,0 +1,208 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Firewall|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Cortafuegos == + +Un cortafuegos es un sistema de seguridad de red que controla el tráfico de entrada y salida desde/a la red. Mantener un cortafuegos habilitado y apropiadamente configurado reduce el riesgo de amenazas a la seguridad desde Internet. + +La operación del cortafuegos desde el interfaz web de !FreedomBox es automática. Cuando habilitas un servicio se le abre automáticamente el cortafuegos y cuando lo deshabilitas se le cierra también automáticamente. Para servicios habilitados por defecto en !FreedomBox los puertos se abren en el cortafuegos por defecto durante el proceso de la primera ejecución. + +{{attachment:Firewall_es_v01.png|Firewall|width=500}} + +La administración del cortafuegos en !FreedomBox se hace empleando [[https://fedoraproject.org/wiki/FirewallD|FirewallD]]. + +=== Interfaces === + +Cada interfaz de red necesita asignarse a 1 (y sólo 1) zona. Si no se le establece zona, automáticamente se le asigna la zona `externa`. Las reglas que tenga activas la zona se aplicarán al interfaz. Por ejemplo, si se permite el trafico HTTP en una zona en particular las peticiones web se acceptarán en todas las direcciones configuradas para todos los interfaces asignados a esa zona. + +Principalmente se emplean 2 zonas de cortafuegos. La zona `interna` está pensada para servicios ofrecidos a todas las máquinas de la red local. Esto podría incluir servicios como ''streaming'' multimedia o compartición simple de archivos. La zona `externa` está pensada para servicios públicamente expuestos a Internet. Esto podría incluir servicios como blog, sitio web, cliente web de correo electrónico etc. + +Para más detalles acerca de como se configuran por defecto los interfaces de red mira la sección [[es/FreedomBox/Manual/Networks|Redes]]. + +=== Abrir Puertos Propios === + +Cockpit proporciona administración avanzada de cortafuegos. Ambos, !FreedomBox y Cockpit operan sobre firewalld y son por tanto compatibles entre sí. En particular, Cockpit se puede usar en !FreedomBox para abrir servicios o puertos. Esto resulta útil si además de los servicios proporcionados por !FreedomBox estás ejecutando manualmente tus propios servicios en la misma máquina. + +{{attachment:firewalld-cockpit.png}} + +=== Puertos/Servicios de FreedomBox === + +La siguiente tabla trata de documentar los puertos, servicios y sus estados por defecto en !FreedomBox. Si encuentras esta página desactualizada mira la página de estado del cortafuegos en el interfaz web de !FreedomBox. + +||'''Servicio'''||'''Puerto''' ||'''Externo'''||'''Habilitado por defecto'''||'''Estado mostrado en !FreedomBox'''||'''Administrado por !FreedomBox'''|| +|| Minetest || 30000/udp || {*} || {X} || (./) || (./) || +|| XMPP Client || 5222/tcp || {*} || {X} || (./) || (./) || +|| XMPP Server || 5269/tcp || {*} || {X} || (./) || (./) || +|| XMPP Bosh || 5280/tcp || {*} || {X} || (./) || (./) || +|| NTP || 123/udp || {o} || (./) || (./) || (./) || +|| Interfaz web de !FreedomBox || 443/tcp || {*} || (./) || (./) || {X} || +|| Quassel || 4242/tcp || {*} || {X} || (./) || (./) || +|| SIP || 5060/tcp || {*} || {X} || (./) || (./) || +|| SIP || 5060/udp || {*} || {X} || (./) || (./) || +|| SIP-TLS || 5061/tcp || {*} || {X} || (./) || (./) || +|| SIP-TLS || 5061/udp || {*} || {X} || (./) || (./) || +|| RTP || 1024-65535/udp || {*} || {X} || (./) || (./) || +|| SSH || 22/tcp || {*} || (./) || (./) || {X} || +|| mDNS || 5353/udp || {o} || (./) || (./) || (./) || +|| Tor (Socks) || 9050/tcp || {o} || {X} || (./) || (./) || +|| Obfsproxy || /tcp || {*} || {X} || (./) || (./) || +|| OpenVPN || 1194/udp || {*} || {X} || (./) || (./) || +|| Mumble || 64378/tcp || {*} || {X} || (./) || (./) || +|| Mumble || 64378/udp || {*} || {X} || (./) || (./) || +|| Privoxy || 8118/tcp || {o} || {X} || (./) || (./) || +|| JSXC || 80/tcp || {*} || {X} || {X} || {X} || +|| JSXC || 443/tcp || {*} || {X} || {X} || {X} || +|| DNS || 53/tcp || {o} || {X} || {X} || {X} || +|| DNS || 53/udp || {o} || {X} || {X} || {X} || +|| DHCP || 67/udp || {o} || (./) || {X} || {X} || +|| Bootp || 67/tcp || {o} || {X} || {X} || {X} || +|| Bootp || 67/udp || {o} || {X} || {X} || {X} || +|| Bootp || 68/tcp || {o} || {X} || {X} || {X} || +|| Bootp || 68/udp || {o} || {X} || {X} || {X} || +|| LDAP || 389/tcp || {o} || {X} || {X} || {X} || +|| LDAPS || 636/tcp || {o} || {X} || {X} || {X} || + +=== Operación Manual === + +Para completar información acerca de los conceptos basicos o más allá, mira la documentación de [[https://fedoraproject.org/wiki/FirewallD|FirewallD]]. + +==== Habilitar/deshabilitar el cortafuegos ==== + +Para deshabilitar el cortafuegos +{{{ +service firewalld stop +}}} + +o con systemd +{{{ +systemctl stop firewalld +}}} + +Para vover a habilitar el cortafuegos +{{{ +service firewalld start +}}} + +o con systemd +{{{ +systemctl start firewalld +}}} + +==== Modificar servicios/puertos ==== + +Puedes añadir o eliminar un servicio de una zona manualmente. + +Para ver la lista de servicios habilitados: +{{{ +firewall-cmd --zone= --list-services +}}} + +Ejemplo: +{{{ +firewall-cmd --zone=internal --list-services +}}} + +Para ver la lista de puertos habilitados: +{{{ +firewall-cmd --zone= --list-ports +}}} + +Ejemplo: +{{{ +firewall-cmd --zone=internal --list-ports +}}} + +Para eliminar un servicio de una zona: +{{{ +firewall-cmd --zone= --remove-service= +firewall-cmd --permanent --zone= --remove-service= +}}} + +Ejemplo: +{{{ +firewall-cmd --zone=internal --remove-service=xmpp-bosh +firewall-cmd --permanent --zone=internal --remove-service=xmpp-bosh +}}} + +Para eliminar un puerto de una zona: +{{{ +firewall-cmd --zone=internal --remove-port=/ +firewall-cmd --permanent --zone=internal --remove-port=/ +}}} + +Ejemplo: +{{{ +firewall-cmd --zone=internal --remove-port=5353/udp +firewall-cmd --permanent --zone=internal --remove-port=5353/udp +}}} + +Para añadir un servicio a una zona: +{{{ +firewall-cmd --zone= --add-service= +firewall-cmd --permanent --zone= --add-service= +}}} + +Ejemplo: +{{{ +firewall-cmd --zone=internal --add-service=xmpp-bosh +firewall-cmd --permanent --zone=internal --add-service=xmpp-bosh +}}} + +Para añadir un puerto a una zona: +{{{ +firewall-cmd --zone=internal --add-port=/ +firewall-cmd --permanent --zone=internal --add-port=/ +}}} + +Ejemplo: +{{{ +firewall-cmd --zone=internal --add-port=5353/udp +firewall-cmd --permanent --zone=internal --add-port=5353/udp +}}} + +==== Modificar la zona de los interfaces ==== + +Puedes cambiar la asignación de zona de cada interfaz de red manualmente tras la asignación automática del proceso de primer arranque. + +Para ver la asignación actual de interfaces de red a las zonas. +{{{ +firewall-cmd --list-all-zones +}}} + +Para eliminar un interfaz de una zona: +{{{ +firewall-cmd --zone= --remove-interface= +firewall-cmd --permanent --zone= --remove-interface= +}}} + +Ejemplo: +{{{ +firewall-cmd --zone=external --remove-interface=eth0 +firewall-cmd --permanent --zone=external --remove-interface=eth0 +}}} + +Para añadir un interfaz a una zona: +{{{ +firewall-cmd --zone= --add-interface= +firewall-cmd --permanent --zone= --add-interface= +}}} + +Ejemplo: +{{{ +firewall-cmd --zone=internal --add-interface=eth0 +firewall-cmd --permanent --zone=internal --add-interface=eth0 +}}} + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Firewall.raw.xml b/doc/manual/es/Firewall.raw.xml deleted file mode 100644 index c8d2bbbed..000000000 --- a/doc/manual/es/Firewall.raw.xml +++ /dev/null @@ -1,13 +0,0 @@ -
es/FreedomBox/Manual/Firewall162020-06-01 23:33:56JamesValleroyadd TableOfContents152020-05-24 08:59:22fioddorSe alinea con la versión 32 en inglés del 24 de mayo de 2020142020-05-24 08:56:37fioddorSe alinea con la versión 31 en inglés del 24 de mayo de 2020132020-05-10 00:57:07fioddorSe alinea con la versión 29 en inglés del 03 de mayo de 2020122020-04-13 16:15:55fioddorSe alinea con la versión 27 en inglés del 12 de abril de 2020112020-04-11 10:25:56fioddorhttps://salsa.debian.org/freedombox-team/plinth/-/issues/1831#note_154258102020-04-04 16:56:41fioddorMejora menor. Algo más claro.92020-04-04 16:52:56fioddorEnlace a página traducida.82020-04-04 16:49:56fioddorSe usan imágenes traducidas y más actuales.72019-10-21 15:03:44fioddorCorrección menor62019-10-21 14:58:42fioddorCorrección menor52019-08-20 12:16:19fioddorS42019-08-20 12:07:57fioddorSe incorpora la traducción de una sección nueva.32019-08-20 11:59:19fioddorSe incorpora la traducción de una sección nueva.22019-08-20 11:54:54fioddorSe incorpora la traducción de una sección nueva.12019-08-20 11:39:24fioddorSe crea la versión española (traducción incompleta).
CortafuegosUn cortafuegos es un sistema de seguridad de red que controla el tráfico de entrada y salida desde/a la red. Mantener un cortafuegos habilitado y apropiadamente configurado reduce el riesgo de amenazas a la seguridad desde Internet. La operación del cortafuegos desde el interfaz web de FreedomBox es automática. Cuando habilitas un servicio se le abre automáticamente el cortafuegos y cuando lo deshabilitas se le cierra también automáticamente. Para servicios habilitados por defecto en FreedomBox los puertos se abren en el cortafuegos por defecto durante el proceso de la primera ejecución. Firewall La administración del cortafuegos en FreedomBox se hace empleando FirewallD.
InterfacesCada interfaz de red necesita asignarse a 1 (y sólo 1) zona. Si no se le establece zona, automáticamente se le asigna la zona externa. Las reglas que tenga activas la zona se aplicarán al interfaz. Por ejemplo, si se permite el trafico HTTP en una zona en particular las peticiones web se acceptarán en todas las direcciones configuradas para todos los interfaces asignados a esa zona. Principalmente se emplean 2 zonas de cortafuegos. La zona interna está pensada para servicios ofrecidos a todas las máquinas de la red local. Esto podría incluir servicios como streaming multimedia o compartición simple de archivos. La zona externa está pensada para servicios públicamente expuestos a Internet. Esto podría incluir servicios como blog, sitio web, cliente web de correo electrónico etc. Para más detalles acerca de como se configuran por defecto los interfaces de red mira la sección Redes.
Abrir Puertos PropiosCockpit proporciona administración avanzada de cortafuegos. Ambos, FreedomBox y Cockpit operan sobre firewalld y son por tanto compatibles entre sí. En particular, Cockpit se puede usar en FreedomBox para abrir servicios o puertos. Esto resulta útil si además de los servicios proporcionados por FreedomBox estás ejecutando manualmente tus propios servicios en la misma máquina. firewalld-cockpit.png
Puertos/Servicios de FreedomBoxLa siguiente tabla trata de documentar los puertos, servicios y sus estados por defecto en FreedomBox. Si encuentras esta página desactualizada mira la página de estado del cortafuegos en el interfaz web de FreedomBox. ServicioPuerto ExternoHabilitado por defectoEstado mostrado en FreedomBoxAdministrado por FreedomBox Minetest 30000/udp {*} {X} (./) (./) XMPP Client 5222/tcp {*} {X} (./) (./) XMPP Server 5269/tcp {*} {X} (./) (./) XMPP Bosh 5280/tcp {*} {X} (./) (./) NTP 123/udp {o} (./) (./) (./) Interfaz web de FreedomBox 443/tcp {*} (./) (./) {X} Quassel 4242/tcp {*} {X} (./) (./) SIP 5060/tcp {*} {X} (./) (./) SIP 5060/udp {*} {X} (./) (./) SIP-TLS 5061/tcp {*} {X} (./) (./) SIP-TLS 5061/udp {*} {X} (./) (./) RTP 1024-65535/udp {*} {X} (./) (./) SSH 22/tcp {*} (./) (./) {X} mDNS 5353/udp {o} (./) (./) (./) Tor (Socks) 9050/tcp {o} {X} (./) (./) Obfsproxy <random>/tcp {*} {X} (./) (./) OpenVPN 1194/udp {*} {X} (./) (./) Mumble 64378/tcp {*} {X} (./) (./) Mumble 64378/udp {*} {X} (./) (./) Privoxy 8118/tcp {o} {X} (./) (./) JSXC 80/tcp {*} {X} {X} {X} JSXC 443/tcp {*} {X} {X} {X} DNS 53/tcp {o} {X} {X} {X} DNS 53/udp {o} {X} {X} {X} DHCP 67/udp {o} (./) {X} {X} Bootp 67/tcp {o} {X} {X} {X} Bootp 67/udp {o} {X} {X} {X} Bootp 68/tcp {o} {X} {X} {X} Bootp 68/udp {o} {X} {X} {X} LDAP 389/tcp {o} {X} {X} {X} LDAPS 636/tcp {o} {X} {X} {X}
Operación ManualPara completar información acerca de los conceptos basicos o más allá, mira la documentación de FirewallD.
Habilitar/deshabilitar el cortafuegosPara deshabilitar el cortafuegos o con systemd Para vover a habilitar el cortafuegos o con systemd
Modificar servicios/puertosPuedes añadir o eliminar un servicio de una zona manualmente. Para ver la lista de servicios habilitados: --list-services]]>Ejemplo: Para ver la lista de puertos habilitados: --list-ports]]>Ejemplo: Para eliminar un servicio de una zona: --remove-service= -firewall-cmd --permanent --zone= --remove-service=]]>Ejemplo: Para eliminar un puerto de una zona: / -firewall-cmd --permanent --zone=internal --remove-port=/]]>Ejemplo: Para añadir un servicio a una zona: --add-service= -firewall-cmd --permanent --zone= --add-service=]]>Ejemplo: Para añadir un puerto a una zona: / -firewall-cmd --permanent --zone=internal --add-port=/]]>Ejemplo:
Modificar la zona de los interfacesPuedes cambiar la asignación de zona de cada interfaz de red manualmente tras la asignación automática del proceso de primer arranque. Para ver la asignación actual de interfaces de red a las zonas. Para eliminar un interfaz de una zona: --remove-interface= -firewall-cmd --permanent --zone= --remove-interface=]]>Ejemplo: Para añadir un interfaz a una zona: --add-interface= -firewall-cmd --permanent --zone= --add-interface=]]>Ejemplo: Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/GettingHelp.raw.wiki b/doc/manual/es/GettingHelp.raw.wiki new file mode 100644 index 000000000..85164954f --- /dev/null +++ b/doc/manual/es/GettingHelp.raw.wiki @@ -0,0 +1,43 @@ +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/GettingHelp|English]] - Español - [[fr/FreedomBox/Manuel/ObtenirAide|Français]]-~ + +## BEGIN_INCLUDE + += Obtener Ayuda = + +<> + +La comunidad !FreedomBox proporciona ayuda en vivo a través de foros, chat y correo electrónico. Contacta y pregunta lo que quieras. Si recibes ayuda, considera por favor informar de tu solución en la página [[es/FreedomBox/QuestionsAndAnswers|Preguntas y Respuestas]] para que otros puedan beneficiarse en el futuro. + +== Foro de Debate == + +La forma más fácil de obtener soporte es usando el [[https://discuss.freedombox.org|foro de debate]]. Puedes hojear soluciones a problemas conocidos o pedir ayuda a los contribuyentes de la comunidad preguntando. Esta es también la mejor manera de aportar a los contribuyentes de la comunidad información acerca de tu experiencia con !FreedomBox. + +Para publicar contenido nuevo necesitarás registrarte con un nombre y una dirección de correo electrónico (pero puedes usar un pseudonimo y una dirección secundaria). Habilitando el 'modo lista de correo' ('mailing list mode') en las preferencias de tu cuenta, puedes interactuar con el foro simplemente enviando y recibiendo correos electrónicos como en una lista de correo. + +== IRC #freedombox == + +Si te manejas con IRC ([[http://www.irchelp.org/|Internet Relay Chat]]) y [[http://www.irchelp.org/irchelp/clients/|sus clientes]] puedes obtener ayuda en línea instantánea de la comunidad en el canal '''#freedombox''' de '''irc.debian.org'''. Quizá pase un tiempo antes de que algún miembro te responda. Sé paciente. Ya llegará alguna respuesta. + +== Matrix == + +Puedes unirte a la sala Matrix '''#freedombox:matrix.org'''. La sala está federada con el canal IRC y recuerda la historia del chat. +Si aún no tienes un cliente instalado puedes [[https://riot.im/app/#/room/#freedombox:matrix.org|usar tu navegador web para unirte]]. +Para más opciones, visita la [[https://matrix.to/#/#freedombox:matrix.org|página de introducción al cliente matrix]]. + +== Correo Electrónico == + +Se puede acceder a los usuarios y contribuyentes de !FreedomBox mediante e-mail con la lista de correo. Para formular preguntas y recibir respuestas de la comunidad por favor regístrate en la [[https://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss|página de la lista de correo]] dando tu dirección de correo electrónico y creando una contraseña. También puedes leer los [[http://lists.alioth.debian.org/pipermail/freedombox-discuss/|hilos archivados]]. Esta lista reune a cerca de 700 lectores. + + +== Devuelve tu Ayuda == + +Una vez tengas tu solución, no olvides añadirla a la página de [[es/FreedomBox/QuestionsAndAnswers|Preguntas y Respuestas]]. Cuéntanos las funcionalidades que empleas de !FeedomBox en la página de [[es/FreedomBox/UserExperience|Casos de Uso]]. Podría ayudar a otros a usar !FreedomBox de modos que no hayan imaginado. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/GitWeb.raw.wiki b/doc/manual/es/GitWeb.raw.wiki new file mode 100644 index 000000000..dab98461f --- /dev/null +++ b/doc/manual/es/GitWeb.raw.wiki @@ -0,0 +1,50 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/GitWeb|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== GitWeb (Alojamiento simple para Git) == +|| {{attachment:FreedomBox/Manual/GitWeb/Gitweb-icon_en_V01.png|icono de Gitweb}} || + +'''Disponible desde versión:''' 19.19 + +!GitWeb proporciona alojamiento Git en !FreedomBox. Proporciona un interfaz web para realizar acciones comunes sobre repositorios Git como ver archivos, diferencias, descripciones de cambio, etc. +''Git'' es un sistema de control de versiones distribuído para trazar cambios en código fuente durante el desarrollo de software. Con ''!GitWeb'' puedes hojear la historia y el contenido del código fuente, y usar la búsqueda para encontrar cambios y código específicos. También puedes clonar repositorios y subir cambios al código con un cliente Git de línea de órdenes o con múltiples clientes gráficos que hay disponibles. Y puedes compartir tu código con gente de todo el mundo. + +Para aprender a usar Git visita su [[https://git-scm.com/docs/gittutorial|tutorial]]. + +=== Administrar los repositorios === + +Tras instalar !GitWeb se puede crear un nuevo repositorio. Se puede marcar como privado para limitar el acceso. + +=== Acceso === + +Tras instalar !GitWeb se puede acceder a !GitWeb mediante el cliente web (p.ej) en {{{https:///gitweb}}}. + +=== Autenticación básica HTTP === + +Actualmente el !GitWeb de !FreedomBox solo soporta remotos HTTP. Para evitar tener que introducir la contraseña cada vez que haces pull/push al repositorio puedes editar tu remoto para incluír credenciales. + +''Ejemplo:'' https://usuario:contrasena@mi.freedombox.mola/gitweb/mirepo + +Tu nombre de usuario y contraseña se cifrarán. Quien monitorize el tráfico de la red solo apreciará el nombre de dominio.<
> +'''Nota:''' Al usar este método tu contraseña se almacenará en claro en el fichero `.git/config` del repositorio local. Por este motivo debes crear un usuario !FreedomBox que solo tenga acceso a gitweb y no usar nunca una cuenta de administrador. + + +=== Réplicas Espejo === + +Aunque tus repositorios se albergan principalmente en tu propia !FreedomBox puedes configurar un repositorio en otro servicio de alojamiento Git como GitLab a modo de copia espejo. + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/GitWeb.raw.xml b/doc/manual/es/GitWeb.raw.xml deleted file mode 100644 index 1bbdc3b07..000000000 --- a/doc/manual/es/GitWeb.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/GitWeb62020-05-30 19:35:09SunilMohanAdapaMatch title with FreedomBox interface52020-05-30 19:34:33SunilMohanAdapaUpdate the title to emphasize app name over its generic name42020-05-24 07:04:04fioddorSe alinea con la versión 08 en inglés del 23 de mayo de 202032020-01-29 06:49:24fioddorSe alinea con la versión 7 en inglés del 29 de enero de 202022019-12-17 21:25:32fioddorSe alinea con la versión 04 en inglés del 17 de diciembre de 201912019-12-15 19:00:01fioddorSe traduce una página nueva
GitWeb (Alojamiento simple para Git)GitWeb proporciona alojamiento Git en FreedomBox. Proporciona un interfaz web simple para realizar acciones comunes como ver archivos, diferencias, descripciones de cambio, etc. Disponible desde versión: 19.19
Autenticación básica HTTPActualmente el GitWeb de FreedomBox solo soporta remotos HTTP. Para evitar tener que introducir la contraseña cada vez que haces pull/push al repositorio puedes editar tu remoto para incluír credenciales. Ejemplo: Tu nombre de usuario y contraseña se cifrarán. Quien monitorize el tráfico de la red solo apreciará el nombre de dominio. Nota: Al usar este método tu contraseña se almacenará en claro en el fichero .git/config del repositorio local. Por este motivo debes crear un usuario FreedomBox que solo tenga acceso a gitweb y no usar nunca una cuenta de administrador.
Réplicas EspejoAunque tus repositorios se albergan principalmente en tu propia FreedomBox puedes configurar un repositorio en otro servicio de alojamiento Git como GitLab a modo de copia espejo. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Hardware.raw.wiki b/doc/manual/es/Hardware.raw.wiki new file mode 100644 index 000000000..c415e0ce2 --- /dev/null +++ b/doc/manual/es/Hardware.raw.wiki @@ -0,0 +1,173 @@ +<> + +## BEGIN_INCLUDE + +!FreedomBox está diseñado para ser el software de un dispositivo electrónico de consumo que sea fácil de configurar, mantener y usar. El proyecto no pretende crear un dispositivo hardware propio, sino asociarse con fabricantes de hardware para construir dispositivos !FreedomBox y también soportar hardware existente. + +Además de soportar varios SBC's (single board computers) y otros dispositivos, !FreedomBox también contempla ser instalado en una máquina virtual. Y cualquier máquina Debian se puede convertir en !FreedomBox instalando el paquete `freedombox`. Para más detalles acerca de la instalación sobre Debian, ver el [[es/FreedomBox/Hardware/Debian|manual]]. + +== Hardware Recomendado == + +El 22 de Abril de 2019, la ''!FreedomBox Foundation'' anunció que los kits ''Pioneer Edition !FreedomBox Home Server'' salían a la [[https://freedomboxfoundation.org/buy/|venta]]. Este es el hardware preinstalado recomendado para todos los usuarios que no quieran construirse su propia (máquina) !FreedomBox eligiendo los componentes adecuados, descargando la imagen y preparando una tarjeta SD con (el software) !FreedomBox. + +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. + +|| [[es/FreedomBox/Hardware/PioneerEdition|{{attachment:FreedomBox/Hardware/pioneer-edition_thumb.jpg|Kits de Servidor Casero FreedomBox Pioneer Edition|width=320,height=257}}]]<
> [[es/FreedomBox/Hardware/PioneerEdition|Kits de Servidor Casero FreedomBox Pioneer Edition]] || + +== Hardware Soportado == + +Usa este hardware si quieres y eres capaz de descargar imágenes !FreedomBox y preparar una tarjeta SD siguiendo el manual. Si quieres un proceso más simple de configuración compra por favor los kits !FreedomBox con el hardware recomendado. Si usas una placa con tarjetas SD te recomendamos que al grabar la imagen de !FreedomBox en tu tarjeta, ésta tenga al menos una capacidad de 8GB. + +|| [[FreedomBox/Hardware/A20-OLinuXino-Lime2|{{attachment:FreedomBox/Hardware/a20-olinuxino-lime2_thumb.jpg|A20 OLinuXino Lime2|width=235,height=159}}]]<
> [[FreedomBox/Hardware/A20-OLinuXino-Lime2|A20 OLinuXino Lime2]] || [[FreedomBox/Hardware/A20-OLinuXino-MICRO|{{attachment:FreedomBox/Hardware/a20-olinuxino-micro_thumb.jpg|A20 OLinuXino MICRO|width=235,height=132}}]]<
> [[FreedomBox/Hardware/A20-OLinuXino-MICRO|A20 OLinuXino MICRO]] || [[FreedomBox/Hardware/APU|{{attachment:FreedomBox/Hardware/apu1d_thumb.jpg|PC Engines APU|width=235,height=157}}]]<
> [[FreedomBox/Hardware/APU|PC Engines APU]] || +|| [[FreedomBox/Hardware/Cubietruck|{{attachment:FreedomBox/Hardware/danube_thumb.png|Cubietruck|width=235,height=206}}]] <
> [[FreedomBox/Hardware/Cubietruck|Cubietruck]] <
> || [[FreedomBox/Hardware/Cubieboard2|{{attachment:FreedomBox/Hardware/cubieboard2_thumb.jpg|Cubieboard 2|width=235,height=156}}]]<
> [[FreedomBox/Hardware/Cubieboard2|Cubieboard2]] || [[FreedomBox/Hardware/BeagleBone|{{attachment:FreedomBox/Hardware/beagleboard_thumb.jpg|BeagleBone Black|width=235,height=157}}]]<
> [[FreedomBox/Hardware/BeagleBone|BeagleBone Black]] || +|| [[FreedomBox/Hardware/pcDuino3|{{attachment:FreedomBox/Hardware/pcduino3s_thumb.jpg|pcDuino3|width=235,height=107}}]] <
> [[FreedomBox/Hardware/pcDuino3|pcDuino3]]|| [[es/FreedomBox/Hardware/Debian|{{attachment:FreedomBox/Hardware/debian_thumb.png|Debian|width=156,height=201}}]] <
> [[es/FreedomBox/Hardware/Debian|Debian]]|| [[es/FreedomBox/Hardware/VirtualBox|{{attachment:virtualbox_thumb.png|VirtualBox|width=235,height=154}}]] <
> [[es/FreedomBox/Hardware/VirtualBox|VirtualBox]]|| +|| [[FreedomBox/Hardware/PineA64+|{{attachment:FreedomBox/Hardware/pine64-plus_thumb.jpg|Pine A64+|width=235,height=213}}]] <
> [[FreedomBox/Hardware/PineA64+|Pine A64+]] || [[FreedomBox/Hardware/BananaPro|{{attachment:FreedomBox/Hardware/banana-pro_thumb.jpg|Banana Pro|width=235}}]] <
> [[FreedomBox/Hardware/BananaPro|Banana Pro]]|| [[es/FreedomBox/Hardware/OrangePiZero|{{attachment:FreedomBox/Hardware/orange-pi-zero_thumb.jpg|Orange Pi Zero|width=235}}]] <
> [[es/FreedomBox/Hardware/OrangePiZero|Orange Pi Zero]] || +|| [[FreedomBox/Hardware/RockPro64|{{attachment:FreedomBox/Hardware/rockpro64_thumb.jpg|RockPro64|width=235,height=142}}]] <
> [[FreedomBox/Hardware/RockPro64|RockPro64]] || [[FreedomBox/Hardware/Rock64|{{attachment:FreedomBox/Hardware/rock64_thumb.jpg|Rock64|width=235,height=154}}]] <
> [[FreedomBox/Hardware/Rock64|Rock64]]|||| + +=== Comparativa de Hardware === + +||'''Nombre'''||'''Velocidad CPU (GHz)'''||'''Arquitectura'''||'''RAM (GB)'''||'''disco (GB)'''||'''batería'''||'''SATA'''||'''Velocidad Ethernet'''||'''[[OpenSourceHardware|OSHW]]'''|| +||APU.1D ||1x2 ||amd64 ||2 ||- ||- ||(./)||1000x3||{X} || +||APU.1D4 ||1x2 ||amd64 ||4 ||- ||- ||(./)||1000x3||{X} || +||!BeagleBone Black C ||1 ||armhf/omap ||½ ||4 ||- ||- ||100 ||(./)|| +||Cubieboard2 ||1x2 ||armhf/sunxi||1 ||4 ||(./)||(./)||100 ||{X} || +||Cubieboard2-Dual ||1x2 ||armhf/sunxi||1 ||- ||(./)||(./)||100 ||{X} || +||Cubieboard3/Cubietruck||1x2 ||armhf/sunxi||2 ||8 ||(./)||(./)||1000 ||{X} || +||OLinuXino A20 LIME ||1x2 ||armhf/sunxi||½ ||- ||(./)||(./)||100 ||(./)|| +||OLinuXino A20 LIME2 ||1x2 ||armhf/sunxi||1 ||- ||(./)||(./)||1000 ||(./)|| +||OLinuXino A20 MICRO ||1x2 ||armhf/sunxi||1 ||- ||(./)||(./)||100 ||(./)|| +||pcDunino3 ||1x2 ||armhf/sunxi||1 ||4 ||(./)||(./)||100 ||{X} || +||Pine A64+ ||1.2x4 ||arm64/sunxi||½,1,2||- ||- ||- ||1000 ||{X} || +||Banana Pro ||1.2x2 ||armhf/sunxi||1 ||- ||- ||(./)||1000 ||{X} || +||Orange Pi Zero ||?x4 ||armhf/sunxi||¼,½ ||- ||- ||- ||100 ||{X} || +||!RockPro64 ||1.4x4+1.8x2||arm64 ||2,4 ||16,32,64,128||- ||(./)||1000 ||{X} || +||Rock64 ||1.5x4 ||arm64 ||1,2,4||16,32,64,128||- ||(./)||1000 ||{X} || + + +== Más Hardware == + +=== Más Hardware Operativo === + +Freedombox funciona en este hardware. Pero no se recomienda porque (el hardware) no funciona empleando únicamante [[https://www.gnu.org/philosophy/free-sw.en.html|software libre]]: + +|| [[FreedomBox/Hardware/RaspberryPi2|{{attachment:FreedomBox/Hardware/raspberry2_thumb.jpg|Raspberry Pi 2|width=235,height=157}}]] <
> [[FreedomBox/Hardware/RaspberryPi2|Raspberry Pi 2]] || [[FreedomBox/Hardware/RaspberryPi3B|{{attachment:FreedomBox/Hardware/raspberrypi3b_thumb.jpg|Raspberry Pi 3 Model B|width=235,height=155}}]] <
> [[FreedomBox/Hardware/RaspberryPi3B|Raspberry Pi 3 Model B]] || [[FreedomBox/Hardware/RaspberryPi3B+|{{attachment:FreedomBox/Hardware/raspberrypi3bplus_thumb.jpg|Raspberry Pi 3 Model B+|width=235,height=153}}]] <
> [[FreedomBox/Hardware/RaspberryPi3B+|Raspberry Pi 3 Model B+]]|| +|| [[FreedomBox/Hardware/RaspberryPi4B|{{attachment:FreedomBox/Hardware/raspberrypi4b_thumb.jpg|Raspberry Pi 4 B|width=235,height=156}}]] <
> [[FreedomBox/Hardware/RaspberryPi4B|Raspberry Pi 4 B]] || || || + +=== Hardware Soportado mediante Imágenes Genéricas === +Si ya tienes un hardware que quieres convertir en una !FreedomBox, no dejes que la corta lista de hardware soportado te desanime. Si estás usando máquinas de arquitectura AMD o Intel puedes descargar las imágenes genéricas de tu arquitectura y funcionarán en cualquier máquina. Para arquitecturas ARM de 32 o 64 bits, tenemos una solución similar. + +A partir de Agosto de 2020 comenzamos a compiler imágenes genéricas que funcionan para todas las computadoras monoplaca basadas en una solución que involucra a los estándares UEFI y al firmware u-boot. Con este enfoque un pequeño firmware específico de la placa residente en una flash SPI o en una tarjeta SD es responsable de cargar una imágen genérica de !FreedomBox puesta en una tarjeta SD, un disco USB, SATA o NVMe. De este modo, busca y obtén un firmware basado en u-boot del fabricante de tu hardware y ponlo en una flash SPI o una tarjeta SD. A continuación, asegúrate de que el kernel de !FreedomBox soporta tu placa y ponlo en cualquiera de los otros discos de almacenamiento. Este enfoque debería funcionar bien para montones de placas que no están listadas específicamente como soportadas. Mira la sección firmware para más detalles. + +Nosotros continuamos compilando imágenes especificas para algún hardware como hacíamos antes. Éstas imágenes tienen la ligera ventaja de que son más fáciles de montar porque conllevan menos pasos. Sin embargo intentamos descontinuarlas porque no arrancan desde todos los dispositivos de almacenamiento y consumen nuestro tiempo, limitando así la cantidad de placas que soportamos. + +=== Añadir Soporte a Hardware === + +Si tu hardware no esta en la lista anterior pero fuiste capaz de hacerlo funcionar usando el método descrito anteriormente de usar una imágen genérica, escríbenos y lo incluiremos en la lista. Es más, mira la lista de [[CheapServerBoxHardware|hardware objetivo]] con las placas que queremos soportar. + + +== Hardware Obsoleto == + +Este hardware estuvo soportado anteriormente pero ya no. Si descargaste una imagen anterior y ejecutas !FreedomBox sobre algún hardware de estos, seguirás obteniendo actualizaciones de software. Sin embargo, no se publicarán imagenes nuevas. Se recomienda que migres a hardware nuevo y soportado generando una copia de seguridad y restaurándola. + + * !DreamPlug + * Raspberry Pi + +''Nota'': ''Hardware soportado'' significa que las imágenes de !FreedomBox se construyen para este hardware y al menos un desarrollador ha informado que las funciones básicas funcionan. + + +== Información común sobre Hardware == + +Las siguientes secciones documentan consejos comunes relativos al hardware y periféricos cuando se usan con !FreedomBox. + +=== Wi-Fi === + +!FreedomBox puede usar hardware Wi-Fi para 2 propósitos distintos: proporcionar conectividad a internet o compartir conectividad a internet previamente disponible a !FreedomBox (a través de Ethernet, 3G/4G u otro interfaz Wi-Fi) con otros dispositivos de la red. Ver instrucciones sobre cómo configurar !FreedomBox para ambos casos en la página del manual [[es/FreedomBox/Manual/Networks|Redes]]. + +Desafortunadamente la mayoría de los adaptadores Wi-Fi requieren firmware que no es software libre, por lo que !FreedomBox recomienda conectar [[FreedomBox/Hardware/USBWiFi|dispositivos Wi-Fi USB]] que not requieran firmware privativo. Al configurar las redes, los dispositivos soportados se muestran automáticamente en la lista de intefaces de red. + +Si tienes un dispositivo Wi-Fi que requiera firmware privativo y quieres instalarlo para hacerlo funcionar, consulta la [[WiFi|página del wiki]] de Debian. Una vez el firmware está instalado y se muestra el dispositivo se puede configurar y usar en !FreedomBox. + +=== Alimentación eléctrica === + +En computadoras monoplaca uno puede toparse con facilidad con situaciones en las que la placa y sus periféricos no reciban suficiente potencia y fallen de modo impredecible. Para evitarlo, use un adaptador de corriente que suministre la corriente mínima recomendada por el fabricante del hardware. Cuando se conectan periféricos adicionales como dispositivos Wi-Fi, o discos USB, SATA o NVMe los requisitos de potencia aumentan. Sería preferible una fuente de alimentación que pueda proporcionar más corriente de la necesaria pero el voltaje debe coincidir con exactitud a la especificación del fabricante. Recuerda que algunas fuentes de alimentación baratas no proporcionan la corriente que prometen. + +=== Firmware === + +Los ordenadores normales tienen un software que se ejecuta al arranque llamado UEFI/BIOS. Cuando este software, a veces llamado firmware, se encuentra en algúno de los dispositivos de almacenamiento puede cargar el sistema operativo (en nuestro caso !FreedomBox) y pasarle el control. Con la mayoría de las computadoras monoplaca no es así. + +Las computadoras monoplaca se suministran con muy poco software que típicamente se limita a cargar un sistema operativo desde tarjetas SD o eMMCs. Normalmente no pueden arrancar desde discos USB, SATA o NVMe. Para remediar esta situación, los fabricantes de hardware empezaron a añadir un dispositivo especial de almacenamiento de unos pocos MiB de tamaño llamado flash SPI con un software especial, típicamente basado en un cargador de arranque libre y de código abierto llamado u-boot, y que aquí llamaremos firmware. Cuando se enciende la computadora arranca el cargador de la flash SPI que a su vez cargará el sistema operativo. Como el firmware es mucho más potente, puede cargar el sistema operativo desde cualquier dispositivo de almacenamiento. Entre los ejemplos de computadoras monoplaca con flash SPI se incluyen la A20-OLinuXino-Lime2 y la !RockPro64. + +Este enfoque de firmware se puede usar incluso sin flash SPI. Pongamos que uno quiere arrancar desde un disco USB pero la placa no lo soporta. Se puede instalar el firmware en una tarjeta SD (basta una muy pequeña) e insertarla en la placa. El disco USB contendrá a !FreedomBox. Al encender la placa arranca el firmware desde la tarjeta SD y este inicia el sistema operativo desde el disco USB o cualquier otra unidad de almacenamiento. + +Este enfoque de firmware también nos permite usar imágenes genéricas que funcionan para una gran cantidad de placas. Aunque aumentan un poco el esfuerzo del usuario tiene la ventaja de permitirnos dar soporte a mucho más hardware y permiten poner el sistema operativo en cualquier unidad de almacenamiento. + +Cuando se necesite un firmware especial para alguna computadora monoplaca el manual de !FreedomBox para esa placa detallará cómo obtenerlo e instalarlo antes de proceder a la installación de !FreedomBox. + +=== Almacenamiento === + +!FreedomBox puede ejecutarse desde varios medios de almacenamiento que soporte tu computadora. Elegir el medio consiste en equilibrar fiabilidad, capacidad y velocidad vs. coste. Para ejecutar !FreedomBox se recomienda una capacidad mínima de almacenamiento de 8GB. + +==== Tarjeta Digital Segura (SD) ==== + +Las tarjetas SD son habituales en las computadoras monoplaca. La mayoría de computadoras monoplaca pueden arrancar directamente desde una tarjeta SD sin necesidad de preparativos adicionales. + +Las tarjetas SD suelen ser el medio de almacenamiento más lento de entre los disponibles. !FreedomBox será más lento ejecutando ciertas operaciones en estos discos. No todas las tarjetas SD tienen rendimientos similares; las hay mucho más rápidas que otras. Al comprar una tarjeta SD elije una de clase 10 o mayor (suele figurar escrita sobre la tarjeta como un número inscrito en un círculo) o una de clase UHS 1 (escrita sobre la tarjeta como un 1 dentro de un cubo). Las clases UHS 3 (escrita sobre la tarjeta como un 3 dentro de un cubo) o application speed class 1 o superior (escrita como A1 o A2) irán mucho mejor. Finalmente los usuarios de !FreedomBox han informado casos en los que algunas tarjetas SD han fallado, por lo que para mayor fiabilidad serían preferibles otros medios de almacenamiento. + +==== Tarjeta MultiMedia Empotrada (eMMC) ==== + +Muchas computadoras monoplaca de nuevo cuño soportan tarjetas eMMC. La mayoría de computadoras monoplaca pueden arrancar directamente desde una tarjeta eMMC sin necesidad de preparativos adicionales. + +A veces la eMMC viene soldada a la placa y tendrás que elegir su tamaño al comprar la placa; por ejemplo con la Olimex's A20-OLinuXino-Lime2. Otras veces el fabricante las proporcionará como periférico insertable y en tal caso puedes elegir la eMMC a posteriori o sustituir la que haya por otra de capacidad superior. No andes poniendo y quitandolas demasiado. Tienen un número muy limitado (< 100) de ciclos de reinicio. + +Las eMMC son mucho más veloces que las SD o los HDDs de discos rotatorios pero son significativamente más lentas que los SSDs. Estas tiene velocidades de escritura aleatoria mucho mejores, lo que es necesario en muchas operaciones de !FreedomBox. En general son preferibles a las SD. + +La imágen de !FreedomBox se puede montar en una eMMC de 2 maneras. Para eMMC insertables hay disponibles conversores de eMMC a USB. Suelta la eMMC de la placa, insertala en un conversor USB y este en tu máquina, y escribe !FreedomBox en ella como harías con una SD. Si la eMMC viene integrada arranca la computadora desde otra unidad, como una SD o un disco USB. Da igual el sistema operativo. Tras arrancar la eMMC se mostrará como disco adicional. [[es/FreedomBox/Download|Descarga]] y escribe la imágen de !FreedomBox en la eMMC como harías con una SD. + +==== Unidad de disco USB ==== + +La mayoría de ordenadores y computadoras monoplaca tienen puertos USB que aceptan medios de almacenamiento como unidades flash USB, SSDs o HDDs. + +Una unidad flash USB puede también servir para ejecutar !FreedomBox. Las unidades flash USB 2.0 son mucho más lentas y de rendimiento comparable a las tarjetas SD. Las USB 3.0 rinden mucho mejor. Las unidades flash USB y las tarjetas SD usan una tecnología similar de modo que sus ciclos de lectoescritura y por tanto su fiabilidad adolecen de las mismas limitaciones. + +Aparte de unidades flash USB, se pueden insertar discos de estado sólido (SSDs) y discos duros (HDDs) en los puertos USB, ya sea comprando unidades con interfaz USB o usando adaptadores como de USB a SATA o de USB a interfaz M.2. Tanto los SSDs como los HDDs tienen una fiabilidad mucho mayor que las tarjetas SD, eMMC o las unidades flash USB por lo que son preferibles cuando se pueda elegir. Además, las SSDs proporcionan un rendimiento excelente conectadas a través de interfaces USB 3.0. + +Al conectar SSDs y HDDs a puertos USB de computadoras monoplaca hay que prestar atención al suministro eléctrico de la unidad de almacenamiento. Si la unidad viene con alimentador propio no hay problema pero si no es así asegúrate de que la monoplaca es capaz de alimentarla comprobando las especificaciones de alimentación de ambas. Usa siempre un adaptador de corriente para la placa que pueda suministrarle siempre la intensidad de corriente mínima recomendada por su fabricante. Son preferibles los adaptadores que puedan suministrar mayor intensidad pero el voltaje debe coincidir exáctamente con la especificación del fabricante. Recuerda que algunas fuentes de alimentación baratas no suministran la intensidad de corriente que prometen. + +Montar la imágen de !FreedomBox en una unidad USB (flash, SSD o HDD) puede resultar sencillo dado que la mayoría de los ordenadores tienen puertos USB. Inserta la unidad USB en tu ordenador, [[es/FreedomBox/Download|descarga]] y escribe la imágen de !FreedomBox en la unidad USB. A diferencia de los ordenadores portátiles, los de sobremesa, y las máquinas virtuales, que pueden arrancar desde discos USB, muchas computadoras monoplaca no pueden. Para solucionarlo se necesita un firmware adicional. Consulta la sección ''firmware''. + +==== Unidad de disco SATA ==== + +Algunos ordenadores soportan el interfaz SATA para conectar unidades de estado sólido (SSD) o de disco duro (HDD). La Olimex's A20-OLinuXino-Lime2 es un ejemplo de computadora monoplaca con soporte SATA. El protocolo SATA se usa también para puertos mSATA o ranuras M.2 (con llaves B o M). Tanto las SSDs como los HDDs tienen una fiabilidad muy superior a la de las tarjetas SD, eMMC o unidades flash USB. El interfaz SATA proporciona ratios de transferencia de datos muy buenos (aunque no tanto como las unidaes NVMe basadas en PCIe), por lo que cuando se pueda elegir son preferibles a las tarjetas SD, eMMC o unidades flash USB. + +Al conectar SSDs y HDDs a puertos SATA de computadoras monoplaca hay que prestar atención al suministro eléctrico de la unidad de almacenamiento. Si la unidad viene con alimentador propio no hay problema pero si no es así asegúrate de que la monoplaca es capaz de alimentarla comprobando las especificaciones de alimentación de ambas. Usa siempre un adaptador de corriente para la placa que pueda suministrarle siempre la intensidad de corriente mínima recomendada por su fabricante. Son preferibles los adaptadores que puedan suministrar mayor intensidad pero el voltaje debe coincidir exáctamente con la especificación del fabricante. Recuerda que algunas fuentes de alimentación baratas no suministran la intensidad de corriente que prometen. + +Para montar la imágen de !FreedomBox en una unidad SATA arranca la computadora con otro medio que no sea el disco SATA, como una tarjeta SD. Da igual el sistema operativo. Tras arrancar el disco SATA se mostrará como disco adicional. [[FreedomBox/Download|Descarga]] y escribe la imágen de !FreedomBox en él como harías con una SD. A diferencia de los ordenadores portátiles, los de sobremesa, y las máquinas virtuales, que pueden arrancar directamente desde discos SATA, muchas computadoras monoplaca no pueden. Para solucionarlo se necesita un firmware adicional. Consulta la sección ''firmware''. + +==== Unidad de disco NVMe ==== + +La mayoría de ordenadores portátiles y de sobreesa, y algunas computadoras monoplaca soportan el interfaz NVMe para conectar una unidad de estado sólido (SSD)ya sea mediante una ranura M.2 (con llave B o M) o una PCIe. Si viene con ranura PCIe se puede emplear un adaptador PCIe a M.2 para acomodar una unidad NVMe. La placa Radxa's Rock Pi 4 es un ejemplo de computadora monoplaca con ranura M.2. Un ejemplo de computadora monoplaca con ranura PCIe es la !RockPro64 de Pine64. Las SSD basadas en NVMe tienen una fiabilidad muy superior a las tarjetas SD, eMMC o unidades flash USB. Las unidades NVMe proporcionan los mejores ratios de transferencia de datos, por lo que cuando se pueda elegir son preferibles a cualquier otra alternativa. + + +Al conectar unidades NVMe a computadoras monoplaca hay que prestar atención al suministro eléctrico de la unidad de almacenamiento. Asegúrate de que la monoplaca es capaz de alimentarla comprobando las especificaciones de alimentación de ambas. Usa siempre un adaptador de corriente para la placa que pueda suministrarle siempre la intensidad de corriente mínima recomendada por su fabricante. Son preferibles los adaptadores que puedan suministrar mayor intensidad pero el voltaje debe coincidir exáctamente con la especificación del fabricante. Recuerda que algunas fuentes de alimentación baratas no suministran la intensidad de corriente que prometen. + +Para montar la imágen de !FreedomBox en una unidad NVMe arranca la computadora con otro medio que no sea el disco NVMe, como una tarjeta SD. Da igual el sistema operativo. Tras arrancar el disco NVMe se mostrará como disco adicional. [[FreedomBox/Download|Descarga]] y escribe la imágen de !FreedomBox en él como harías con una SD. A diferencia de los ordenadores portátiles, los de sobremesa, y las máquinas virtuales, que pueden arrancar directamente desde unidades NVMe, muchas computadoras monoplaca no pueden. Para solucionarlo se necesita un firmware adicional. Consulta la sección ''firmware''. + +== Compilar tus propias imágenes == + +Todas las imágenes de disco de !FreedomBox para hardware diferente las compila el proyecto usando una herramienta conocida como [[FreedomBox/Maker|Freedom Maker]]. Si por algún motivo quieres compilar tus propias imágenes en vez de descargar las disponibles emplea esta herramienta. El archivo README del proyecto proporciona información acerca de la lista de objetivos de compilación hardware disponibles y cómo compilar imágenes. + +=== Estado del software empleado === + + * Todo el software de las imágenes !FreedomBox viene de los repositorios Debian. El script [[FreedomBox/Maker|Freedom Maker]] realiza ajustes menores. + * Todo el software de las imágenes es software libre que cumple la DFSG excepto en el caso de las imágenes para la Raspberry Pi en las que el paquete de firmware no es software libre. + * Todas las imágenes usan el kernel Linux de Debian que a su vez se basa en el kernel Linux principal. + + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +Las imágenes están licenciadas bajo varias licencias creative commons. Más información de autoría en cada página enlazada. diff --git a/doc/manual/es/I2P.raw.wiki b/doc/manual/es/I2P.raw.wiki new file mode 100644 index 000000000..538afaa71 --- /dev/null +++ b/doc/manual/es/I2P.raw.wiki @@ -0,0 +1,38 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/I2P|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== I2P (Red anónima) == +|| {{attachment:FreedomBox/Manual/I2P/I2P-icon_en_V01.png|I2P icon}} || + +=== Acerca de I2P === +El ''Proyecto Internet Invisible (I2P)'' es una capa anonimizadora de red concebida para protejer las comunicaciones de la censura y la vigilancia. I2P proporciona anonimato enviando tráfico cifrado a través de una red distribuída alrededor del mundo gestionada por voluntarios. + +Más información acerca de I2P en la [[https://geti2p.net|página principal]] del proyecto. + +=== Servicios Ofrecidos === + +Los siguientes servicios se ofrecen en !FreedomBox a través de I2P de serie. Se pueden habilitar más servicios desde la consola de enrutado I2P que se puede abrir desde el interfaz web de !FreedomBox. + + * '''Navegación web anónima''': I2P se puede usar para navegar por la web de forma anónima. Para ello configura tu navegador (preferíblemente un navegador Tor) para conectar al proxy I2P. Esto se puede hacer estableciendo los proxies HTTP y HTTPS a ''freedombox.local'' (o la IP local de tu !FreedomBox) con sus respectivos puertos a ''4444'' y ''4445''. Este servicio está disponible sólo cuando accedes a la !FreedomBox usando la red local (redes de la zona ''interna'' del cortaguegos) y no cuando llegas a la !FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la !FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de navegación web anónima a través de I2P. + * '''Acceso a eepsites''': La red I2P puede albergar sitios web anónimos llamados eepsites cuyo nombre de dominio acaba en `.i2p`. Por ejemplo, `http://i2p-projekt.i2p/` es el sitio web del proyecto I2P en la red I2P. Los eepsites son inaccesibles a un navegador normal a través de una conexión Internet normal. Para navegar a los eepsites tu navegador necesita configurarse para usar los proxies HTTP y HTTPS como se describió antes. Este servicio solo está disponible cuando accedes a la !FreedomBox usando la red local (redes de la zona ''interna'' del cortaguegos) y no cuando llegas a la !FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la !FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de acceso a eepsites a través de I2P. + * '''Descargas anónima de torrentes''': I2PSnark, una aplicación para descargar y compartir archivos anónimamente mediante la red !BitTorrent está disponible y habilitada por defecto en !FreedomBox. Esta aplicación se controla mediante un interfaz web que se puede abrir desde la sección ''Torrentes Anonimos'' de la app I2P en el interfaz web de !FreedomBox o de la consola de enrutado I2P. Solo los usuarios ingresados pertenecientes al grupo ''Manage I2P application'' pueden usar este servicio. + * '''Red IRC''': La red I2P contiene una red IRC llamada Irc2P. Esta red alberga el canal IRC oficial del proyecto I2P, entre otros. Este servicio viene habilitdo de serie en !FreedomBox. Para usarlo abre tu cliente IRC favorito y configuralo para conectar con ''freedombox.local'' (o la IP local de tu !FreedomBox) en el puerto ''6668''. Este servicio solo está disponible cuando accedes a la !FreedomBox usando la red local (redes de la zona ''interna'' del cortaguegos) y no cuando llegas a la !FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la !FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de IRC a través de I2P. + * '''Consola de enrutado I2P''': Este es el interfaz central de administración de I2P. Muestra el estado actual de I2P, estadísticas de ancho de banda y permite modificar varias preferencias de configuración. Puedes adecuar tu participación en la red I2P y usar/editar una lista con tus sitios I2P (eepsites) favoritos. Solo los usuarios ingresados pertenecientes al grupo ''Manage I2P application'' pueden usar este servicio. + +=== Redirección de Puertos === + +Si tu !FreedomBox está detrás de un router, necesitarás configurar la redirección de los siguientes puertos para I2P: + * TCP 4444 + * TCP 4445 + * TCP 6668 + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> diff --git a/doc/manual/es/I2P.raw.xml b/doc/manual/es/I2P.raw.xml deleted file mode 100644 index 13ae8f27a..000000000 --- a/doc/manual/es/I2P.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/I2P82020-05-30 19:35:54SunilMohanAdapaUpdate the title to emphasize app name over its generic name, match with FreedomBox interface72020-05-24 07:21:04fioddorSe alinea con la versión 02 en inglés del 23 de mayo de 202062019-09-17 13:59:23fioddorCorrección52019-09-17 13:58:00fioddorCorrecciones menores.42019-09-17 13:56:45fioddorCorrección32019-09-17 13:55:36fioddorMejora menor22019-09-17 13:54:52fioddorSe crea la versión española.12019-09-17 12:37:09fioddorSe crea la versión española (traducción incompleta).
I2P (Red anónima)
Acerca de I2PEl Proyecto Internet Invisible (I2P) es una capa anonimizadora de red concebida para protejer las comunicaciones de la censura y la vigilancia. I2P proporciona anonimato enviando tráfico cifrado a través de una red distribuída alrededor del mundo gestionada por voluntarios. Más información acerca de I2P en la página principal del proyecto.
Servicios OfrecidosLos siguientes servicios se ofrecen en FreedomBox a través de I2P de serie. Se pueden habilitar más servicios desde la consola de enrutado I2P que se puede abrir desde el interfaz web de FreedomBox. Navegación web anónima: I2P se puede usar para navegar por la web de forma anónima. Para ello configura tu navegador (preferíblemente un navegador Tor) para conectar al proxy I2P. Esto se puede hacer estableciendo los proxies HTTP y HTTPS a freedombox.local (o la IP local de tu FreedomBox) con sus respectivos puertos a 4444 y 4445. Este servicio está disponible sólo cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de navegación web anónima a través de I2P. Acceso a eepsites: La red I2P puede albergar sitios web anónimos llamados eepsites cuyo nombre de dominio acaba en .i2p. Por ejemplo, http://i2p-projekt.i2p/ es el sitio web del proyecto I2P en la red I2P. Los eepsites son inaccesibles a un navegador normal a través de una conexión Internet normal. Para navegar a los eepsites tu navegador necesita configurarse para usar los proxies HTTP y HTTPS como se describió antes. Este servicio solo está disponible cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de acceso a eepsites a través de I2P. Descargas anónima de torrentes: I2PSnark, una aplicación para descargar y compartir archivos anónimamente mediante la red BitTorrent está disponible y habilitada por defecto en FreedomBox. Esta aplicación se controla mediante un interfaz web que se puede abrir desde la sección Torrentes Anonimos de la app I2P en el interfaz web de FreedomBox o de la consola de enrutado I2P. Solo los usuarios ingresados pertenecientes al grupo Manage I2P application pueden usar este servicio. Red IRC: La red I2P contiene una red IRC llamada Irc2P. Esta red alberga el canal IRC oficial del proyecto I2P, entre otros. Este servicio viene habilitdo de serie en FreedomBox. Para usarlo abre tu cliente IRC favorito y configuralo para conectar con freedombox.local (o la IP local de tu FreedomBox) en el puerto 6668. Este servicio solo está disponible cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de IRC a través de I2P. Consola de enrutado I2P: Este es el interfaz central de administración de I2P. Muestra el estado actual de I2P, estadísticas de ancho de banda y permite modificar varias preferencias de configuración. Puedes adecuar tu participación en la red I2P y usar/editar una lista con tus sitios I2P (eepsites) favoritos. Solo los usuarios ingresados pertenecientes al grupo Manage I2P application pueden usar este servicio. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0).
\ No newline at end of file diff --git a/doc/manual/es/Ikiwiki.raw.wiki b/doc/manual/es/Ikiwiki.raw.wiki new file mode 100644 index 000000000..3940a0fe1 --- /dev/null +++ b/doc/manual/es/Ikiwiki.raw.wiki @@ -0,0 +1,62 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Ikiwiki|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Ikiwiki (Wiki y Blog) == +|| {{attachment:FreedomBox/Manual/Ikiwiki/Ikiwiki-icon_en_V01.png|icono de Ikiwiki}} || + +=== ¿Qué es Ikiwiki? === +''Ikiwiki'' convierte páginas wiki a páginas HTML listas para publicar en un sitio web. En particular, proporciona blogs, podcasts, calendarios y una amplia selección de extensiones (''plugins''). + +=== Inicio rápido === + +Tras instalar la app en el interfaz de administración de tu !FreedomBox: + * Ve a la sección ''Crear'' y crea un wiki o un blog. + * Vuelve a la sección ''Configurar'' y haz clic en el enlace /ikiwiki. + * Haz clic en el nombre de tu nuevo wiki o blog bajo ''Directorio Padre''. + * Disfruta de tu nueva página de publicación. + +=== Crear un wiki o blog === +Puedes crear un wiki o blog para albergarlo en tu !FreedomBox mediante la página ''Wiki y Blog (Ikiwiki)''. La primera vez que visites esta página te pedirá instalar paquetes requiridos por Ikiwiki. + +Tras completar la instalación de paquetes selecciona la solapa Crear. Puedes elegir el tipo: Wiki o Blog. Teclea también un nombre para el wiki o blog, y el usuario y contraseña para su cuenta de administrador. Al hacer clic en ''Actualizar configuración'' verás el wiki/blog añadido a tu lista. Observa que cada wiki/blog tiene su propia cuenta de administrador. + +{{attachment:ikiwiki_create.png|ikiwiki: Create|width=800}} + +=== Acceder a tu wiki o blog === +Desde la página de ''Wiki y Blog (Ikiwiki)'' selecciona la solapa ''Administrar'' y verás una lista de tus wikis y blogs. Haz clic en un nombre para navegar a ese wiki o blog. + +{{attachment:ikiwiki_manage.png|ikiwiki: Manage|width=800}} + +Desde aquí, si le das a ''Editar'' o a ''Preferencias'' se te llevará a una página de ingreso. Para ingresar con la cuenta de administrador que creaste antes selecciona la solapa ''Otros'', introduce el usuario y la contraseña y haz clic en ''Ingresar''. + +=== Ingreso único de usuarios (SSO) === +Se puede dar permiso para editar a otros usuarios de !FreedomBox además de al administrador del wiki/blog. Sin embargo no tendrán todos los permisos del administrador. Podrán añadir o editar páginas pero no podrán cambiar la configuración del wiki. + +Para añadir a un usuario al wiki ve a la página ''Usuarios y Grupos'' de !FreedomBox (bajo ''Configuración del Sistema'', el icono del engranaje de la esquina superior derecha de la página). Crea o modifica un usuario y añádele al grupo ''wiki''. (Los usuarios del grupo ''admin'' tendrán también acceso al wiki.) + +Para ingresar como usuario !FreedomBox ve a la página de ingreso del wiki/blog y selecciona la solapa ''Otros''. Luego haz clic en el botón ''Ingresar con autenticación HTTP''. El navegador mostrá un diálogo emergente en el que podrás introducir el usuario y la contraseña del usuario de !FreedomBox. + +=== Añadir usuarios FreedomBox como admnistradores de wiki === + + 1. Ingresa al wiki con su cuenta de administrador. + 2. Haz clic en ''Preferencias'' y luego en ''Configurar''. + 3. Debajo de ''Principal'', en ''usuarios administradores de algún wiki'', añade el nombre de un usuario de !FreedomBox. + 4. (Opcional) Desmarca la opción ''habilitar autenticación mediante contraseña'' de ''extensión de autenticación: autenticación mediante contraseña''. (Nota: Esto deshabilitará el ingreso con la cuenta de administrador anterior. Solo se podrá ingresar mediante ingreso único usando autenticación HTTP.) + 5. Haz clic en ''Grabar Configuración''. + 6. Pulsa ''Preferencias'' y a continuación ''Salir''. + 7. Ingresa como el nuevo usuario administrador usando ''Ingresar con autenticación HTTP''. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Ikiwiki.raw.xml b/doc/manual/es/Ikiwiki.raw.xml deleted file mode 100644 index fdb206897..000000000 --- a/doc/manual/es/Ikiwiki.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Ikiwiki52020-05-30 19:36:25SunilMohanAdapaUpdate the title to emphasize app name over its generic name42020-05-24 07:17:47fioddorSe alinea con la versión 11 en inglés del 23 de mayo de 202032019-09-17 12:09:26fioddorMejora menor22019-09-17 12:07:08fioddorMejora menor12019-09-17 12:05:55fioddorSe crea la versión española.
Ikiwiki (Wiki y Blog)
¿Qué es Ikiwiki?Ikiwiki convierte páginas wiki a páginas HTML listas para publicar en un sitio web. En particular, proporciona blogs, podcasts, calendarios y una amplia selección de extensiones (plugins).
Inicio rápidoTras instalar la app en el interfaz de administración de tu FreedomBox: Ve a la sección Crear y crea un wiki o un blog. Vuelve a la sección Configurar y haz clic en el enlace /ikiwiki. Haz clic en el nombre de tu nuevo wiki o blog bajo Directorio Padre. Disfruta de tu nueva página de publicación.
Crear un wiki o blogPuedes crear un wiki o blog para albergarlo en tu FreedomBox mediante la página Wiki y Blog (Ikiwiki). La primera vez que visites esta página te pedirá instalar paquetes requiridos por Ikiwiki. Tras completar la instalación de paquetes selecciona la solapa Crear. Puedes elegir el tipo: Wiki o Blog. Teclea también un nombre para el wiki o blog, y el usuario y contraseña para su cuenta de administrador. Al hacer clic en Actualizar configuración verás el wiki/blog añadido a tu lista. Observa que cada wiki/blog tiene su propia cuenta de administrador. ikiwiki: Create
Acceder a tu wiki o blogDesde la página de Wiki y Blog (Ikiwiki) selecciona la solapa Administrar y verás una lista de tus wikis y blogs. Haz clic en un nombre para navegar a ese wiki o blog. ikiwiki: Manage Desde aquí, si le das a Editar o a Preferencias se te llevará a una página de ingreso. Para ingresar con la cuenta de administrador que creaste antes selecciona la solapa Otros, introduce el usuario y la contraseña y haz clic en Ingresar.
Ingreso único de usuarios (SSO)Se puede dar permiso para editar a otros usuarios de FreedomBox además de al administrador del wiki/blog. Sin embargo no tendrán todos los permisos del administrador. Podrán añadir o editar páginas pero no podrán cambiar la configuración del wiki. Para añadir a un usuario al wiki ve a la página Usuarios y Grupos de FreedomBox (bajo Configuración del Sistema, el icono del engranaje de la esquina superior derecha de la página). Crea o modifica un usuario y añádele al grupo wiki. (Los usuarios del grupo admin tendrán también acceso al wiki.) Para ingresar como usuario FreedomBox ve a la página de ingreso del wiki/blog y selecciona la solapa Otros. Luego haz clic en el botón Ingresar con autenticación HTTP. El navegador mostrá un diálogo emergente en el que podrás introducir el usuario y la contraseña del usuario de FreedomBox.
Añadir usuarios FreedomBox como admnistradores de wikiIngresa al wiki con su cuenta de administrador. Haz clic en Preferencias y luego en Configurar. Debajo de Principal, en usuarios administradores de algún wiki, añade el nombre de un usuario de FreedomBox. (Opcional) Desmarca la opción habilitar autenticación mediante contraseña de extensión de autenticación: autenticación mediante contraseña. (Nota: Esto deshabilitará el ingreso con la cuenta de administrador anterior. Solo se podrá ingresar mediante ingreso único usando autenticación HTTP.) Haz clic en Grabar Configuración. Pulsa Preferencias y a continuación Salir. Ingresa como el nuevo usuario administrador usando Ingresar con autenticación HTTP. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Infinoted.raw.wiki b/doc/manual/es/Infinoted.raw.wiki new file mode 100644 index 000000000..e83af6430 --- /dev/null +++ b/doc/manual/es/Infinoted.raw.wiki @@ -0,0 +1,26 @@ +<> + +## BEGIN_INCLUDE + +== Infinoted (Servidor Gobby) == +|| {{attachment:FreedomBox/Manual/Infinoted/Infinoted-icon_en_V01.png|icono de Infinoted}} || + +'''Disponible desde''': versión 0.5 + +''Infinoted'' es un servidor de edición colaborativa de textos para Gobby. + +Para usarlo [[https://gobby.github.io/|descarga el cliente Gobby]] para escritorio e instalalo. Inicialo, selecciona "Conectar a un Servidor" e introduce el nombre de dominio de tu !FreedomBox. + +=== Redirección de Puertos === + +Si tu !FreedomBox está detras de un router necesitarás configurar la redirección de puertos en tu router. Redirije los siguientes puertos de infinoted: + * TCP 6523 + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Infinoted.raw.xml b/doc/manual/es/Infinoted.raw.xml deleted file mode 100644 index 3e0871518..000000000 --- a/doc/manual/es/Infinoted.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Infinoted42020-05-30 19:37:00SunilMohanAdapaUpdate the title to emphasize app name over its generic name32020-05-24 06:57:06fioddorSe alinea con la versión 02 en inglés del 23 de mayo de 202022019-09-12 11:09:53fioddorMejora menor12019-09-12 11:08:05fioddorSe crea la versión española.
infinoted (Servidor Gobby)Infinoted es un servidor de edición colaborativa de textos para Gobby. Para usarlo descarga el cliente Gobby para escritorio e instalalo. Inicialo, selecciona "Conectar a un Servidor" e introduce el nombre de dominio de tu FreedomBox.
Redirección de PuertosSi tu FreedomBox está detras de un router necesitarás configurar la redirección de puertos en tu router. Redirije los siguientes puertos de infinoted: TCP 6523 Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Introduction.raw.wiki b/doc/manual/es/Introduction.raw.wiki new file mode 100644 index 000000000..c0f635ade --- /dev/null +++ b/doc/manual/es/Introduction.raw.wiki @@ -0,0 +1,74 @@ +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[de/FreedomBox/Einführung|Deutsch]] - [[FreedomBox/Introduction|English]] - Español - [[fr/FreedomBox/Introduction|Français]]-~ +## BEGIN_INCLUDE + += FreedomBox: Recupera tu privacidad online = + +!FreedomBox es un servidor personal diseñado tomando en cuenta la privacidad y la propiedad de los datos. Es un subconjunto del [[https://www.debian.org/|sistema operativo universal Debian]] e incluye solo software libre. Puedes ejecutarlo en casa en un ordenador pequeño, barato y energéticamente eficiente dedicado a tal uso. También se puede instalar en cualquier ordenador que ejecute Debian o en una máquina virtual. + +Para reeemplazar servicios de comunicaciones de terceros que están espiando toda tu vida, podrás alojar servicios por ti mismo y usarlos en casa o a través de Internet mediante un navegador o aplicaciones especializadas. Estos servicios incluyen chat y audioconferencias, correo electrónico web, compartición de ficheros y calendario, libreta de direcciones y sincronización de feeds de noticias. Por ejemplo, para comenzar a usar un servicio de chat privado activa el servicio desde el interfaz de administración y agrega a tus amistades como usuarios autorizados del servicio. Podrán conectarse al servicio alojado en tu !FreedomBox usando clientes de chat XMPP como ''Conversations'' para Android, ''Pidgin'' para Windows y Linux, o ''Messages'' para Mac OS, y acceder a comunicaciones cifradas. + +!FreedomBox es un producto que puedes [[https://freedomboxfoundation.org/buy/|comprar]], instalar y queda lista para usar. Una vez instalado el interfaz es fácil de usar, parecido a un teléfono inteligente. + +Documentación de usuario: + * [[es/FreedomBox/Features|Aplicaciones de FreedomBox]] + * [[es/FreedomBox/Manual|Manual]] + * [[es/FreedomBox/Support|Ayuda en directo de la comunidad]] + +!FreedomBox también puede alojar un punto de acceso Wi-Fi, un proxy para bloquear anuncios y una red privada virtual (VPN). Los usuarios más avanzados pueden reemplazar su router por un !FreedomBox. + +Configurar !FreedomBox en casa sobre un hardware específico o en tu ordenador con Debian podría requerir cierto conocimiento técnico o ayuda de la comunidad. + +Documentación técnica relacionada: + * [[es/FreedomBox/Hardware|Máquinas que soportan FreedomBox]] + * [[es/FreedomBox/Download|Desgarga e Instalación]] + * [[https://docs.freedombox.org|Manual del Desarrollador de FreedomBox]] + +== Uso típico: Nube Privada == + +!FreedomBox proporciona servicios a ordenadores y dispositivos móviles en tu hogar, y a tus amistades. Esto incluye mensajería instantánea segura y audioconferencias de alta calidad con poco consumo de banda. !FreedomBox te permite publicar tus contenidos en un blog y en un wiki para colaborar con el resto del mundo. Están previstos los servicios de servidor personal de correo electrónico y red social federada, para proporcionar alternativas a ''Gmail'' y ''Facebook'' que respeten la privacidad. + +== Uso típico: Almacenamiento en Red (NAS) == + +Se puede extender el espacio de almacenaje disponible para la !FreedomBox conectando un disco duro externo. Esto permite a !FreedomBox ejercer como biblioteca multimedia para tus fotos, música, y videos. Las carpetas se comparten en la red local con ordenadores y dispositivos móviles, y se pueden retransmitir los contenidos a dispositivos locales, como smart TVs. + +== Uso avanzado: Router Casero Inteligente == + +!FreedomBox se ejecuta en un ordenador físico y puede enrutar tu tráfico. Puede reemplazar a tu router inalámbrico de casa dando salida a internet a dispositivos variados como teléfonos móviles, ordenadores portátiles y televisores. Enrutando tráfico !FreedomBox puede eliminar anuncios espía y malware web antes incluso de que alcancen tus dispositivos. !FreedomBox puede ocultar tu localización y protejer tu anonimato enrutando tu tráfico por la red Tor. !FreedomBox proporciona un servidor VPN que puedes emplear cuando estés lejos de casa para mantener secreto tu tráfico en redes inalámbricas públicas en las que no confíes y para acceder con seguridad a tus dispositivos de casa. + +También lo puedes llevar contigo y tu portátil y usarlo para para habilitar sus servicios en redes públicas en la escuela o en la oficina. En el futuro, !FreedomBox intentará dar soporte a medios alternativos de conexión a Internet, como redes ''Mesh''. + +== Uso avanzado: Para Comunidades == + +El objetivo principal del diseño de !FreedomBox es ser empleado como servidor personal en el hogar para uso por parte de una única familia y sus amistades. No obstante, en esencia es un software servidor que puede ayudar a un usuario no técnico a desplegar y mantener servicios con facilidad. El software se encarga automáticamente de muchas de las decisiones técnicas de administración del sistema, incluída la seguridad, reduciendo la complejidad para un usuario no técnico. Esta naturaleza de !FreedomBox le hace apropiado para alojar servicios para comunidades pequeñas como aldeas o pequeñas empresas. Las comunidades pueden alojar sus propios servicios con un esfuerzo minimo usando !FreedomBox. Pueden desplegar redes Wi-Fi que cubran toda el área de la comunidad y traer conexiones a Internet desde largas distancias. Los miembros de la comunidad pueden disfrutar conectividad a Internet, cobertura Wi-Fi omnipresente, servicios de VoIP, contenidos educativos y de entretenimiento offline, etc anteriormente no disponibles. También reforzará la privacidad individual de los miembros de la comunidad, reducirá su dependencia de servicios centralizados proporcionados por grandes compañías y les hará resistentes a la censura. + +El libro electrónico libre [[https://en.wikibooks.org/wiki/FreedomBox_for_Communities|FreedomBox for Communities]] describe la motivación y proporciona instrucciones detalladas para configurar !FreedomBox para este caso de uso. Miembros del proyecto !FreedomBox estan involucrados en desplegar redes Wi-Fi con conectividad gratuíta a Internet en la India rural. Este libro electrónico documenta su conocimiento y experiencias. + +== Interfaz de FreedomBox == + +=== Captura de pantalla === + +{{attachment:freedombox-frontpage-2019-03-02.png|FreedomBox front page|width=1000}} + +{{{#!wiki comment +This video is much too old to be useful here. +=== Video de introducción === + +[[attachment:Plinth_Introduction.webm]] + +(36 MB, 13 Min.) +}}} + +=== Recursos en formato video === + +La charla [[https://www.youtube.com/watch?v=QOEMv0S8AcA|Eben Moglen - Freedom in the cloud]] que impartió Eben Moglen antes del arranque del proyecto !FreedomBox expone aspectos de la filosofía que hay detrás !FreedomBox. + +[[http://moglen.law.columbia.edu/sflc2015/04_freedombox.webm|Primera demostración de FreedomBox en SFLC, Universidad de Columbia]] por Sunil Mohan Adapa. + +## END_INCLUDE + +Para una [[es/FreedomBox/Features|lista completa de aplicaciones]] que ofrece !FreedomBox visita la página de funcionalidades y [[https://freedomboxfoundation.org/buy/|compra]] o [[es/FreedomBox/Download|descarga]] la tuya. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/JSXC.raw.wiki b/doc/manual/es/JSXC.raw.wiki new file mode 100644 index 000000000..37600c048 --- /dev/null +++ b/doc/manual/es/JSXC.raw.wiki @@ -0,0 +1,53 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/JSXC|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== JSXC (Cliente Web de Mensajería Instantánea) == +|| {{attachment:FreedomBox/Manual/JSXC/JSXC-icon_en_V01.png|icono de JSXC}} || + +'''Disponible desde''': versión 0.11.0 + +''JSXC'' is un cliente web de mensajería instantánea. Sirve para conectar con servidores de mensajería instantánea compatibles. + +!FreedomBox ofrece ambas partes desde su interfaz web: un servidor ([[es/FreedomBox/Manual/ejabberd|ejabberd]]) y un cliente web (JSXC). + +=== Especificaciones técnicas === + +JSXC está hecho con HTML5 e implementa el protocolo XMPP sobre [[https://en.wikipedia.org/wiki/BOSH_(protocol)|BOSH]]. + +XMPP es un protocolo cliente-servidor para Mensajería Instantánea federado. Esto significa que los usuarios con cuenta en un servidor pueden conversar con usuarios de otro servidor. + +Se puede usar XMPP también para llamadas de voz y/o vídeo, si los clientes las soportan. + +=== Instalación === +Puedes instalar JSXC mediante su icono de la sección Apps de la interfaz web de !FreedomBox. El icono de ejabberd (servidor XMPP) también ofrece lanzar el cliente web (instalando JSXC de paso si fuera preciso). + +=== Uso === +Tras completar la instalación del módulo JSXC, queda accesible mediante su icono en la sección Apps de la interfaz web de !FreedomBox. El icono de ejabberd (servidor XMPP) también ofrece lanzar el cliente web. Ambos te redirigirán a {{{https:///plinth/apps/xmpp/jsxc/}}}. + +Para usarlo necesitas introducir el nombre de dominio del servidor al que quieres conectarte. Automáticamente comprueba la conexión al servidor BOSH cuando tecléas el nombre de dominio. +||{{attachment:FreedomBox/Manual/JSXC/JSXC-KO_en_V01.png|JSXC sin conexión|height=250}} || {{attachment:FreedomBox/Manual/JSXC/JSXC-ok_en_V01.png|JSXC con conexión|height=250}} || + +Más detalles en https://www.jsxc.org. + +JSXC ofrece funcionalidades de videoconferencia y transferencia de ficheros pero no parecen funcionar aún en !FreedomBox. + +=== Redirección de puertos === + +Si tu !FreedomBox está detrás de un router y quieres conectarte a otros servidores, necesitarás configurar la redirección de puertos de tu router. Para XMPP deberás redirigir los siguientes puertos: + * TCP 5222 (cliente-a-servidor) + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + + +---- +CategoryFreedomBox diff --git a/doc/manual/es/LetsEncrypt.raw.wiki b/doc/manual/es/LetsEncrypt.raw.wiki new file mode 100644 index 000000000..47dd346bf --- /dev/null +++ b/doc/manual/es/LetsEncrypt.raw.wiki @@ -0,0 +1,58 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/LetsEncrypt|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Let's Encrypt (Certificados) == + +Un certificado digital permite a los usuarios de un servicio web verificar la identidad del servicio y comunicar con él de modo seguro. !FreedomBox puede obtener y configurar automaticamente certificados digitales para cada dominio disponible. Lo hace probando a Let's Encrypt, una authoridad de certificación (CA) ser el dueño de un dominio. + +Let's Encrypt es una autoridad de certificación abierta, automatizada, libre y gratuita administrada para beneficio público por el Internet Security Research Group (ISRG). Por favor, lee y acepta los términos del Acuerdo de Suscripción de Let's Encrypt antes de usar este servicio. + +=== Por Qué Usar Certificados === + +La comunicación con tu !FreedomBox se puede asegurar de modo que se imposibilite interceptar los contenidos que tus servicios intercambian con sus usuarios. + +=== Cómo configurar === + + 1. Si tu !FreedomBox está detrás de un router, necesitarás configurar la redirección de puertos en tu router. Debes redirigir los siguientes puertos: + * TCP 80 (http) + * TCP 443 (https) + + 1. Publica tu nombre de dominio: + * En [[https://wiki.debian.org/es/FreedomBox/Manual/Configure|Configurar]] inserta tu ''nombre de dominio'', p.ej. ''`MiWeb.com`'' + {{attachment:LetsEncrypt-Configure.png|Let's Encrypt|width=800}} + + 1. Verifica que se aceptó tu nombre de dominio + * Comprueba que está habilitado en [[https://wiki.debian.org/es/FreedomBox/Manual/NameServices|Servicio de Nombres]] + + {{attachment:LetsEncrypt-NameServices.png|Let's Encrypt Name Services|width=800}} + + 1. Ve a la página de los Certificados (Let's Encrypt) y completa la instalación del modulo si hace falta. Entonces haz clic en el botón "Obtener" de tu nombre de dominio. + * Tras algunos minutos estará disponible un certificado válido + {{attachment:LetsEncrypt.png|Let's Encrypt|width=800}} + + 1. Verifica en tu navegador comprobando ''`https://MiWeb.com`'' + {{attachment:LetsEncrypt-Certificate.png|Let's Encrypt Certificate|width=800}} + +'''Screencast''': [[attachment:Let's Encrypt.webm|Let's Encrypt|&do=get]] + +=== Usar === + +El certificado es válido por 3 meses. Se renueva automáticamente y también se puede volcer a obtener o revocar manualmente. + +Ejecutando ''diagnostics'' se puede también verificar el certificado. + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/LetsEncrypt.raw.xml b/doc/manual/es/LetsEncrypt.raw.xml deleted file mode 100644 index 4f4ede561..000000000 --- a/doc/manual/es/LetsEncrypt.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/LetsEncrypt52020-05-30 19:48:56SunilMohanAdapaUpdate the title to emphasize app name over its generic name42020-05-24 07:38:10fioddorSe alinea con la versión 11 en inglés del 23 de mayo de 202032020-04-04 17:19:32fioddorCorrección.22019-08-20 12:56:47fioddorSe incorpora la traducción de una sección nueva.12019-08-20 12:48:05fioddorSe incorpora la traducción de una sección nueva.
Let's Encrypt (Certificados)Un certificado digital permite a los usuarios de un servicio web verificar la identidad del servicio y comunicar con él de modo seguro. FreedomBox puede obtener y configurar automaticamente certificados digitales para cada dominio disponible. Lo hace probando a Let's Encrypt, una authoridad de certificación (CA) ser el dueño de un dominio. Let's Encrypt es una autoridad de certificación abierta, automatizada, libre y gratuita administrada para beneficio público por el Internet Security Research Group (ISRG). Por favor, lee y acepta los términos del Acuerdo de Suscripción de Let's Encrypt antes de usar este servicio.
Por Qué Usar CertificadosLa comunicación con tu FreedomBox se puede asegurar de modo que se imposibilite interceptar los contenidos que tus servicios intercambian con sus usuarios.
Cómo configurarSi tu FreedomBox está detrás de un router, necesitarás configurar la redirección de puertos en tu router. Debes redirigir los siguientes puertos: TCP 80 (http) TCP 443 (https) Publica tu nombre de dominio: En Configurar inserta tu nombre de dominio, p.ej. MiWeb.com Let's Encrypt Verifica que se aceptó tu nombre de dominio Comprueba que está habilitado en Servicio de Nombres Let's Encrypt Name Services Ve a la página de los Certificados (Let's Encrypt) y completa la instalación del modulo si hace falta. Entonces haz clic en el botón "Obtain" de tu nombre de dominio. Tras algunos minutos estará disponible un certificado válido Let's Encrypt Verifica en tu navegador comprobando https://MiWeb.com Let's Encrypt Certificate Screencast: Let's Encrypt
UsarEl certificado es válido por 3 meses. Se renueva automáticamente y también se puede volcer a obtener o revocar manualmente. Ejecutando diagnostics se puede también verificar el certificado. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/MLDonkey.raw.wiki b/doc/manual/es/MLDonkey.raw.wiki new file mode 100644 index 000000000..430ff11a5 --- /dev/null +++ b/doc/manual/es/MLDonkey.raw.wiki @@ -0,0 +1,52 @@ +## page was renamed from FreedomBox/Manual/MLdonkey +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/MLDonkey|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== MLDonkey (Compartir archivos entre pares) == +|| {{attachment:FreedomBox/Manual/MLDonkey/MLDonkey-icon_en_V01.png|icono de MLDonkey}} || + +'''Disponible desde:''' versión 0.48.0 + +=== ¿Qué es MLDonkey? === + +''MLDonkey'' es una aplicación libre y multiprotocolo para compartir archivos entre pares (P2P) que ejecuta un servidor ''back-end'' sobre muchas plataformas. Se puede controlar mediante algún interfaz ''front-end'', ya sea web, telnet o cualquier otro de entre una docena de programas cliente nativos. + +Originalmente era un cliente Linux para el protocolo eDonkey pero ahora se ejecuta en multiples sabores de Unix y derivados, OS X, Microsoft Windows y MorphOS. Y soporta muchos protocolos P2P, incluyendo ED2K (y Kademlia sobre Overnet), !BitTorrent, DC++ y más. + +Más información acerca de MLDonkey en [[http://mldonkey.sourceforge.net/Main_Page|el Wiki del Proyecto MLDonkey]] + +=== Captura de Pantalla === + +{{attachment:mldonkey.jpg|MLDonkey Web Interface|width=800}} + +=== Usar el Interfaz Web MLDonkey === + +Tras instalar MLDonkey su interfaz web está accesible a los usuarios de los grupos ''ed2k'' y ''admin'' en {{{https:///mldonkey}}}. + +=== Usar el Interfaz para Escritorio/Móvil === + +Se pueden usar muchas [[http://mldonkey.sourceforge.net/Gui|aplicaciones de escritorio y móviles]] para controlar a MLDonkey. El servidor MLDonkey estará ejecutándose siempre en la !FreedomBox y (cargará o) descargará archivos y los mantendrá almacenados incluso cuando tu máquina local esté apagada o desconectada del MLDonkey de !FreedomBox. Por restricciones de acceso via SSH a la !FreedomBox solo los usuarios del grupo ''admin'' pueden acceder a su MLDonkey. + + 1. Crea un usuario nuevo en el grupo admin o usa uno que ya esté allí. + + 1. En tu máquina de escritorio abre una terminal y ejecuta el siguiente comando. Para este paso se recomienda que configures y uses claves SSH en vez de contraseñas. + {{{ +$ ssh -L 4001:localhost:4001 -N usuario_de_ejemplo@ejemplo.freedombox.mola + }}} + 1. Arranca la aplicación gráfica y conéctala a MLDonkey como si MLDonkey se estuviera ejecutando en la máquina local de escritorio. Cuando hayas terminado mata el proceso SSH pulsando Control-C. + +Para más información lee acerca de los [[http://mldonkey.sourceforge.net/SshTunnel|túneles SSH]] en la documentación MLDonkey. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/MLDonkey.raw.xml b/doc/manual/es/MLDonkey.raw.xml deleted file mode 100644 index c98c053db..000000000 --- a/doc/manual/es/MLDonkey.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/MLDonkey42020-05-30 19:40:24SunilMohanAdapaUpdate the title to emphasize app name over its generic name, match with FreedomBox interface32020-05-24 06:51:48fioddorSe alinea con la versión 13 en inglés del 23 de mayo de 202022019-09-11 14:51:57fioddorCorrecciones menores.12019-09-11 14:46:33fioddorSe crea la versión española.
MLDonkey (Compartir archivos entre pares)
¿Qué es MLDonkey?MLDonkey es una aplicación libre y multiprotocolo para compartir archivos entre pares (P2P) que ejecuta un servidor back-end sobre muchas plataformas. Se puede controlar mediante algún interfaz front-end, ya sea web, telnet o cualquier otro de entre una docena de programas cliente nativos. Originalmente era un cliente Linux para el protocolo eDonkey pero ahora se ejecuta en multiples sabores de Unix y derivados, OS X, Microsoft Windows y MorphOS. Y soporta muchos protocolos P2P, incluyendo ED2K (y Kademlia sobre Overnet), BitTorrent, DC++ y más. Más información acerca de MLDonkey en el Wiki del Proyecto MLDonkey Disponible desde: versión 0.48.0
Captura de PantallaMLDonkey Web Interface
Usar el Interfaz Web MLDonkeyTras instalar MLDonkey su interfaz web está accesible a los usuarios de los grupos ed2k y admin en https://<tu_freedombox>/mldonkey.
Usar el Interfaz para Escritorio/MóvilSe pueden usar muchas aplicaciones de escritorio y móviles para controlar a MLDonkey. El servidor MLDonkey estará ejecutándose siempre en la FreedomBox y (cargará o) descargará archivos y los mantendrá almacenados incluso cuando tu máquina local esté apagada o desconectada del MLDonkey de FreedomBox. Por restricciones de acceso via SSH a la FreedomBox solo los usuarios del grupo admin pueden acceder a su MLDonkey. Crea un usuario nuevo en el grupo admin o usa uno que ya esté allí. En tu máquina de escritorio abre una terminal y ejecuta el siguiente comando. Para este paso se recomienda que configures y uses claves SSH en vez de contraseñas. Arranca la aplicación gráfica y conéctala a MLDonkey como si MLDonkey se estuviera ejecutando en la máquina local de escritorio. Cuando hayas terminado mata el proceso SSH pulsando Control-C. Para más información lee acerca de los túneles SSH en la documentación MLDonkey. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Maker.raw.wiki b/doc/manual/es/Maker.raw.wiki new file mode 100644 index 000000000..19d5b3976 --- /dev/null +++ b/doc/manual/es/Maker.raw.wiki @@ -0,0 +1,62 @@ +== Freedom Maker == + +''Freedom Maker'' es un script para generar imágenes de disco !FreedomBox adaptadas a diferentes dispositivos hardware o máquinas virtuales. + +Actualmente Freedom Maker puede generar imágenes de disco !FreedomBox para el siguiente hardware: + * [[https://en.wikipedia.org/wiki/OLinuXino#A20-OlinuXino-LIME|A20-OlinuXino-LIME]] + * [[https://en.wikipedia.org/wiki/OLinuXino#A20-OlinuXino-LIME2|A20-OlinuXino-LIME2]] + * [[https://en.wikipedia.org/wiki/OLinuXino#A20-OLinuXino-MICRO|A20-OLinuXino-MICRO]] + * [[https://en.wikipedia.org/wiki/Banana_Pro|Banana Pro]] + * [[https://en.wikipedia.org/wiki/BeagleBoard#BeagleBone|BeagleBone]] + * [[https://en.wikipedia.org/wiki/Cubieboard#Cubieboard2|Cubieboard2]] + * [[https://en.wikipedia.org/wiki/Cubieboard#Cubietruck_.28Cubieboard3.29|Cubietruck]] + * [[http://www.linksprite.com/linksprite-pcduino3/|pcDuino3]] + * [[https://en.wikipedia.org/wiki/Raspberry_Pi|Raspberry Pi 2]] + * [[https://en.wikipedia.org/wiki/Raspberry_Pi|Raspberry Pi 3 Modelo B]] + * [[https://en.wikipedia.org/wiki/Raspberry_Pi|Raspberry Pi 3 Modelo B+]] + * [[https://en.wikipedia.org/wiki/VirtualBox|VirtualBox]] + * [[https://en.wikipedia.org/wiki/QEMU|QEMU]] + * [[https://en.wikipedia.org/wiki/X86-64#AMD64|Máquinas AMD64 (x86-64)]], [[https://en.wikipedia.org/wiki/X86|máquinas X86]] y otras máquinas virtuales (usando imágenes de disco en crudo (''raw'')) + +Si una platforma de hardware puede ejecutar Debian no debería llevar mucho esfuerzo adaptar Freedom Maker para que le genere imágenes !FreedomBox. + +Freedom Maker es [[https://www.gnu.org/philosophy/|Software Libre]] licenciado bajo la versión 3 o posterior (a tu elección) de la [[https://www.gnu.org/licenses/gpl.html|Licencia Pública General GNU]]. + +=== Generar Imágenes FreedomBox === + + * Puedes obtener Freedom Maker desde su [[https://salsa.debian.org/freedombox-team/freedom-maker.git|repositorio Git]] y seguir las instrucciones del fichero README para [[https://salsa.debian.org/freedombox-team/freedom-maker/blob/master/README.md|generar una imágen FreedomBox]]. + +=== Soporte === + +Puedes solicitar soporte en + + * [[https://discuss.freedombox.org/|El foro de debate]] + + * La [[http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss|lista de correo]] + + * El [[irc://irc.debian.org/freedombox|canal IRC #freedombox]] + + * El [[https://matrix.to/#/#freedombox:matrix.org|canal Matrix FreedomBox]] + +=== Contribuir === + +Buscamos ayuda para mejorar Freedom Maker. + + * Hay instrucciones disponibles para [[FreedomBox/Contribute/Code|contribuir código fuente]]. + + * Freedom Maker se aloja en el [[https://salsa.debian.org/freedombox-team/freedom-maker|Proyecto Salsa de FreedomBox]]. El repositorio Git principal está alojado [[https://salsa.debian.org/freedombox-team/freedom-maker.git|allí]]. + + * Puedes contribuir a !FreedomBox añadiendo soporte para más platformas de hardware. Freedom Maker se puede adaptar fácilmente a más platformas si ya soportan ejecutar Debian. + + * Puedes crear y probar imágenes con Freedom Maker regularmente para probar las funcionalidades nuevas y comprobar que no hay regresiones. + + * Las listas de defectos, tareas pendientes y solicitudes de funcionalidad están en el [[https://salsa.debian.org/freedombox-team/freedom-maker/issues|gestor de incidencias]]. + + * Puedes solicitar asistencia al desarrollo en el [[https://discuss.freedombox.org/|foro de debate]], la [[http://lists.alioth.debian.org/mailman/listinfo/freedombox-discuss|lista de correo]] o el [[irc://irc.debian.org/freedombox|canal IRC #freedombox]]. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/MatrixSynapse.raw.wiki b/doc/manual/es/MatrixSynapse.raw.wiki new file mode 100644 index 000000000..c180a2541 --- /dev/null +++ b/doc/manual/es/MatrixSynapse.raw.wiki @@ -0,0 +1,80 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/MatrixSynapse|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Matrix Synapse (Servidor de Mensajería Instantánea) == +|| {{attachment:FreedomBox/Manual/MatrixSynapse/Matrix-icon_en_V01.png|icono de Matrix Synapse}} || + +'''Disponible desde:''' versión 0.14.0 + +=== ¿Qué es Matrix? === +[[https://matrix.org/|Matrix]] es un estándar abierto para comunicaciones sobre IP en tiempo real interoperables y descentralizadas. ''Synapse'' es la implementación de referencia de un servidor Matrix. Se puede usar para montar mensajería instantánea sobre !FreedomBox para albergar grandes salones de chat, comunicaciones cifradas punto a punto y llamadas de audio/vídeo. +Matrix Synapse es una aplicación federada en la que puede haber salas de chat en un servidor y los usuarios de cualquier otro servidor de la red federada pueden unirse a ellas. [[https://matrix.org/docs/guides/faq.html|Más información]] acerca de Matrix. + +=== ¿Cómo acceder a tu servidor Matrix Synapse? === + +Para acceder al servidor Matrix Synapse recomendamos el cliente [[https://element.io/|Element]]. Puedes [[https://element.io/get-started|descargar]] Element para escritorio. Las aplicaciones para Android e iOS están disponibles en sus tiendas (''app stores'') respectivas. + +=== Configurar Matrix Synapse en tu FreedomBox === + +Para habilitar Matrix, primero navega a la página de tu servidor de chat (Matrix Synapse) e instálalo. Matrix necesita un nombre de dominio válido configurado. Tras la instalación, se te pedirá que lo configures seleccionandolo de entre un menú desplegable con dominios disponibles. Los dominios se configuran en la página Sistema -> Configuración y '''actualmente no podrás cambiar el dominio''' una vez esté configurado. Tras configurar un dominio verás que el servicio se está ejecutando. El servicio estará accesible en el dominio de !FreedomBox configurado. + +Tendrás que configurar tu router para que reenvíe el puerto 8448 a tu !FreedomBox. + +Todos los usuarios registrados en tu !FreedomBox tendrán sus IDs Matrix `@usuario:dominio`. Si está habilitado el registro público tu cliente se puede usar también para registrar una cuenta de usuario nueva. + +=== Federarse con otras instancias Matrix === + +Podrás interactuar con cualquier otra persona que ejecute otra instancia de Matrix. Esto se hace simplemente iniciando una conversación con ellos usando su matrix ID que seguirá el formato `@su-usuario:su-dominio`. También podrás unirte a salas de otros servidores y tener llamadas de audio/video con contactos de otros servidores. + +=== Uso de Memoria === +El servidor de referencia Synapse implementado en Python es conocido por consumir mucha RAM, especialmente al cargar salones grandes con miles de participantes como #matrix:matrix.org. Se recomienda evitar unirse a estos salones si tu dispositivo !FreedomBox solo tiene 1 GiB RAM o menos. Debería ser seguro unirse a salas con hasta 100 participantes. El equipo de Matrix está trabajando en una implementación de servidor Matrix escrita en Go llamada ''Dendrite'' que debería tener mejor rendimiento en entornos con poca memoria. + +Algunos salones públicos muy grandes de la red Matrix están también disponibles como canales IRC (p.ej. #freedombox:matrix.org está disponible también como #freedombox en irc.debian.org). Es mejor usar IRC en vez de Matrix para estos salones tán grandes. Puedes unirte a los canales de IRC usando [[FreedomBox/Manual/Quassel|Quassel]]. + +=== Uso Avanzado === + + 1. Si quieres crear una gran cantidad de usuarios en tu servidor de Matrix Synapse usa los siguientes comandos en una shell remota como usuario root: + {{{ +cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1 | sed "s+^+registration_shared_secret: +" > /etc/matrix-synapse/conf.d/registration_shared_secret.yaml +chmod 600 /etc/matrix-synapse/conf.d/registration_shared_secret.yaml +chown matrix-synapse:nogroup /etc/matrix-synapse/conf.d/registration_shared_secret.yaml +systemctl restart matrix-synapse +register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml +}}} + 1. Si quieres ver la lista de usuarios registrados en Matrix Syanpse haz lo siguiente como usuario root: + {{{ +apt install sqlite3 +echo 'select name from users' | sqlite3 /var/lib/matrix-synapse/homeserver.db +}}} + 1. Para crear una comunidad en Matrix Synapse se necesita un usuario Matrix con privilegios de admin en el servidor. Para dárselos a `miusuario` ejecuta los siguientes comandos como usuario root: + {{{ +sudo apt install sqlite3 +echo "UPDATE users SET admin=1 WHERE name='@miusuario:dominio'" | sudo sqlite3 /var/lib/matrix-synapse/homeserver.db +}}} + +=== Redirección de Puertos === + +Si tu !FreedomBox está detrás de un router, necesitarás configurar la redirección de los siguientes puertos para Matrix: + * UDP 3478 + * TCP 3478 + * UDP 3479 + * TCP 3479 + * UDP 5349 + * TCP 5349 + * UDP 5350 + * TCP 5350 + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/MatrixSynapse.raw.xml b/doc/manual/es/MatrixSynapse.raw.xml deleted file mode 100644 index f671ff51c..000000000 --- a/doc/manual/es/MatrixSynapse.raw.xml +++ /dev/null @@ -1,7 +0,0 @@ -
es/FreedomBox/Manual/MatrixSynapse102020-05-30 19:37:48SunilMohanAdapaUpdate the title to emphasize app name over its generic name92020-05-24 06:37:15fioddorSe alinea con la versión 18 en inglés del 23 de mayo de 202082020-03-25 19:19:30fioddorSe alinea con la versión 17 en inglés del 21 de marzo de 202072020-01-03 12:50:08fioddorSe alinea con la versión 15 en inglés de hoy62019-09-26 06:27:14fioddorSe actualiza a la versión inglesa 11 del 25 de septiembre de 2019.52019-09-11 08:05:05fioddorCorrecciones menores.42019-09-11 07:28:27fioddorSe crea la versión española.32019-09-11 07:20:22fioddorSe crea la versión española (traducción incompleta).22019-09-11 07:19:53fioddor12019-09-11 07:18:36fioddorSe crea la versión española (traducción incompleta).
Matrix Synapse (Servidor de Mensajería Instantánea (chat))
¿Qué es Matrix?Matrix es un estándar abierto para comunicaciones sobre IP en tiempo real interoperables y descentralizadas. Synapse es la implementación de referencia de un servidor Matrix. Se puede usar para montar mensajería instantánea sobre FreedomBox para albergar grandes salones de chat, comunicaciones cifradas punto a punto y llamadas de audio/vídeo. Matrix Synapse es una aplicación federada en la que puede haber salas de chat en un servidor y los usuarios de cualquier otro servidor de la red federada pueden unirse a ellas. Más información acerca de Matrix. Disponible desde: versión 0.14.0
¿Cómo acceder a tu servidor Matrix Synapse?Para acceder al servidor Matrix Synapse recomendamos el cliente Riot. Puedes descargar Riot para escritorio. Las aplicaciones para Android e iOS están disponibles en sus tiendas (app stores) respectivas.
Configurar Matrix Synapse en tu FreedomBoxPara habilitar Matrix, primero navega a la página de tu servidor de chat (Matrix Synapse) e instálalo. Matrix necesita un nombre de dominio válido configurado. Tras la instalación, se te pedirá que lo configures seleccionandolo de entre un menú desplegable con dominios disponibles. Los dominios se configuran en la página Sistema -> Configuración y actualmente no podrás cambiar el dominio una vez esté configurado. Tras configurar un dominio verás que el servicio se está ejecutando. El servicio estará accesible en el dominio de FreedomBox configurado. Tendrás que configurar tu router para que reenvíe el puerto 8448 a tu FreedomBox. Todos los usuarios registrados en tu FreedomBox tendrán sus IDs Matrix @usuario:dominio. Si está habilitado el registro público tu cliente se puede usar también para registrar una cuenta de usuario nueva.
Federarse con otras instancias MatrixPodrás interactuar con cualquier otra persona que ejecute otra instancia de Matrix. Esto se hace simplemente iniciando una conversación con ellos usando su matrix ID que seguirá el formato @su-usuario:su-dominio. También podrás unirte a salas de otros servidores y tener llamadas de audio/video con contactos de otros servidores.
Uso de MemoriaEl servidor de referencia Synapse implementado en Python es conocido por consumir mucha RAM, especialmente al cargar salones grandes con miles de participantes como #matrix:matrix.org. Se recomienda evitar unirse a estos salones si tu dispositivo FreedomBox solo tiene 1 GiB RAM o menos. Debería ser seguro unirse a salas con hasta 100 participantes. El equipo de Matrix está trabajando en una implementación de servidor Matrix escrita en Go llamada Dendrite que debería tener mejor rendimiento en entornos con poca memoria. Algunos salones públicos muy grandes de la red Matrix están también disponibles como canales IRC (p.ej. #freedombox:matrix.org está disponible también como #freedombox en irc.debian.org). Es mejor usar IRC en vez de Matrix para estos salones tán grandes. Puedes unirte a los canales de IRC usando Quassel.
Uso AvanzadoSi quieres crear una gran cantidad de usuarios en tu servidor de Matrix Synapse usa los siguientes comandos en una shell remota como usuario root: /etc/matrix-synapse/conf.d/registration_shared_secret.yaml -chmod 600 /etc/matrix-synapse/conf.d/registration_shared_secret.yaml -chown matrix-synapse:nogroup /etc/matrix-synapse/conf.d/registration_shared_secret.yaml -systemctl restart matrix-synapse -register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml]]>Si quieres ver la lista de usuarios registrados en Matrix Syanpse haz lo siguiente como usuario root: Para crear una comunidad en Matrix Synapse se necesita un usuario Matrix con privilegios de admin en el servidor. Para dárselos a miusuario ejecuta los siguientes comandos como usuario root: Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/MediaWiki.raw.wiki b/doc/manual/es/MediaWiki.raw.wiki new file mode 100644 index 000000000..5883a12ab --- /dev/null +++ b/doc/manual/es/MediaWiki.raw.wiki @@ -0,0 +1,83 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/MediaWiki|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== MediaWiki (Wiki) == + +|| {{attachment:FreedomBox/Manual/MediaWiki/MediaWiki-icon_en_V01.png|icono de MediaWiki}} || + +'''Disponible desde:''' versión 0.20.0 + +=== Acerca de MediaWiki === + +[[es/MediaWiki|MediaWiki]] es el software de base de la gama de wikis Wikimedia. + +Lee más acerca de !MediaWiki en [[https://en.wikipedia.org/wiki/MediaWiki|Wikipedia]] + +=== MediaWiki en FreedomBox === + +!MediaWiki viene configurado en !FreedomBox para ser públicamente legible y editable en privado. Sólo los usuarios ingresados pueden editar el wiki. Esta configuración evita publicidad indeseada (''spam'') y otros vandalismos en tu wiki. + +==== Administración de Usuarios ==== + +Solo el administrador de !MediaWiki (usuario "admin") puede crear los usuarios. El usuario "admin" puede usarse también para restablecer contraseñas de usuarios !MediaWiki. Si se olvida la contraseña del administrador se puede restablecer desde la página de !MediaWiki del interfaz web de !FreedomBox. + +==== Casos de uso ==== + +!MediaWiki es muy versátil y se puede emplear para muchos usos creativos. También es áltamente adaptable y viene con un montón de extensiones (''plugins'') y estilos estéticos. + +===== Repositorio Personal de Conocimiento ===== + +El !MediaWiki de !FreedomBox puede ser tu propio repositorio de conocimiento personal. Como !MediaWiki tiene buen soporte multimedia puedes escribir notas, almacenar imágenes, crear listas de comprobación, guardar referencias y enlaces, etc. de manera organizada. Puedes almacenar el conocimiento de una vida en tu instancia de !MediaWiki. + +===== Wiki Comunitario ===== + +Una comunidad de usuarios podría usar !MediaWiki como su repositorio común de conocimiento y material de referencia. Se puede emplear como un tablón de anunciós de universidad, como un servidor de documentación para una pequeña empresa, como un bloc de notas para grupos de estudio o como un wiki de fans al estilo de wikia. + +===== Sitio Web Personal implementado mediante un Wiki ===== + +[[https://www.mediawiki.org/wiki/Sites_using_MediaWiki/en|Varios sitios web]] de internet son sólo instancias de !MediaWiki. El !MediaWiki de !FreedomBox es de solo lectura para visitantes. Se puede por tanto adaptar para servir como tu sitio web y/o blog personal. El contenido de !MediaWiki es fácil de exportar y puede moverse después a otro motor de blogs. + + +==== Editar Contenido del Wiki ==== + +!FreedomBox monta !MediaWiki con un editor básico con una barra de herramientas con opciones de uso habitual como negrita, cursiva etc. Haz clic en la sección ''Avanzadas'' para acceder a más opciones como cabaceras, listas con viñetas, etc. + +{{attachment:mediawiki-toolbar.png}} + +===== Editor Visual ===== + +Como su nombre indica, el nuevo ''Editor Visual'' de !MediaWiki ofrece un interfaz de usuario visual (''WYSIWYG'') para crear páginas del wiki. Pero esta funcionalidad está todavía en pruebas y !MediaWiki no la trae de serie. Una solución temporal posible sería escribir tu contenido con el Editor Visual del [[https://en.wikipedia.org/wiki/Wikipedia:Sandbox|borrador de Wikipedia]], cambiar el modo de edición a texto y copiarlo a tu wiki. + +===== Otros Formatos ===== + +No es imprescindible que aprendas el lenguaje de formateo de !MediaWiki. Puedes escribir en tu formato favorito (Markdown, Org-mode, LaTeX etc.) y convertirlo al formato de !MediaWiki usando [[https://pandoc.org/try/|Pandoc]]. + +===== Cargar Imágenes ===== + +Se puede habilitar la carga de imágenes desde !FreedomBox versión 0.36.0. También puedes usar directamente imágenes de Wikimedia Commons mediante una funcionalidad llamada [[https://www.mediawiki.org/wiki/InstantCommons|Instant Commons]]. + +==== Personalización ==== + +===== Temas de estilo ===== + +El tema por defecto de !MediaWiki suele ser ''Vector''. El de !FreedomBox es ''Timeless''. + +Vector es un tema optimizado para visualizarlo en pantallas grandes pero no se adecúa bien a los tamaños de pantalla de los móviles. Wikimedia usa otro sitio específico para móviles. Para instalaciones pequeñas como las de !FreedomBox no merece la pena un segundo sitio dedicado. Usar un tema de estilo más polivalente como ''Timeless'' es una solución más eficiente al problema. + +Los administradores pueden elegir el tema por defecto desde la configuración de la app. Los usuarios del sitio tienen también la opción de visualizarlo con temas diferentes. + + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/MediaWiki.raw.xml b/doc/manual/es/MediaWiki.raw.xml deleted file mode 100644 index bfcc68bf4..000000000 --- a/doc/manual/es/MediaWiki.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/MediaWiki122020-05-30 19:38:23SunilMohanAdapaUpdate the title to emphasize app name over its generic name112020-05-24 07:15:06fioddorSe alinea con la versión 15 en inglés del 23 de mayo de 2020102020-04-13 16:22:33fioddorSe alinea con la versión 14 en inglés del 12 de abril de 202092020-01-29 06:38:07fioddorSe alinea con la versión 13 en inglés del 24 de enero de 202082020-01-21 08:10:38fioddorSe alinea con la versión 11 en inglés del 21 de enero de 202072020-01-21 08:07:02fioddorSe alinea con la versión 10 en inglés del 18 de enero de 202062019-10-14 08:01:12fioddorEnlace a nueva página traducida.52019-10-11 00:38:07SunilMohanAdapaRemove formatting on link to MediaWiki page that is causing issues with PDF conversion42019-09-17 11:26:11fioddorMejora menor32019-09-17 11:24:09fioddorCorrección menor22019-09-17 11:22:32fioddorMejora menor12019-09-17 11:21:21fioddorSe crea la versión española.
MediaWiki (Wiki)
Acerca de MediaWikiMediaWiki es el software de base de la gama de wikis Wikimedia. Lee más acerca de MediaWiki en Wikipedia Disponible desde: versión 0.20.0
MediaWiki en FreedomBoxMediaWiki viene configurado en FreedomBox para ser públicamente legible y editable en privado. Sólo los usuarios ingresados pueden editar el wiki. Esta configuración evita publicidad indeseada (spam) y otros vandalismos en tu wiki.
Administración de UsuariosSolo el administrador de MediaWiki (usuario "admin") puede crear los usuarios. El usuario "admin" puede usarse también para restablecer contraseñas de usuarios MediaWiki. Si se olvida la contraseña del administrador se puede restablecer desde la página de MediaWiki del interfaz web de FreedomBox.
Casos de usoMediaWiki es muy versátil y se puede emplear para muchos usos creativos. También es áltamente adaptable y viene con un montón de extensiones (plugins) y estilos estéticos.
Repositorio Personal de ConocimientoEl MediaWiki de FreedomBox puede ser tu propio repositorio de conocimiento personal. Como MediaWiki tiene buen soporte multimedia puedes escribir notas, almacenar imágenes, crear listas de comprobación, guardar referencias y enlaces, etc. de manera organizada. Puedes almacenar el conocimiento de una vida en tu instancia de MediaWiki.
Wiki ComunitarioUna comunidad de usuarios podría usar MediaWiki como su repositorio común de conocimiento y material de referencia. Se puede emplear como un tablón de anunciós de universidad, como un servidor de documentación para una pequeña empresa, como un bloc de notas para grupos de estudio o como un wiki de fans al estilo de wikia.
Sitio Web Personal implementado mediante un WikiVarios sitios web de internet son sólo instancias de MediaWiki. El MediaWiki de FreedomBox es de solo lectura para visitantes. Se puede por tanto adaptar para servir como tu sitio web y/o blog personal. El contenido de MediaWiki es fácil de exportar y puede moverse después a otro motor de blogs.
Editar Contenido del WikiFreedomBox monta MediaWiki con un editor básico con una barra de herramientas con opciones de uso habitual como negrita, cursiva etc. Haz clic en la sección Avanzadas para acceder a más opciones como cabaceras, listas con viñetas, etc. mediawiki-toolbar.png
Editor VisualComo su nombre indica, el nuevo Editor Visual de MediaWiki ofrece un interfaz de usuario visual (WYSIWYG) para crear páginas del wiki. Pero esta funcionalidad está todavía en pruebas y MediaWiki no la trae de serie. Una solución temporal posible sería escribir tu contenido con el Editor Visual del borrador de Wikipedia, cambiar el modo de edición a texto y copiarlo a tu wiki.
Otros FormatosNo es imprescindible que aprendas el lenguaje de formateo de MediaWiki. Puedes escribir en tu formato favorito (Markdown, Org-mode, LaTeX etc.) y convertirlo al formato de MediaWiki usando Pandoc.
Cargar ImágenesSe puede habilitar la carga de imágenes desde FreedomBox versión 0.36.0. También puedes usar directamente imágenes de Wikimedia Commons mediante una funcionalidad llamada Instant Commons.
Personalización
Temas de estiloEl tema por defecto de MediaWiki suele ser Vector. El de FreedomBox es Timeless. Vector es un tema optimizado para visualizarlo en pantallas grandes pero no se adecúa bien a los tamaños de pantalla de los móviles. Wikimedia usa otro sitio específico para móviles. Para instalaciones pequeñas como las de FreedomBox no merece la pena un segundo sitio dedicado. Usar un tema de estilo más polivalente como Timeless es una solución más eficiente al problema. Los administradores pueden elegir el tema por defecto desde la configuración de la app. Los usuarios del sitio tienen también la opción de visualizarlo con temas diferentes. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Minetest.raw.wiki b/doc/manual/es/Minetest.raw.wiki new file mode 100644 index 000000000..15fff15a6 --- /dev/null +++ b/doc/manual/es/Minetest.raw.wiki @@ -0,0 +1,29 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Minetest|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Minetest (Sandbox de bloques) == +|| {{attachment:FreedomBox/Manual/Minetest/Minetest-icon_en_V01.png|icono de Minetest}} || + +'''Disponible desde''': versión 0.9 + +''Minetest'' es un ''Block Sandbox'' multijugador para mundos infinitos. Este módulo permite ejecutar el servidor `Minetest` en esta !FreedomBox, en su puerto por defecto (30000). Para conectar al servidor se necesita un [[https://www.minetest.net/downloads/|cliente de Minetest]]. + +=== Enrutado de Puertos === + +Si tu !FreedomBox está detrás de un router necesitarás configurar la redirección de puertos en tu router para los siguientes puertos de Minetest: + * UDP 30000 + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Minetest.raw.xml b/doc/manual/es/Minetest.raw.xml deleted file mode 100644 index 7efd50e0b..000000000 --- a/doc/manual/es/Minetest.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Minetest52020-05-30 19:38:57SunilMohanAdapaUpdate the title to emphasize app name over its generic name, match with FreedomBox interface42020-05-24 06:30:24fioddorSe alinea con la versión 05 en inglés del 23 de mayo de 202032020-05-10 00:36:41fioddorSe alinea con la versión 04 en inglés del 03 de mayo de 202022019-09-04 09:50:46fioddorCorrección menor12019-09-04 09:50:27fioddorSe crea la versión española.
Minetest (Sandbox de bloques)Minetest es un Block Sandbox multijugador para mundos infinitos. Este módulo permite ejecutar el servidor Minetest en esta FreedomBox, en su puerto por defecto (30000). Para conectar al servidor se necesita un cliente de Minetest.
Enrutado de PuertosSi tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos en tu router para los siguientes puertos de Minetest: UDP 30000 Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/MiniDLNA.raw.wiki b/doc/manual/es/MiniDLNA.raw.wiki new file mode 100644 index 000000000..370250d28 --- /dev/null +++ b/doc/manual/es/MiniDLNA.raw.wiki @@ -0,0 +1,74 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/MiniDLNA|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== MiniDLNA (Servidor multimedia básico) == +|| {{attachment:FreedomBox/Manual/MiniDLNA/MiniDLNA-icon_en_V01.png|icono de MiniDLNA}} || + +'''Disponible desde''': versión 19.23 + +MiniDLNA es un servidor multimedia que intenta ser compatible con clientes DLNA/UPnP. + +Nota: Este servicio solo está disponible en redes configuradas como zona "interna". Tampoco está disponble a través de [[es/FreedomBox/Manual/OpenVPN|OpenVPN]] (es incompatible). + +=== ¿Qué es UPnP/DLNA? === + +UPnP (''Universal plug & play'') es un conjunto de protocolos de red que permite a los dispositivos de una red, como PCs, TVs, impresoras etc, reconocerse entre sí y establecer comunicación para compartir datos. Es un protocolo con cero configuración y require solo un servidor multimedia y un reproductor multimedia compatibles con el protocolo. + +DLNA se deriva de UPnP como una forma de estandarizar interoperabilidad entre medios. Conforma un estándar/certificación que cumplen muchos dispositivos electrónicos de consumo. + +=== Desplegando MiniDLNA en tu FreedomBox. === + +Para instalar/habilitar el servidor multimedia necesitas navegar a la página MiniDLNA y habilitarlo. Se intenta que la aplicación esté disponible en la red interna y por ello requiere asignarle un interfaz de red configurado para tráfico interno. + +Tras la instalación queda disponible una página web en https:///_minidlna. +Incluye información de cuántos ficheros detecta el servidor, cuántas conexiones existen etc. Esto resulta muy útil cuando conectas discos externos con contenido para para verificar que detecta los nuevos archivos como debe. Si no ocurre así, desconectar y activar el servidor lo arreglará. + +=== Usar MiniDLNA para reproducir contenidos multimedia en tus dispositivos === + +Cualquier dispositivo compatible con DLNA debiera ser capaz de detectar, hojear y reproducir automáticamente contenido multimedia de MiniDLNA en !FreedomBox. Los siguientes dispositivos y reproductores se han probado: + + * '''GNOME Videos''': Videos es el reproductor multimedia por defecto en el popular entorno de escritorio GNU/Linux GNOME. Abre Videos, cambia a 'Canales'. Deberías ver un canal denominado 'freedombox: minidlna'. Deberías poder hojear y reproducir su contenido. + * '''VLC media player''': VLC es un reproductor multimedia para GNU/Linux, Android, Windows y macOS muy popular. Abre VLC y haz clic en 'Ver -> Lista de reproducción'. En la barra lateral de la lista de reproducción que aparece selecciona 'Universal Plug'n'Play'. Deberías ver un elemento denominado 'freedombox: minidlna'. Deberías poder hojear y reproducir su contenido. + * '''Kodi''': Kodi es un software popular de centro multimedia con un interfaz de usuario diseñado para televisores. Abre Kodi, ve a 'Sistema -> Configuración del Servicio -> UPnP/DLNA' y 'Habilitar soporte UPnP'. Visita entonces 'Home -> Videos -> Archivos -> Añadir videos... -> Navegar -> dispositivos UPnP'. Deberías ver 'freedombox: minidlna'. Selecciónalo y elige 'OK'. Entonces, elige 'OK en el diálogo 'Anadir entrada de video'. A partir de ahora , deberías ver 'freedombox: minidlna' en la sección 'Videos -> Archivos'. Deberías poder hojear y reproducir su contenido. Para más información mira [[https://kodi.wiki/view/Settings/Services/UPnP_DLNA|la documentación de Kodi]]. + * '''Roku''': Roku es un aparato conectado a una TV para reproducir contenido de servicios de retransmisión por Internet. También hay muchas TVs que llevan a Roku integrado. Encuentra en el interfaz de Roku un canal denominado 'Roku Media Player' y ábrelo. Deberías ver un elemento denominado 'freedombox: minidlna'. Deberías poder hojear y reproducir su contenido. + * '''Rhythmbox''': Rhythmbox es el reproductor de sonido por defecto en el popular entorno de escritorio GNU/Linux GNOME. Abre Rhythmbox y asegura que el panel lateral esté abierto pulsando en 'Menú de Aplicación -> Ver -> Panel Lateral'. En el panel lateral deberías ver 'freedombox:minidlna' bajo la sección 'Compartidos'. Deberías poder hojear y reproducir sus archivos de sonido. Los archivos de video no aparecerán. + +=== Formatos multimedia soportados === + +MiniDLNA soporta una amplia variedad de formatos de archivo de video y sonido. + + * '''Video''': Archivos terminados en .avi, .mp4, .mkv, .mpg, .mpeg, .wmv, .m4v, .flv, .mov, .3gp, etc. + * '''Sonido''': Archivos terminados en .mp3, .ogg, .flac, .wav, .pcm, .wma, .fla, .aac, etc. + * '''Imágen''': Archivos terminados en .jpg, .jpeg + * '''Listas de Reproducción''': Archivos terminados enh .m3u, .pls + * '''Subtítulos''': Archivos terminados en .srt, .smi + +Obsérvese que '''no''' soporta archivos con las siguientes extensiones. Parece que renombrar el archivo a una extensión reconocida funciona el la mayoría de casos. + + * '''Video''': Archivos terminados en .webm + +Además del soporte al formato de archivo por parte de MiniDLNA, tu dispositivo o reproductor de medios necesita soportar el codec de sonido/video con el que se haya codificado tu contenido. MiniDLNA carece de la habilidad de traducir archivos a un codec compatible con el reproductor. Si te topas con problemas en la reproducción de contenido, usa VLC para identificar el codec empleado en el contenido y comprueba en la documentación de tu dispositivo o reproductor de medios si lo soporta. + +=== Sistemas de archivo para discos externos. === + +Al usar un disco externo que se usa también desde sistemas Windows el mejor formato para el sistema de archivos es NTFS. NTFS conservará los permisos de acceso de Linux y la codificación UTF-8 para los nombres de fichero. Esto es útil si los nombres de archivos tienen tildes, eñes u otros signos raros. + +=== Enlaces externos === + + * http://minidlna.sourceforge.net (en) + * https://es.wikipedia.org/wiki/Digital_Living_Network_Alliance + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/MiniDLNA.raw.xml b/doc/manual/es/MiniDLNA.raw.xml deleted file mode 100644 index 88a527638..000000000 --- a/doc/manual/es/MiniDLNA.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/MiniDLNA62020-05-30 19:39:39SunilMohanAdapaUpdate the title to emphasize app name over its generic name, match with FreedomBox interface52020-05-28 20:42:49fioddorSe alinea con la versión 07 en inglés del 27 de mayo de 202042020-05-26 13:29:06fioddorMejora menor. Algo más claro.32020-05-26 13:26:16fioddorSe alinea con la versión 04 en inglés del 26 de mayo de 202022020-05-24 06:59:45fioddorSe alinea con la versión 03 en inglés del 23 de mayo de 202012019-12-25 21:05:55fioddorSe traduce una página nueva
MiniDLNA (Servidor multimedia básico)MiniDLNA es un servidor multimedia que intenta ser compatible con clientes DLNA/UPnP. Nota: Este servicio solo está disponible en redes configuradas como zona "interna". Tampoco está disponble a través de OpenVPN (es incompatible).
¿Qué es UPnP/DLNA?UPnP (Universal plug & play) es un conjunto de protocolos de red que permite a los dispositivos de una red, como PCs, TVs, impresoras etc, reconocerse entre sí y establecer comunicación para compartir datos. Es un protocolo con cero configuración y require solo un servidor multimedia y un reproductor multimedia compatibles con el protocolo. DLNA se deriva de UPnP como una forma de estandarizar interoperabilidad entre medios. Conforma un estándar/certificación que cumplen muchos dispositivos electrónicos de consumo.
Desplegando MiniDLNA en tu FreedomBox.Para instalar/habilitar el servidor multimedia necesitas navegar a la página MiniDLNA y habilitarlo. Se intenta que la aplicación esté disponible en la red interna y por ello requiere asignarle un interfaz de red configurado para tráfico interno. Tras la instalación queda disponible una página web en . Incluye información de cuántos ficheros detecta el servidor, cuántas conexiones existen etc. Esto resulta muy útil cuando conectas discos externos con contenido para para verificar que detecta los nuevos archivos como debe. Si no ocurre así, desconectar y activar el servidor lo arreglará.
Usar MiniDLNA para reproducir contenidos multimedia en tus dispositivosCualquier dispositivo compatible con DLNA debiera ser capaz de detectar, hojear y reproducir automáticamente contenido multimedia de MiniDLNA en FreedomBox. Los siguientes dispositivos y reproductores se han probado: GNOME Videos: Videos es el reproductor multimedia por defecto en el popular entorno de escritorio GNU/Linux GNOME. Abre Videos, cambia a 'Canales'. Deberías ver un canal denominado 'freedombox: minidlna'. Deberías poder hojear y reproducir su contenido. VLC media player: VLC es un reproductor multimedia para GNU/Linux, Android, Windows y macOS muy popular. Abre VLC y haz clic en 'Ver -> Lista de reproducción'. En la barra lateral de la lista de reproducción que aparece selecciona 'Universal Plug'n'Play'. Deberías ver un elemento denominado 'freedombox: minidlna'. Deberías poder hojear y reproducir su contenido. Kodi: Kodi es un software popular de centro multimedia con un interfaz de usuario diseñado para televisores. Abre Kodi, ve a 'Sistema -> Configuración del Servicio -> UPnP/DLNA' y 'Habilitar soporte UPnP'. Visita entonces 'Home -> Videos -> Archivos -> Añadir videos... -> Navegar -> dispositivos UPnP'. Deberías ver 'freedombox: minidlna'. Selecciónalo y elige 'OK'. Entonces, elige 'OK en el diálogo 'Anadir entrada de video'. A partir de ahora , deberías ver 'freedombox: minidlna' en la sección 'Videos -> Archivos'. Deberías poder hojear y reproducir su contenido. Para más información mira la documentación de Kodi. Roku: Roku es un aparato conectado a una TV para reproducir contenido de servicios de retransmisión por Internet. También hay muchas TVs que llevan a Roku integrado. Encuentra en el interfaz de Roku un canal denominado 'Roku Media Player' y ábrelo. Deberías ver un elemento denominado 'freedombox: minidlna'. Deberías poder hojear y reproducir su contenido. Rhythmbox: Rhythmbox es el reproductor de sonido por defecto en el popular entorno de escritorio GNU/Linux GNOME. Abre Rhythmbox y asegura que el panel lateral esté abierto pulsando en 'Menú de Aplicación -> Ver -> Panel Lateral'. En el panel lateral deberías ver 'freedombox:minidlna' bajo la sección 'Compartidos'. Deberías poder hojear y reproducir sus archivos de sonido. Los archivos de video no aparecerán.
Formatos multimedia soportadosMiniDLNA soporta una amplia variedad de formatos de archivo de video y sonido. Video: Archivos terminados en .avi, .mp4, .mkv, .mpg, .mpeg, .wmv, .m4v, .flv, .mov, .3gp, etc. Sonido: Archivos terminados en .mp3, .ogg, .flac, .wav, .pcm, .wma, .fla, .aac, etc. Imágen: Archivos terminados en .jpg, .jpeg Listas de Reproducción: Archivos terminados enh .m3u, .pls Subtítulos: Archivos terminados en .srt, .smi Obsérvese que no soporta archivos con las siguientes extensiones. Parece que renombrar el archivo a una extensión reconocida funciona el la mayoría de casos. Video: Archivos terminados en .webm Además del soporte al formato de archivo por parte de MiniDLNA, tu dispositivo o reproductor de medios necesita soportar el codec de sonido/video con el que se haya codificado tu contenido. MiniDLNA carece de la habilidad de traducir archivos a un codec compatible con el reproductor. Si te topas con problemas en la reproducción de contenido, usa VLC para identificar el codec empleado en el contenido y comprueba en la documentación de tu dispositivo o reproductor de medios si lo soporta.
Sistemas de archivo para discos externos.Al usar un disco externo que se usa también desde sistemas Windows el mejor formato para el sistema de archivos es NTFS. NTFS conservará los permisos de acceso de Linux y la codificación UTF-8 para los nombres de fichero. Esto es útil si los nombres de archivos tienen tildes, eñes u otros signos raros.
Enlaces externos (en) Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Monkeysphere.raw.wiki b/doc/manual/es/Monkeysphere.raw.wiki new file mode 100644 index 000000000..5dc0ee85b --- /dev/null +++ b/doc/manual/es/Monkeysphere.raw.wiki @@ -0,0 +1,24 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Monkeysphere|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Monkeysphere == + +Con Monkeysphere se puede generar una clave ''OpenPGP'' para cada dominio configurado para servir SSH. La clave pública OpenPGP se puede subir entonces a los servidores de claves OpenPGP. Los usuarios que se conecten mediante SSH podrán verificar que se están conectando a la máquina correcta. Para que los usuarios puedan confiar en la clave alguien (generalmente el dueño de la máquina) tiene que firmarla siguiendo el proceso normal de firmado de claves OpenPGP. Para más detalles, ver la [[http://web.monkeysphere.info/getting-started-ssh/|documentación de Monkeysphere SSH]]. + +Monkeysphere también puede generar una clave OpenPGP para cada certificado de servidor web seguro (HTTPS) instalado en esta máquina. La clave pública OpenPGP se puede subir entonces a los servidores de claves OpenPGP. Los usuarios que se conecten mediante HTTPS podrán verificar que se están conectando a la máquina correcta. Para validar el certificado el usuario deberá instalar cierto software disponible en el [[https://web.monkeysphere.info/download/|sitio web de Monkeysphere]]. + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Monkeysphere.raw.xml b/doc/manual/es/Monkeysphere.raw.xml deleted file mode 100644 index 3acbdea16..000000000 --- a/doc/manual/es/Monkeysphere.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Monkeysphere22020-04-04 17:28:08fioddorCorrección.12019-08-23 10:48:17fioddorSe crea la versión española.
MonkeysphereCon Monkeysphere se puede generar una clave OpenPGP para cada dominio configurado para servir SSH. La clave pública OpenPGP se puede subir entonces a los servidores de claves OpenPGP. Los usuarios que se conecten mediante SSH podrán verificar que se están conectando a la máquina correcta. Para que los usuarios puedan confiar en la clave alguien (generalmente el dueño de la máquina) tiene que firmarla siguiendo el proceso normal de firmado de claves OpenPGP. Para más detalles, ver la documentación de Monkeysphere SSH. Monkeysphere también puede generar una clave OpenPGP para cada certificado de servidor web seguro (HTTPS) instalado en esta máquina. La clave pública OpenPGP se puede subir entonces a los servidores de claves OpenPGP. Los usuarios que se conecten mediante HTTPS podrán verificar que se están conectando a la máquina correcta. Para validar el certificado el usuario deberá instalar cierto software disponible en el sitio web de Monkeysphere. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Mumble.raw.wiki b/doc/manual/es/Mumble.raw.wiki new file mode 100644 index 000000000..58c27371f --- /dev/null +++ b/doc/manual/es/Mumble.raw.wiki @@ -0,0 +1,56 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Mumble|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Servidor Mumble (Chat de voz) == +|| {{attachment:FreedomBox/Manual/Mumble/Mumble-icon_en_V01.png|Mumble icon}} || + +'''Disponible desde''': versión 0.5 + +=== ¿Qué es Mumble? === + +''Mumble'' es un software de conversaciones de voz. Principalmente diseñado para uso con juegos multijugador por red, sirve para hablar con alta calidad de audio, cancelación de ruido, comunicación cifrada, autenticación de interlocutores por defecto mediante par de claves pública/privada, y "asistentes" para configurar tu micrófono, por ejemplo. Se puede marcar a un usuario dentro de un canal como "interlocutor prioritario". + +=== Usar Mumble === + +!FreedomBox incluye el servidor Mumble. Para conectar con el servidor los usuarios pueden descargar algún cliente de entre los [[https://wiki.mumble.info/wiki/Main_Page|disponibles]] para plataformas de escritorio y móviles. + +=== Redirección de Puertos === + +Si tu !FreedomBox está detrás de un router necesitarás configurar la redirección de puertos de tu router. Deberías redirigir los siguientes puertos para Mumble: + * TCP 64738 + * UDP 64738 + +=== Administrar Permisos === + +En Mumble un superusuario puede crear cuentas de administrador que a su vez pueden administrar permisos a grupos y canales. Esto se puede hacer tras ingresar con el usuario "!SuperUser" y la contraseña de superusuario. Ver la [[https://wiki.mumble.info/wiki/Murmurguide|Guía de Mumble]] para obtener información respecto a cómo hacer esto. Actualmente !FreedomBox no ofrece una interfaz gráfica para obtener o establecer la contraseña de superusuario en Mumble. Se genera una contraseña de superusuario automáticamente durante la instalación de Mumble. Para obtenerla ingresa en el terminal como `admin` usando [[es/FreedomBox/Manual/Cockpit|Cockpit]] , la [[es/FreedomBox/Manual/SecureShell|Shell Segura]] o la consola. Y ejecuta el siguiente comando: + +{{{ +sudo grep SuperUser /var/log/mumble-server/mumble-server.log +}}} + +Deberás ver una salida como esta: +{{{ +2019-11-06 02:47:41.313 1 => Password for 'SuperUser' set to 'noo8Dahwiesh' +}}} + +O puedes establecer una contraseña nueva así: + +{{{ +sudo su - +echo "nuevacontraseña" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc/mumble-server.ini --readsupw" +}}} + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Mumble.raw.xml b/doc/manual/es/Mumble.raw.xml deleted file mode 100644 index b12ddfb0c..000000000 --- a/doc/manual/es/Mumble.raw.xml +++ /dev/null @@ -1,2 +0,0 @@ -
es/FreedomBox/Manual/Mumble52020-05-30 19:41:05SunilMohanAdapaUpdate the title to emphasize app name over its generic name, match with FreedomBox interface42020-05-24 07:11:26fioddorSe alinea con la versión 10 en inglés del 23 de mayo de 202032019-11-14 16:30:35fioddorCorrecciones menores22019-11-14 16:29:09fioddorSe alinea con la versión 09 del 07 de noviembre de 201912019-09-16 10:58:59fioddorSe crea la versión española.
Mumble (Chat de voz)
¿Qué es Mumble?Mumble es un software de conversaciones de voz. Principalmente diseñado para uso con juegos multijugador por red, sirve para hablar con alta calidad de audio, cancelación de ruido, comunicación cifrada, autenticación de interlocutores por defecto mediante par de claves pública/privada, y "asistentes" para configurar tu micrófono, por ejemplo. Se puede marcar a un usuario dentro de un canal como "interlocutor prioritario".
Usar MumbleFreedomBox incluye el servidor Mumble. Para conectar con el servidor los usuarios pueden descargar algún cliente de entre los disponibles para plataformas de escritorio y móviles.
Redirección de PuertosSi tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos de tu router. Deberías redirigir los siguientes puertos para Mumble: TCP 64738 UDP 64738
Administrar PermisosEn Mumble un supeusuario puede crear cuentas de administrador que a su vez pueden administrar permisos a grupos y canales. Esto se puede hacer tras ingresar con el usuario "SuperUser" y la contraseña de superusuario. Ver la Guía de Mumble para obtener información respecto a cómo hacer esto. Actualmente FreedomBox no ofrece una interfaz gráfica para obtener o establecer la contraseña de superusuario en Mumble. Se genera una contraseña de superusuario automáticamente durante la instalación de Mumble. Para obtenerla ingresa en el terminal como admin usando Cockpit , la Shell Segura o la consola. Y ejecuta el siguiente comando: Deberás ver una salida como esta: 2019-11-06 02:47:41.313 1 => Password for 'SuperUser' set to 'noo8Dahwiesh']]>O puedes establecer una contraseña nueva así: Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/NameServices.raw.wiki b/doc/manual/es/NameServices.raw.wiki new file mode 100644 index 000000000..8ebbaac80 --- /dev/null +++ b/doc/manual/es/NameServices.raw.wiki @@ -0,0 +1,21 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/NameServices|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Servicios de Nombre == + +Los Servicios de Nombre proporcionan una vista general a las formas de acceder desde la Internet pública a tu !Freedombox: nombre de dominio, servicio ''Tor Onion'' y cometa (''Pagekite''). Para cada tipo de nombre se indica si los servicios HTTP, HTTPS, y SSH están habilitados o deshabilitados para conexiones entrantes. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/NameServices.raw.xml b/doc/manual/es/NameServices.raw.xml deleted file mode 100644 index 9aaa6891c..000000000 --- a/doc/manual/es/NameServices.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/NameServices22019-11-14 18:09:00fioddorSe alinea con la versión 04 en inglés del 11 de noviembre de 201912019-06-20 15:23:22fioddorSe crea la versión española.
Servicios de NombreLos Servicios de Nombre proporcionan una vista general a las formas de acceder desde la Internet pública a tu !Freedombox: nombre de dominio, servicio Tor Onion y cometa (Pagekite). Para cada tipo de nombre se indica si los servicios HTTP, HTTPS, y SSH están habilitados o deshabilitados para conexiones entrantes. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Networks.raw.wiki b/doc/manual/es/Networks.raw.wiki new file mode 100644 index 000000000..bbc4938e2 --- /dev/null +++ b/doc/manual/es/Networks.raw.wiki @@ -0,0 +1,235 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Networks|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Redes == + +Esta sección describe como se configura por defecto la red en !FreedomBox y como se puede adaptar. Ver también la sección [[es/FreedomBox/Manual/Firewall|Cortafuegos]] para más información acerca de cómo funciona éste. + +=== Configuración por defecto === + +En una imágen fresca de !FreedomBox la red no está configurada. La configuración se realiza cuando la imágen se graba en una tarjeta SD y el +dispositivo arranca. Durante el primer arranque el paquete !FreedomBox `setup` detecta los interfaces (tarjetas) de red e intenta +configurarlos automáticamente de modo que la !FreedomBox quede disponible para seguir configurandola a través del interfaz web desde otra +máquina, sin necesidad de conectar un monitor a la !FreedomBox. La configuración automática también procura dejar la !FreedomBox operativa +para sus escenarios de uso más importantes. + +Trata 2 escenarios: + * cuando hay '''1 único''' interfaz (tarjeta) ''ethernet'' + * cuando hay '''múltiples''' interfaces (tarjetas) ''ethernet'' + +==== Interfaz (tarjeta) ethernet único ==== + +Cuando el dispositivo hardware solo tiene 1 único interfaz (tarjeta) ''ethernet'' hay poco margen para que haga de router. +En tal caso se asume que el dispositivo es solo una máquina más en la red. En consecuencia el único interfaz (tarjeta) disponible +se configura para ser un interfaz ''interno'' en modo de ''configuración automática''. Esto significa que se conecta a Internet +empleando la configuración provista por un router de la red y que hace todos sus servicios (internos y externos) accesibles a todos +los clientes que haya en esta red. + +{{attachment:network_single.png}} + +==== Múltiples interfaces (tarjetas) ethernet ==== + +Cuando el dispositivo hardware tiene múltiples interfaces (tarjetas) ethernet el dispositivo puede actuar como router. Entonces +los interfaces se configuran para ejecutar esta función. + + * El '''primer''' interfaz (tarjeta) de red se configura para ser una WAN o interfaz ''externo'' en modo de configuración ''automático''. Esto significa que se conecta a Internet empleando la configuración provista por el proveedor de servicio de internet (ISP). En este interfaz solo se expondrán los servicios concebidos para consumo desde Internet (servicios externos). Tu conexión a Internet tiene que llegar por el puerto de este interfaz (tarjeta) ''ethernet''. Si quieres que tu router de siempre siga administrando tu conexión por tí conecta un cable desde tu router al puerto de este interfaz. + + * Los '''demás''' interfaces de red se configuran como clientes de router, como LAN o interfaces ''internos'' en modo de configuración ''compartido''. Esto significa que todos sus servicios (internos y externos) se exponen a todos los clientes que entren desde esta red. ''Compartido'' implica además que los clientes podrán recibir detalles para conexión automática a la red. En concreto, la configuración DHCP y los servidores DNS se exponen en este interfaz. La conexión a Internet disponible para el dispositivo a través del primer interfaz se compartirá con los clientes que usen este interfaz. Todo esto implica que puedes conectar tus ordenadores a esta interfaz (tarjeta) de red y se configurarán automáticamente pudiendo acceder a Internet a través de tu !FreedomBox. + +Aunque el proceso de asignación es determinista actualmente no está muy claro qué interfaz será WAN (los demás serán LAN). +Así que averiguar cual es cual conllevará un poco de prueba y error. En el futuro esto estará bien documentado para cada +dispositivo. + + +==== Configuración de la Wi-Fi ==== + +Todos los interfaces Wi-Fi se configuran para ser LAN o interfaces ''internos'' en modo de configuración ''compartido''. También se configuran para ser puntos de acceso Wi-Fi con los siguientes datos: + + * El nombre de cada punto de acceso será `FreedomBox` más el nombre del interfaz (para tratar el caso de que haya varios). + * La contraseña para conectar a los interfaces será `freedombox123`. + +=== Compartición de la Conexión a Internet === + +Aunque la principal obligación de !FreedomBox es proporcionar servicios descentralizados también puede ejercer como router casero. Por tanto en la mayoría de los casos !FreedomBox se conecta a Internet y proporciona a otras máquinas de la red la posibilidad de usar esa conexión a Internet. !FreedomBox puede hacer esto de 2 formas: usando un modo de conexión ''compartido'' o empleando una conexión ''interna''. + +Cuando se configura un interfaz en modo ''compartido'' puedes conectarle tu máquina directamente, sea por cable desde este interfaz a tu máquina o conectando a través del punto de acceso Wi-Fi. Este caso es el más facil de usar porque !FreedomBox automáticamente proporciona a tu máquina la configuración de red necesaria. Tu máquina conectará automáticamente a la red proporcionada por !FreedomBox y podrá conectar a Internet ya que !FreedomBox puede a su vez conectarse a Internet. + +En ocasiones la configuración anterior podría no ser posible porque el dispositivo ''hardware'' tenga un único interfaz de red o por otros motivos. Incluso en este caso tu máquina puede todavía conectarse a Internet a través de la !FreedomBox. Para que esto funcione asegúrate de que el interfaz de red al que se está conectando tu máquina esté en modo ''interno''. Entonces conecta tu máquina a la red en la que está la !FreedomBox. Después de esto configura la red de tu máquina indicando como puerta de enlace la dirección IP de la !FreedomBox. !FreedomBox aceptará entonces el tráfico de red de tu maquina y lo enviará a Internet. Esto funciona porque los interfaces de red en modo ''interno'' están configurados para ''enmascarar'' hacia Internet los paquetes que lleguen desde máquinas locales, así como para recibir paquetes desde Internet y reenviarlos hacia las máquinas locales. + +=== Adaptaciones === + +La configuración por defecto anterior podría no servir para tu caso. Puedes adecuar la configuración para ajustarla a tus necesidades desde el área ''Redes'' de la sección ''Configuración'' del interfaz web de tu !FreedomBox. + +==== Conexiones PPPoE ==== + +Si tu ISP no proporciona configuración de red automática via DHCP y te obliga a conectar por PPPoE, para configurarlo elimina toda conexión de red existente en el interfaz y añade una de tipo PPPoE. Aquí, si procede, indica el usuario y la contraseña que te ha dado tu ISP y activa la conexión. + +==== Conectar a Internet mediante Wi-Fi ==== + +Por defecto durante el primer arranque los dispositivos Wi-Fi se configurarán como puntos de acceso. Sin embargo se pueden reconfigurar como dispositivos Wi-Fi normales para conectar a la red local o a un router WiFi existente. +Para hacer esto haz clic en la conexión Wi-Fi para editarla. Cambia el modo a ''Infraestructura'' en vez de ''Punto de Acceso'' y ''Método de direccionamiento IPv4'' a ''Automático (DHCP)'' en vez de ''Modo compartido''. +''SSID proporcionado'' significa el nombre de la red Wi-Fi a la que quieres conectar. Rellena la ''frase clave''. + +===== Problemas con la Funcionalidad de Privacidad ===== + +El gestor de red que emplea !FreedomBox para conectar con las redes Wi-Fi tienen una funcionalidad de privacidad que usa una identidad para buscar redes diferente de la que emplea para conectar con el punto de acceso Wi-Fi. Desafortunadamente esto causa [[https://askubuntu.com/questions/910185/rosewill-rnx-n600ube-connectivity-issue-on-ubuntu-17-04|problemas]] con algunos routers que rechazan estas conexiones. Tu conexión no se activará con éxito y se desconectará. Si tienes control sobre el comportamiento del router puedes desactivar esta funcionalidad. Si no la solución es desactivar la funcionalidad de privacidad: + +Entra a la !FreedomBox por [[es/FreedomBox/Manual/SecureShell|SSH]] o [[es/FreedomBox/Manual/Cockpit|Cockpit]]. + +Edita el fichero `/etc/NetworkManager/NetworkManager.conf`: +{{{ +$ sudo nano /etc/NetworkManager/NetworkManager.conf +}}} + +Añade la linea `wifi.scan-rand-mac-address=no` en la sección `[device]`: +{{{ +[device] +wifi.scan-rand-mac-address=no +}}} + +Luego reinicia la !FreedomBox. + +==== Añadir un nuevo dispositivo de red ==== + +Al añadir un nuevo dispositivo de red `network manager` lo configurará automáticamente. En la mayoría de los casos esto no funcionará. +Borra la configuración creada automáticamente en el interfaz y crea una conexión de red nueva. Selecciona tu interfaz recién creado en la página "añadir conexión". + + * Configura la zona del cortafuegos como corresponda. + * Puedes configurar los interfaces para conectar a la red o proporcionar configuración de red a cualquier máquina que se le conecte. + * De modo similar, si es un interfaz Wi-Fi puedes configurarlo para ser un punto de acceso Wi-FI o para conectarse a puntos de acceso existentes en la red. + +==== Configurar una red Mesh ==== + +!FreedomBox tiene un soporte rudimentario para participar en redes ''mesh'' basadas en ''BATMAN-Adv''. Es posible unirse a una red existe en tu zona o crear una red ''mesh'' nueva y compartir tu conexión a Internet con el resto de nodos que se unan a tu red. Tanto para unirte a una red ''mesh'' como para crear otra, actualmente hay que crear 2 conexiones y activarlas manualmente. + +===== Unirse a una red Mesh ===== + +Para unirse a una red ''mesh'' existente en tu zona primero consulta a sus organizadores y obtén información acerca de la red. + + 1. Crea una conexión nueva y selecciona el tipo de conexión ''Wi-Fi''. En el siguiente diálogo rellena los valores como se indica: + ||'''Nombre del campo'''||'''Valor de ejemplo'''||'''Explicación'''|| + || ''Nombre de la Conexión'' || Mesh Join - BATMAN || El nombre tiene que acabar en `BATMAN` (con mayúsculas). || + || ''Interfaz físico'' || wlan0 || El dispositivo Wi-Fi que quieres usar para conectar a la red ''mesh''. || + || ''Zona del cortafuegos'' || Externa || Ya que no quieres que los participantes en la red ''mesh'' usen dispositivos internos de tu !FreedomBox. || + || ''SSID'' || ch1.freifunk.net || Tal como te lo hayan dado los operadores de la red ''mesh''. Esta red debería mostrarse en ''Redes Wi-Fi accesibles''. || + || ''Modo'' || Ad-hoc || Porque esta red es una red de pares (''peer-to-peer''). || + || ''Banda de Frecuencia'' || 2.4Ghz || Tal como te lo hayan dado los operadores de la red ''mesh''. || + || ''Canal'' || 1 || Tal como te lo hayan dado los operadores de la red ''mesh''. || + || ''BSSID'' || 12:CA:FF:EE:BA:BE || Tal como te lo hayan dado los operadores de la red ''mesh''. || + || ''Autenticación'' || Abierta || Déjala abierta salvo que sepas que tu red ''mesh'' necesite otro valor. || + || ''Contraseña'' || || Déjala en blanco salvo que sepas el valor que necesite tu red ''mesh''. || + || ''Método de direccionamiento IPv4'' || Deshabilitado || Todavía no queremos pedir una configuración IP. || + + Graba la conexión y únete a la red ''mesh'' activándola. + + 1. Crea una segunda conexión nueva y selecciona el tipo ''Genérica''. En el siguiente diálogo rellena los valores como se indica: + ||'''Nombre del campo'''||'''Valor de ejemplo'''||'''Explicación'''|| + || ''Nombre de la Conexión'' || Mesh Connect || Cualquier nombre para identificar ésta conexión. || + || ''Interfaz físico'' || bat0 || Este interfaz solo aparecerá tras activar con éxito la conexión del paso anterior. || + || ''Zona del cortafuegos'' || Externa || Ya que no quieres que los participantes en la red ''mesh'' usen dispositivos internos de tu !FreedomBox. || + || ''Método de direccionamiento IPv4'' || Auto || Generalmente las redes ''mesh'' tienen un servidor DHCP en algún sitio que le proporciona una configuración IP a tu máquina. Si no, consulta al operador y configura la dirección IP como te diga por el método ''manual''. || + + Graba la conexión. Configura tu maquina para participar en la red activando esta conexión. Actualmente hay que activarla manualmente cada vez que quieras unirte a la red. En el futuro !FreedomBox lo hará automáticamente. + +Ahora debieras poder llegar a otros nodos de la red. También podrás conectar a Internet a través de la red ''mesh'' si los operadores han instalado algúna puerta de enlace. + +===== Crear una red Mesh ===== + +Para crear tu propia red ''mesh'' y compartir tu conexión a Internet con el resto de los nodos de la red: + + 1. Sigue las instrucciones del paso 1 de ''Unirse a una red Mesh'' empleando los valores válidos para tu red en ''SSID'' (un nombre para tu red Mesh), ''Banda de Frecuencia'' (generalmente 2.4Ghz), ''Canal'' (entre 1 y 11 para la banda de 2.4Ghz) y ''BSSID'' (una secuencia hexadecimal como 12:CA:DE:AD:BE:EF). Crea esta conexión y actívala. + 2. Sigue las instrucciones del paso 2 de ''Unirse a una red Mesh'' seleccionando ''Compartido'' para ''Método de direccionamiento IPv4d''. Esto proporcionará automáticamente una configuración IP a otros nodos de la red y compartirá la conexión a Internet de tu maquina (ya sea mediante un segudo interfaz Wi-Fi, Ethernet, etc.) con el otros nodos de la red ''mesh''. + +Corre la voz entre tus vecinos acerca de tu red ''mesh'' y pásales los parámetros que has empleado al crearla. Cuando otros nodos se conecten a esta red ''mesh'' tendrán que seguir las instrucciones del paso 1 de ''Unirse a una red Mesh'' empleando en ''SSID'', ''Banda de Frecuencia'' y ''Canal'' los valores que has elegido para tu red ''mesh'' al crearla. + +=== Operación avanzada de Red === + +Cockpit proporciona muchas funcionalidades de red más avanzadas que las de !FreedomBox. Ambos, !FreedomBox y Cockpit, operan sobre Network Manager y son por ello compatibles entre sí. Entre las funciones de Cockpit se incluyen: + + * Establer de la unidad máxima de transmisión (MTU) para una conexión de red. + * Cambiar de la dirección hardware (MAC) de un interfaz de red. + * Añadir más servidores DNS y configurar el enrutado de una conexión de red. + * Crear dispositivos coordinados para interfaces de red de alta disponibilidad. + * Crear dispositivos en puente para agregar redes diferentes en un mismo interfaz de red. + * Administrar VLAN para crear particiones virtuales en la red física. + +{{attachment:networks-cockpit.png}} + +=== Operación manual de Red === + +!FreedomBox configura redes automáticamente por defecto y proporciona un interfaz simplificado para personalizar la configuración a necesidades específicas. En la mayoría de los casos la operación manual no es necesaria. Los siguientes pasos describen cómo operar la configuración de red a mano en caso de que el interfaz de !FreedomBox le resulte insuficiente a un usuario para realizar una tarea o para diagnosticar un problema que !FreedomBox no identifique. + +En el interfaz de línea de comandos: + +Para acceder a un interfaz de configuración de conexiones de red basado en texto: + +{{{ +nmtui +}}} + +Para ver la lista de dispositivos de red disponibles: + +{{{ +nmcli device +}}} + +Para ver la lista de conexiones configuradas: + +{{{ +nmcli connection +}}} + +Para ver el estado actual de una conexión: + +{{{ +nmcli connection show '' +}}} + + +Para ver la zona asignada actualmente en el cortafuegos a un interfaz de red: + +{{{ +nmcli connection show '' | grep zone +}}} + +o + +{{{ +firewall-cmd --zone=internal --list-all +firewall-cmd --zone=external --list-all +}}} + +Para crear una conexión nueva: + +{{{ +nmcli con add con-name "" ifname "" type ethernet +nmcli con modify "" connection.autoconnect TRUE +nmcli con modify "" connection.zone internal +}}} + +Para cambiarle la zona a una conexión en el cortafuegos: + +{{{ +nmcli con modify "" connection.zone "" +}}} + +Para más información acerca del uso del comando `nmcli` mira su página man. +Para obtener una lista completa de configuraciones y tipos de conexión que acepta `Network Manager` mira: + +https://developer.gnome.org/NetworkManager/stable/ref-settings.html + +Para ver el estado actual del cortafuegos y operarlo manualmente lee la sección [[es/FreedomBox/Manual/Firewall|Cortafuegos]]. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Networks.raw.xml b/doc/manual/es/Networks.raw.xml deleted file mode 100644 index 317679b7e..000000000 --- a/doc/manual/es/Networks.raw.xml +++ /dev/null @@ -1,5 +0,0 @@ -
es/FreedomBox/Manual/Networks192020-06-01 23:34:30JamesValleroyadd TableOfContents182020-05-24 09:05:35fioddorCorrecciones menores172020-05-24 08:36:30fioddorSe alinea con la versión 12 en inglés del 24 de mayo de 2020162020-04-13 16:23:26fioddorSe alinea con la versión 10 en inglés del 12 de abril de 2020152020-04-04 17:43:48fioddorCorrección menor142020-04-04 17:41:35fioddorCorrección menor132020-04-04 17:40:01fioddorCorrección menor122020-04-04 17:33:37fioddorCorrección.112019-08-28 07:38:21fioddorCorrección menor102019-08-28 07:34:37fioddorCorrección menor92019-08-28 07:32:06fioddorCorrección menor82019-08-28 07:31:14fioddorSe incorpora la traducción de una sección nueva.72019-08-28 07:12:51fioddorSe incorpora la traducción de una sección nueva.62019-08-27 13:09:22fioddorCorrección menor52019-08-27 13:06:19fioddorSe incorpora la traducción de una sección nueva.42019-08-27 12:27:43fioddorSe incorpora la traducción de una sección nueva.32019-08-23 13:02:33fioddorSe incorpora la traducción de una sección nueva.22019-08-23 12:32:31fioddorSe incorpora la traducción de una sección nueva.12019-08-23 11:53:13fioddorSe crea la versión española (traducción incompleta).
RedesEsta sección describe como se configura por defecto la red en FreedomBox y como se puede adaptar. Ver también la sección Cortafuegos para más información acerca de cómo funciona éste.
Configuración por defectoEn una imágen fresca de FreedomBox la red no está configurada. La configuración se realiza cuando la imágen se graba en una tarjeta SD y el dispositivo arranca. Durante el primer arranque el paquete FreedomBox setup detecta los interfaces (tarjetas) de red e intenta configurarlos automáticamente de modo que la FreedomBox quede disponible para seguir configurandola a través del interfaz web desde otra máquina, sin necesidad de conectar un monitor a la FreedomBox. La configuración automática también procura dejar la FreedomBox operativa para sus escenarios de uso más importantes. Trata 2 escenarios: cuando hay 1 único interfaz (tarjeta) ethernet cuando hay múltiples interfaces (tarjetas) ethernet
Interfaz (tarjeta) ethernet únicoCuando el dispositivo hardware solo tiene 1 único interfaz (tarjeta) ethernet hay poco margen para que haga de router. En tal caso se asume que el dispositivo es solo una máquina más en la red. En consecuencia el único interfaz (tarjeta) disponible se configura para ser un interfaz interno en modo de configuración automática. Esto significa que se conecta a Internet empleando la configuración provista por un router de la red y que hace todos sus servicios (internos y externos) accesibles a todos los clientes que haya en esta red. network_single.png
Múltiples interfaces (tarjetas) ethernetCuando el dispositivo hardware tiene múltiples interfaces (tarjetas) ethernet el dispositivo puede actuar como router. Entonces los interfaces se configuran para ejecutar esta función. El primer interfaz (tarjeta) de red se configura para ser una WAN o interfaz externo en modo de configuración automático. Esto significa que se conecta a Internet empleando la configuración provista por el proveedor de servicio de internet (ISP). En este interfaz solo se expondrán los servicios concebidos para consumo desde Internet (servicios externos). Tu conexión a Internet tiene que llegar por el puerto de este interfaz (tarjeta) ethernet. Si quieres que tu router de siempre siga administrando tu conexión por tí conecta un cable desde tu router al puerto de este interfaz. Los demás interfaces de red se configuran como clientes de router, como LAN o interfaces internos en modo de configuración compartido. Esto significa que todos sus servicios (internos y externos) se exponen a todos los clientes que entren desde esta red. Compartido implica además que los clientes podrán recibir detalles para conexión automática a la red. En concreto, la configuración DHCP y los servidores DNS se exponen en este interfaz. La conexión a Internet disponible para el dispositivo a través del primer interfaz se compartirá con los clientes que usen este interfaz. Todo esto implica que puedes conectar tus ordenadores a esta interfaz (tarjeta) de red y se configurarán automáticamente pudiendo acceder a Internet a través de tu FreedomBox. Aunque el proceso de asignación es determinista actualmente no está muy claro qué interfaz será WAN (los demás serán LAN). Así que averiguar cual es cual conllevará un poco de prueba y error. En el futuro esto estará bien documentado para cada dispositivo.
Configuración de la Wi-FiTodos los interfaces Wi-Fi se configuran para ser LAN o interfaces internos en modo de configuración compartido. También se configuran para ser puntos de acceso Wi-Fi con los siguientes datos: El nombre de cada punto de acceso será FreedomBox más el nombre del interfaz (para tratar el caso de que haya varios). La contraseña para conectar a los interfaces será freedombox123.
Compartición de la Conexión a InternetAunque la principal obligación de FreedomBox es proporcionar servicios descentralizados también puede ejercer como router casero. Por tanto en la mayoría de los casos FreedomBox se conecta a Internet y proporciona a otras máquinas de la red la posibilidad de usar esa conexión a Internet. FreedomBox puede hacer esto de 2 formas: usando un modo de conexión compartido o empleando una conexión interna. Cuando se configura un interfaz en modo compartido puedes conectarle tu máquina directamente, sea por cable desde este interfaz a tu máquina o conectando a través del punto de acceso Wi-Fi. Este caso es el más facil de usar porque FreedomBox automáticamente proporciona a tu máquina la configuración de red necesaria. Tu máquina conectará automáticamente a la red proporcionada por FreedomBox y podrá conectar a Internet ya que FreedomBox puede a su vez conectarse a Internet. En ocasiones la configuración anterior podría no ser posible porque el dispositivo hardware tenga un único interfaz de red o por otros motivos. Incluso en este caso tu máquina puede todavía conectarse a Internet a través de la FreedomBox. Para que esto funcione asegúrate de que el interfaz de red al que se está conectando tu máquina esté en modo interno. Entonces conecta tu máquina a la red en la que está la FreedomBox. Después de esto configura la red de tu máquina indicando como puerta de enlace la dirección IP de la FreedomBox. FreedomBox aceptará entonces el tráfico de red de tu maquina y lo enviará a Internet. Esto funciona porque los interfaces de red en modo interno están configurados para enmascarar hacia Internet los paquetes que lleguen desde máquinas locales, así como para recibir paquetes desde Internet y reenviarlos hacia las máquinas locales.
AdaptacionesLa configuración por defecto anterior podría no servir para tu caso. Puedes adecuar la configuración para ajustarla a tus necesidades desde el área Redes de la sección Configuración del interfaz web de tu FreedomBox.
Conexiones PPPoESi tu ISP no proporciona configuración de red automática via DHCP y te obliga a conectar por PPPoE, para configurarlo elimina toda conexión de red existente en el interfaz y añade una de tipo PPPoE. Aquí, si procede, indica el usuario y la contraseña que te ha dado tu ISP y activa la conexión.
Conectar a Internet mediante Wi-FiPor defecto durante el primer arranque los dispositivos Wi-Fi se configurarán como puntos de acceso. Sin embargo se pueden reconfigurar como dispositivos Wi-Fi normales para conectar a la red local o a un router WiFi existente. Para hacer esto haz clic en la conexión Wi-Fi para editarla. Cambia el modo a Infraestructura en vez de Punto de Acceso y Método de direccionamiento IPv4 a Automático (DHCP) en vez de Modo compartido. SSID proporcionado significa el nombre de la red Wi-Fi a la que quieres conectar. Rellena la frase clave.
Problemas con la Funcionalidad de PrivacidadEl gestor de red que emplea FreedomBox para conectar con las redes Wi-Fi tienen una funcionalidad de privacidad que usa una identidad para buscar redes diferente de la que emplea para conectar con el punto de acceso Wi-Fi. Desafortunadamente esto causa problemas con algunos routers que rechazan estas conexiones. Tu conexión no se activará con éxito y se desconectará. Si tienes control sobre el comportamiento del router puedes desactivar esta funcionalidad. Si no la solución es desactivar la funcionalidad de privacidad: Entra a la FreedomBox por SSH o Cockpit. Edita el fichero /etc/NetworkManager/NetworkManager.conf: Añade la linea wifi.scan-rand-mac-address=no en la sección [device]: Luego reinicia la FreedomBox.
Añadir un nuevo dispositivo de redAl añadir un nuevo dispositivo de red network manager lo configurará automáticamente. En la mayoría de los casos esto no funcionará. Borra la configuración creada automáticamente en el interfaz y crea una conexión de red nueva. Selecciona tu interfaz recién creado en la página "añadir conexión". Configura la zona del cortafuegos como corresponda. Puedes configurar los interfaces para conectar a la red o proporcionar configuración de red a cualquier máquina que se le conecte. De modo similar, si es un interfaz Wi-Fi puedes configurarlo para ser un punto de acceso Wi-FI o para conectarse a puntos de acceso existentes en la red.
Configurar una red MeshFreedomBox tiene un soporte rudimentario para participar en redes mesh basadas en BATMAN-Adv. Es posible unirse a una red existe en tu zona o crear una red mesh nueva y compartir tu conexión a Internet con el resto de nodos que se unan a tu red. Tanto para unirte a una red mesh como para crear otra, actualmente hay que crear 2 conexiones y activarlas manualmente.
Unirse a una red MeshPara unirse a una red mesh existente en tu zona primero consulta a sus organizadores y obtén información acerca de la red. Crea una conexión nueva y selecciona el tipo de conexión Wi-Fi. En el siguiente diálogo rellena los valores como se indica: Nombre del campoValor de ejemploExplicación Nombre de la Conexión Mesh Join - BATMAN El nombre tiene que acabar en BATMAN (con mayúsculas). Interfaz físico wlan0 El dispositivo Wi-Fi que quieres usar para conectar a la red mesh. Zona del cortafuegos Externa Ya que no quieres que los participantes en la red mesh usen dispositivos internos de tu FreedomBox. SSID ch1.freifunk.net Tal como te lo hayan dado los operadores de la red mesh. Esta red debería mostrarse en Redes Wi-Fi accesibles. Modo Ad-hoc Porque esta red es una red de pares (peer-to-peer). Banda de Frecuencia 2.4Ghz Tal como te lo hayan dado los operadores de la red mesh. Canal 1 Tal como te lo hayan dado los operadores de la red mesh. BSSID 12:CA:FF:EE:BA:BE Tal como te lo hayan dado los operadores de la red mesh. Autenticación Abierta Déjala abierta salvo que sepas que tu red mesh necesite otro valor. Contraseña Déjala en blanco salvo que sepas el valor que necesite tu red mesh. Método de direccionamiento IPv4 Deshabilitado Todavía no queremos pedir una configuración IP. Graba la conexión y únete a la red mesh activándola. Crea una segunda conexión nueva y selecciona el tipo Genérica. En el siguiente diálogo rellena los valores como se indica: Nombre del campoValor de ejemploExplicación Nombre de la Conexión Mesh Connect Cualquier nombre para identificar ésta conexión. Interfaz físico bat0 Este interfaz solo aparecerá tras activar con éxito la conexión del paso anterior. Zona del cortafuegos Externa Ya que no quieres que los participantes en la red mesh usen dispositivos internos de tu FreedomBox. Método de direccionamiento IPv4 Auto Generalmente las redes mesh tienen un servidor DHCP en algún sitio que le proporciona una configuración IP a tu máquina. Si no, consulta al operador y configura la dirección IP como te diga por el método manual. Graba la conexión. Configura tu maquina para participar en la red activando esta conexión. Actualmente hay que activarla manualmente cada vez que quieras unirte a la red. En el futuro FreedomBox lo hará automáticamente. Ahora debieras poder llegar a otros nodos de la red. También podrás conectar a Internet a través de la red mesh si los operadores han instalado algúna puerta de enlace.
Crear una red MeshPara crear tu propia red mesh y compartir tu conexión a Internet con el resto de los nodos de la red: Sigue las instrucciones del paso 1 de Unirse a una red Mesh empleando los valores válidos para tu red en SSID (un nombre para tu red Mesh), Banda de Frecuencia (generalmente 2.4Ghz), Canal (entre 1 y 11 para la banda de 2.4Ghz) y BSSID (una secuencia hexadecimal como 12:CA:DE:AD:BE:EF). Crea esta conexión y actívala. Sigue las instrucciones del paso 2 de Unirse a una red Mesh seleccionando Compartido para Método de direccionamiento IPv4d. Esto proporcionará automáticamente una configuración IP a otros nodos de la red y compartirá la conexión a Internet de tu maquina (ya sea mediante un segudo interfaz Wi-Fi, Ethernet, etc.) con el otros nodos de la red mesh. Corre la voz entre tus vecinos acerca de tu red mesh y pásales los parámetros que has empleado al crearla. Cuando otros nodos se conecten a esta red mesh tendrán que seguir las instrucciones del paso 1 de Unirse a una red Mesh empleando en SSID, Banda de Frecuencia y Canal los valores que has elegido para tu red mesh al crearla.
Operación avanzada de RedCockpit proporciona muchas funcionalidades de red más avanzadas que las de FreedomBox. Ambos, FreedomBox y Cockpit, operan sobre Network Manager y son por ello compatibles entre sí. Entre las funciones de Cockpit se incluyen: Establer de la unidad máxima de transmisión (MTU) para una conexión de red. Cambiar de la dirección hardware (MAC) de un interfaz de red. Añadir más servidores DNS y configurar el enrutado de una conexión de red. Crear dispositivos coordinados para interfaces de red de alta disponibilidad. Crear dispositivos en puente para agregar redes diferentes en un mismo interfaz de red. Administrar VLAN para crear particiones virtuales en la red física. networks-cockpit.png
Operación manual de RedFreedomBox configura redes automáticamente por defecto y proporciona un interfaz simplificado para personalizar la configuración a necesidades específicas. En la mayoría de los casos la operación manual no es necesaria. Los siguientes pasos describen cómo operar la configuración de red a mano en caso de que el interfaz de FreedomBox le resulte insuficiente a un usuario para realizar una tarea o para diagnosticar un problema que FreedomBox no identifique. En el interfaz de línea de comandos: Para acceder a un interfaz de configuración de conexiones de red basado en texto: Para ver la lista de dispositivos de red disponibles: Para ver la lista de conexiones configuradas: Para ver el estado actual de una conexión: ']]>Para ver la zona asignada actualmente en el cortafuegos a un interfaz de red: ' | grep zone]]>o Para crear una conexión nueva: " ifname "" type ethernet -nmcli con modify "" connection.autoconnect TRUE -nmcli con modify "" connection.zone internal]]>Para cambiarle la zona a una conexión en el cortafuegos: " connection.zone ""]]>Para más información acerca del uso del comando nmcli mira su página man. Para obtener una lista completa de configuraciones y tipos de conexión que acepta Network Manager mira: Para ver el estado actual del cortafuegos y operarlo manualmente lee la sección Cortafuegos. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/OpenVPN.raw.wiki b/doc/manual/es/OpenVPN.raw.wiki new file mode 100644 index 000000000..d0d164e2f --- /dev/null +++ b/doc/manual/es/OpenVPN.raw.wiki @@ -0,0 +1,134 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/OpenVPN|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== OpenVPN (Red Privada Virtual) == +|| {{attachment:FreedomBox/Manual/OpenVPN/OpenVPN-icon_en_V01.png|icono de OpenVPN}} || + +'''Disponible desde''': versión 0.7 + +=== ¿Qué es OpenVPN? === + +''OpenVPN'' proporciona un servicio de red privada virtual a tu !FreedomBox. Puedes usar este software para acceso remoto, VPNs punto-a-punto y seguridad Wi-Fi. OpenVPN incluye soporte para direcciones IP dinámicas y NAT. + +=== Redirección de puertos === + +Si tu !FreedomBox está detrás de un router necesitarás configurar la redirección de puertos en tu router. Debes redirigir los siguientes puertos para OpenVPN: + * UDP 1194 + +=== Configurar === + + 1. En el menú de apps de !FreedomBox selecciona ''Red Privada Virtual (OpenVPN)'' y haz clic en Instalar. + + 1. Tras instalar el módulo todavía queda un paso de configuración que puede llevar largo tiempo completar. Haz clic en "Iniciar configuración" para empezar. + + {{attachment:plinth_openvpn.png|OpenVPN service page|width=800}} + + 1. Espera a que termine la configuración. Puede tardar un rato. + + 1. Una vez completada la configuración del servidor OpenVPN puedes descargar tu perfil. Esto descargará un archivo llamado `.ovpn`, siendo un usuario de !FreedomBox. Todos los usuarios de !FreedomBox podrán descargar un perfil propio y diferente. Los usuarios que no sean administradores pueden descargar el perfil desde la portada después de ingresar. + + 1. El archivo ovpn contiene toda la información que necesita un cliente vpn para conectar con un servidor. + + 1. El perfil descargado contiene el nombre de dominio de !FreedomBox al que debe conectarse el cliente. Este se obtiene del dominio configurado en la sección 'Configuración' de la página de 'Sistema'. En caso de que tu dominio no esté configurado adecuadamente quizá necesites cambiar este valor después de descargar el perfil. Si tu cliente OpenVPN lo permite puedes hacer esto después de importar el perfil OpenVPN. De lo contrario puedes editar el perfil .ovpn con un editor de texto y cambiar la línea 'remote' para que contenga la dirección IP WAN o el hostname de tu !FreedomBox como se indica aquí. + + {{{ +client +remote tu.freedombox.org 1194 +proto udp +}}} + +=== Navegar por Internet tras conectar a una VPN === + +Tras conectar a la VPN el dispositivo cliente podrá navegar por Internet sin más configuración adicional. No obstante una pre-condición para que esto funcione es que necesitas tener al menos 1 interfaz (tarjeta) de red conectado a Internet en la zona ''Externa'' del cortafuegos. Usa la página de configuración de redes para editar la zona del cortafuegos con los interfaces (tarjetas) de red del dispositivo. + +=== Uso === + +==== En Android/LineageOS ==== + + 1. Visita la página principal de !FreedomBox. Ingresa con tu cuenta de usuario. Desde la página principal descarga el perfil OpenVPN. El archivo se llamará `.ovpn`. + + {{attachment:openvpn_download_profile.png|OpenVPN Download Profile|width=324}} + + 1. Descarga un cliente OpenVPN como ''OpenVPN for Android''. Se recomienda el repositorio [[https://f-droid.org|F-Droid]]. En la app, selecciona ''Importar perfil''. + + {{attachment:openvpn_install_app.png|OpenVPN App|width=324}} + + 1. En el diálogo ''Seleccionar perfil'' elige el archivo `.opvn` que acabas de descargar. Pon un nombre a la conexión y graba el perfil. + + {{attachment:openvpn_import_profile.png|OpenVPN import profile|width=324}} + + 1. El perfil recién creado aparecera. Si hace falta edita el perfil y pon el nombre de dominio de tu !FreedomBox como dirección de servidor. + + {{attachment:openvpn_profile_created.png|OpenVPN profile created|width=324}} + + {{attachment:openvpn_edit_domain_name.png|OpenVPN edit domain name|width=324}} + + 1. Conecta haciendo clic sobre el perfil. + + {{attachment:openvpn_connect.png|OpenVPN connect|width=324}} + + {{attachment:openvpn_connected.png|OpenVPN connected|width=324}} + + 1. Cuando esté desconecta haciendo clic sobre el perfil. + + {{attachment:openvpn_disconnect.png|OpenVPN disconnect|width=324}} + +==== En Debian ==== + +Instala un cliente OpenVPN para tu sistema +{{{ +$ sudo apt install openvpn +}}} +Abre el archivo ovpn con el cliente OpenVPN. +{{{ +$ sudo openvpn --config /ruta/a/.ovpn +}}} +Si te sale un error como `configuration error: invalid 1th argument to “proto” (line 5)` edita el fichero .ovpn y elimina la línea `proto udp6`. + +=== Comprobar si estás conectado === + +==== En Debian ==== + + 1. Trata de hacer ping a tu !FreedomBox u otros dispositivos de tu red. + 1. El comando `ip addr` debe mostrar una conexión `tun0`. + 1. El comando `traceroute freedombox.org` debiera mostrar la dirección IP del servidor VPN como primer salto. + +Si usas `Network Manager` puedes crear una conexión nueva importando el fichero: +{{{ +$ sudo apt install network-manager-openvpn-gnome +$ sudo nmcli connection import type openvpn file /ruta/a/.ovpn +}}} + +=== Acceso a servicios internos === + +Tras conectar por OpenVPN, podrás acceder a algunos servicios !FreedomBox restringidos a acceso interno, además de a los de acceso externo. Esto se puede hacer usando la dirección IP 10.91.0.1 como hostname para esos servicios. + +Los siguientes servicios '''funcionan''' con OpenVPN: + * [[es/FreedomBox/Manual/Privoxy|Privoxy]], + * [[es/FreedomBox/Manual/Tor|Tor Socks]], + * [[es/FreedomBox/Manual/Shadowsocks|Shadowsocks]], + * [[es/FreedomBox/Manual/I2P|I2P Proxy]] and + * [[FreedomBox/Manual/Samba|Samba]]. + +Algunos servicios '''no''' funcionan aún con OpenVPN: + * Avahi, + * [[es/FreedomBox/Manual/Bind|bind]] and + * [[es/FreedomBox/Manual/MiniDLNA|MiniDLNA]]. + +=== Enlaces Externos === + +https://community.openvpn.net/openvpn + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/OpenVPN.raw.xml b/doc/manual/es/OpenVPN.raw.xml deleted file mode 100644 index 7f9178931..000000000 --- a/doc/manual/es/OpenVPN.raw.xml +++ /dev/null @@ -1,4 +0,0 @@ -
es/FreedomBox/Manual/OpenVPN82020-06-23 11:00:40fioddorSe alinea con la versión 21 en inglés del 23 de junio de 202072020-05-30 19:41:32SunilMohanAdapaUpdate the title to emphasize app name over its generic name62020-05-24 07:09:33fioddorSe alinea con la versión 18 en inglés del 23 de mayo de 202052019-11-20 11:00:10fioddorSe alinea con la versión 16 en inglés del 18 de noviembre de 201942019-10-10 19:50:32JosephNuthalapatiFix FreedomBox Portal include in the footer32019-09-16 09:36:03fioddorCorrección menor22019-09-16 09:34:40fioddorCorrección menor12019-09-16 09:32:56fioddorSe crea la versión española.
OpenVPN (Red Privada Virtual)
¿Qué es OpenVPN?OpenVPN proporciona un servicio de red privada virtual a tu FreedomBox. Puedes usar este software para acceso remoto, VPNs punto-a-punto y seguridad Wi-Fi. OpenVPN incluye soporte para direcciones IP dinámicas y NAT.
Redirección de puertosSi tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos en tu router. Debes redirigir los siguientes puertos para OpenVPN: UDP 1194
ConfigurarEn el menú de apps de FreedomBox selecciona Red Privada Virtual (OpenVPN) y haz clic en Instalar. Tras instalar el módulo todavía queda un paso de configuración que puede llevar largo tiempo completar. Haz clic en "Iniciar configuración" para empezar. OpenVPN service page Espera a que termine la configuración. Puede tardar un rato. Una vez completada la configuración del servidor OpenVPN puedes descargar tu perfil. Esto descargará un archivo llamado <usuario>.ovpn, siendo <usuario> un usuario de FreedomBox. Todos los usuarios de FreedomBox podrán descargar un perfil propio y diferente. Los usuarios que no sean administradores pueden descargar el perfil desde la portada después de ingresar. El archivo ovpn contiene toda la información que necesita un cliente vpn para conectar con un servidor. El perfil descargado contiene el nombre de dominio de FreedomBox al que debe conectarse el cliente. Este se obtiene del dominio configurado en la sección 'Configuración' de la página de 'Sistema'. En caso de que tu dominio no esté configurado adecuadamente quizá necesites cambiar este valor después de descargar el perfil. Si tu cliente OpenVPN lo permite puedes hacer esto después de importar el perfil OpenVPN. De lo contrario puedes editar el perfil .ovpn con un editor de texto y cambiar la línea 'remote' para que contenga la dirección IP WAN o el hostname de tu FreedomBox como se indica aquí.
Navegar por Internet tras conectar a una VPNTras conectar a la VPN el dispositivo cliente podrá navegar por Internet sin más configuración adicional. No obstante una pre-condición para que esto funcione es que necesitas tener al menos 1 interfaz (tarjeta) de red conectado a Internet en la zona Externa del cortafuegos. Usa la página de configuración de redes para editar la zona del cortafuegos con los interfaces (tarjetas) de red del dispositivo.
Uso
En Android/LineageOSVisita la página principal de FreedomBox. Ingresa con tu cuenta de usuario. Desde la página principal descarga el perfil OpenVPN. El archivo se llamará <usuario>.ovpn. OpenVPN Download Profile Descarga un cliente OpenVPN como OpenVPN for Android. Se recomienda el repositorio F-Droid. En la app, selecciona Importar perfil. OpenVPN App En el diálogo Seleccionar perfil elige el archivo <usuario>.opvn que acabas de descargar. Pon un nombre a la conexión y graba el perfil. OpenVPN import profile El perfil recién creado aparecera. Si hace falta edita el perfil y pon el nombre de dominio de tu FreedomBox como dirección de servidor. OpenVPN profile created OpenVPN edit domain name Conecta haciendo clic sobre el perfil. OpenVPN connect OpenVPN connected Cuando esté desconecta haciendo clic sobre el perfil. OpenVPN disconnect
En DebianInstala un cliente OpenVPN para tu sistema Abre el archivo ovpn con el cliente OpenVPN. .ovpn]]>Si te sale un error como configuration error: invalid 1th argument to “proto” (line 5) edita el fichero .ovpn y elimina la línea proto udp6.
Comprobar si estás conectado
En DebianTrata de hacer ping a tu FreedomBox u otros dispositivos de tu red. El comando ip addr debe mostrar una conexión tun0. El comando traceroute freedombox.org debiera mostrar la dirección IP del servidor VPN como primer salto. Si usas Network Manager puedes crear una conexión nueva importando el fichero: .ovpn]]>
Enlaces Externos Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/OrangePiZero.raw.wiki b/doc/manual/es/OrangePiZero.raw.wiki new file mode 100644 index 000000000..d70e8462d --- /dev/null +++ b/doc/manual/es/OrangePiZero.raw.wiki @@ -0,0 +1,39 @@ +== Orange Pi Zero == + +{{attachment:orange-pi-zero.jpg|Orange Pi Zero|width=649,height=537}} + +[[http://www.orangepi.org/orangepizero/|Orange Pi Zero]] is a single board computer available at very low price. It uses the Allwinner H2 SoC, and has 256MB/512MB DDR3 SDRAM. It doesn't require any non-free firmware to run !FreedomBox. However, the onboard Wi-Fi module needs proprietary firmware to work. The board is available in two versions: with 256MB RAM and 512MB RAM. The version with 512 MB RAM is recommended for !FreedomBox. Even then, !FreedomBox is expected to gracefully run only a small number of services. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] are available for this device. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. + +=== Availability === + + * [[https://www.aliexpress.com/store/group/H2/1553371_511831299.html|AliExpress]] + +=== Hardware === + + * CPU: ARM Cortex-A7 Quad-Core (Allwinner H2) + * RAM: 256MB/512MB DDR3 SDRAM + * Storage: Up to 32GB on uSD slot, 2MB SPI Flash + * Architecture: armhf + * Ethernet: 10/100, RJ45 + * !WiFi: Onboard 802.11 b/g/n, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + +=== Non-Free Status === + + * Non-free blobs required: No (without Wi-Fi) + * Wi-Fi: no free Wi-Fi drivers + firmware available + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + + +Orange Pi Zero image is licensed under a Creative Commons Attribution 3.0 Unported License by [[https://linux-sunxi.org/File:OPi_Zero_Top.jpg|Linux Sunxi]]. diff --git a/doc/manual/es/PageKite.raw.wiki b/doc/manual/es/PageKite.raw.wiki new file mode 100644 index 000000000..186029c28 --- /dev/null +++ b/doc/manual/es/PageKite.raw.wiki @@ -0,0 +1,34 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/PageKite|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== PageKite (Visibilidad Publica) == + +=== ¿Qué es PageKite? === + +!PageKite hace inmediata y públicamente accesibles desde internet a los sitios web y servicios locales sin tener que crear tu mismo una dirección IP pública. Lo hace tunelando protocolos como HTTPS o SSH a través de cortafuegos y NAT. Usar !PageKite require ana cuenta en un servicio de repetidor de !PageKite. https://pagekite.net es uno de de estos servicios. + +Un servicio de repetidor de !PageKite te permitirá crear cometas (''kites''). Las cometas son similares a los nombres de dominio pero con ventajas y desventajas diferentes. Una cometa puede tener varios servicios configurados. Se sabe que !PageKite funciona con HTTP, HTTPS, y SSH, y muchas funcionan con otros servicios, pero no todas. + +=== Usar PageKite === + + 1. Créate una cuenta en un servicio de repetidor de !PageKite. + 1. Añade una cometa a tu cuenta. Anota el nombre y el secreto de tu cometa. + 1. En !FreedomBox, vé a la solapa "Configurar !PageKite" de la página Visibilidad Publica (!PageKite). + 1. Marca la caja "Habilitar !PageKite" e introduce el nombre y el secreto de tu cometa. Haz clic en "Grabar propiedades". + 1. En la solapa "Servicios Estándar" puedes habilitar HTTP y HTTPS (recomendado) y SSH (opcional). + * HTTP se necesita para obtener el certificado ''Let's Encrypt''. Puedes deshabilitarlo (HTTPS) más tarde. + 1. En la página [[es/FreedomBox/Manual/LetsEncrypt|Certificados (Let's Encrypt)]] puedes obtener un certificado ''Let's Encrypt'' para el nombre de tu cometa. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/PageKite.raw.xml b/doc/manual/es/PageKite.raw.xml deleted file mode 100644 index 06f36f9a3..000000000 --- a/doc/manual/es/PageKite.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/PageKite42020-05-30 19:49:21SunilMohanAdapaUpdate the title to emphasize app name over its generic name32020-05-24 07:40:58fioddorSe alinea con la versión 14 en inglés del 23 de mayo de 202022020-04-04 19:54:42fioddorEnlace a página traducida.12019-06-20 15:13:14fioddorSe crea la versión española.
PageKite (Visibilidad Publica)
¿Qué es PageKite?PageKite hace inmediata y públicamente accesibles desde internet a los sitios web y servicios locales sin tener que crear tu mismo una dirección IP pública. Lo hace tunelando protocolos como HTTPS o SSH a través de cortafuegos y NAT. Usar PageKite require ana cuenta en un servicio de repetidor de PageKite. es uno de de estos servicios. Un servicio de repetidor de PageKite te permitirá crear cometas (kites). Las cometas son similares a los nombres de dominio pero con ventajas y desventajas diferentes. Una cometa puede tener varios servicios configurados. Se sabe que PageKite funciona con HTTP, HTTPS, y SSH, y muchas funcionan con otros servicios, pero no todas.
Usar PageKiteCréate una cuenta en un servicio de repetidor de PageKite. Añade una cometa a tu cuenta. Anota el nombre y el sectreo de tu cometa. En FreedomBox, vé a la solapa "Configurar PageKite" de la página Visibilidad Publica (PageKite). Marca la caja "Habilitar PageKite" e introduce el nombre y el secreto de tu cometa. Haz clic en "Grabar propiedades". En la solapa "Servicios Estándar" puedes habilitar HTTP y HTTPS (recomendado) y SSH (opcional). HTTP se necesita para obtener el certificado Let's Encrypt. Puedes deshabilitarlo (HTTPS) más tarde. En la página Certificados (Let's Encrypt) puedes obtener un certificado Let's Encrypt para el nombre de tu cometa. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Performance.raw.wiki b/doc/manual/es/Performance.raw.wiki new file mode 100644 index 000000000..6f2bb056b --- /dev/null +++ b/doc/manual/es/Performance.raw.wiki @@ -0,0 +1,25 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Performance|English]] - Español -~ + +## BEGIN_INCLUDE + +== Performance (Monitorización del sistema) == + +'''Disponible desde''': versión 20.9 + + +La app ''Performance'' permite recabar, almacenar y ver información acerca de la utilización del ''hardware''. Esto proporciona visibilidad acerca de patrones de uso y si el ''hardware'' está sobrecargado por usuarios y/o servicios. + +Las métricas de Performance las recaba ''Performance Co-Pilot'' se pueden ver mediante la app [[es/FreedomBox/Manual/Cockpit|Cockpit]]. Cuando se instala y habilita esta app del sistema, los gráficos de Cockpit muestran el pasado (hasta un año atrás). + +{{attachment:FreedomBox/Manual/Performance/performance-one-week.png}} + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/PineA64+.raw.wiki b/doc/manual/es/PineA64+.raw.wiki new file mode 100644 index 000000000..13a0cbe5c --- /dev/null +++ b/doc/manual/es/PineA64+.raw.wiki @@ -0,0 +1,48 @@ +== Pine A64+ == + +{{attachment:pine64-plus.jpg|Pine 64+|width=640,height=579}} + +[[https://www.pine64.org/?page_id=1194|Pine A64+]] is an affordable single board computer with good performance. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Similar Hardware === + + * Both 1GB and 2GB versions of Pine A64+ are supported with the same !FreedomBox image. + * Pine A64-LTS is not supported yet. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] for this hardware are available. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot into !FreedomBox. Pick the image meant for Pine A64+. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: 29 USD (for the 2 GB variant), 21 USD (for the 1 GB variant) + * [[https://www.pine64.org/?product=pine-a64-board-1gb|Pine A64+ with 1 GB RAM at Pine64 Store]] + * [[https://www.pine64.org/?product=pine-a64-board-2gb|Pine A64+ with 2 GB RAM at Pine64 Store]] + +=== Hardware === + + * Open Source Hardware (OSHW): No + * CPU: Allwinner A64, Quad-core ARM Cortex A53 64-bit processor + * RAM: 3 variants - 512 MB (not recommended), 1 GB and 2 GB (recommended) + * Storage: SD card, eMMC (module sold separately but not tested with !FreedomBox) + * Architecture: arm64 + * Ethernet: Gigabit Ethernet port + * Battery: Supports battery backup using a Li-Po battery + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: None + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/PioneerEdition.raw.wiki b/doc/manual/es/PioneerEdition.raw.wiki new file mode 100644 index 000000000..2218c8315 --- /dev/null +++ b/doc/manual/es/PioneerEdition.raw.wiki @@ -0,0 +1,182 @@ +<> + +## BEGIN_INCLUDE + +== FreedomBox Pioneer Edition == + +Los servidores caseros !FreedomBox Pioneer Edition los fabrica y vende Olimex, una compañía epecializada en ''hardware'' de fuentes abiertas. El Kit incluye ''hardware'' de servidor tamaño bolsillo, una tarjeta SD con el sistema operativo preinstalado, y una batería de respaldo que puede alimentar el ''hardware'' durante 4-5 horas en casos de indisponibilidad de la red eléctrica. Se vende por 82 €. Olimex ofrece una extensión opcional para almacenamiento de alta capacidad en disco duro o de estado sólido. Al comprar este producto contribuyes a los esfuerzos de la !FreedomBox Foundation's para crear y promover su ''software'' de servidor libre. + +{{attachment:pioneer-edition.jpg|Pioneer Edition FreedomBox Home Server Kit|width=640,height=513}} + + +== Características del Producto == + +=== HW Recomendado === +Éste es el hardware recomendado para los usuarios que quieran simplemente una !FreedomBox llave en mano, y '''no''' quieran '''construirse''' una. + +(Construir tu propia !FreedomBox implica algunos tecnicismos como elegir y comprar los componentes adecuados, descargar la imágen y preparar una tarjeta SD). + +=== Este Kit === +Este producto proporciona la combinación perfecta de hardware de fuentes abiertas y software libre y ''open source''. Comprando este producto, soportas también los edfuerzos de la !FreedomBox Foundation para crear y promover su software libre y ''open source'' de servidor. + +El [[https://www.olimex.com/Products/OLinuXino/Home-Server/Pioneer-FreedomBox-HSK/|Kit de Servidor Casero FreedomBox Pioneer Edition]] incluye todo el hardware necesario para arrancar un servidor !FreedomBox casero sobre una placa Olimex [[FreedomBox/Hardware/A20-OLinuXino-Lime2|A20-OLinuXino-LIME2]]: + * la A20-!OlinuXino-LIME2, + * su carcasa de metal con el logo de !FreedomBox grabado mediante laser, + * una tarjeta micro SD de alta velocidad y 32GB con el software !FreedomBox preinstalado, + * una batería de respaldo, + * un transformador, + * un cable Ethernet, y + * una extensión para almacenamiento de alta capacidad en disco duro o de estado sólido. + + +=== Disponibilidad === + +El servidor casero !FreedomBox Pioneer Edition es la primera versión comercial disponible de !FreedomBox. + + * Precio: 82 EUR + * [[https://www.olimex.com/Products/OLinuXino/Home-Server/Pioneer-FreedomBox-HSK/|Tienda Olimex]] + +=== Especificaciones del Hardware === + +El servidor casero !FreedomBox Pioneer Edition se basa en la A20-OLinuXino-LIME2 Rev.G + + * Hardware de fuentes abiertas (OSHW): [[https://github.com/OLIMEX/OLINUXINO/tree/master/HARDWARE|Sí]] + * CPU: Allwinner A20, ARM Cortex-A7 dual-core a 1GHz + * RAM: 1 GiB DDR3 + * Almacenamiento: tarjeta microSD de 32GB de clase 10+ precargada con !FreedomBox + * SATA: 1 puerto SATA compatible 2.6 a 3Gb/s + * USB: 2 puertos host de alta velocidad USB 2.0 + * Batería: Li-Po, 3.3V y 1400mAh (4-5 horas de respaldo si no hay dispositivos adicionales conectados al puerto USB) + * Ethernet: 10/100/1000, RJ45 (cable de 1 m incluído) + * Transformador: Entrada a 110-220V, salida a 5V, estilo UE (enchufes opcionales para el Reino Unido o EE.UU) + * Consumo eléctrico: 1.5W o 5W dependiendo de la carga (corriente entre 0.3A 1 1A) + * Carcasa: Metálica con la marca !FreedomBox + +Los kits ejecutan sólo Software Libre. Funcionan con núcleo (kernel) y ''u-boot'' de los repositorios Debian. Incluso el firmware de arranque de la ROM, llamado [[https://linux-sunxi.org/BROM|BROM]] es software libre (GPLV2+). + +Más información: + * [[https://www.olimex.com/Products/OLinuXino/Home-Server/Pioneer-FreedomBox-HSK/open-source-hardware|Guía de inicio rápido.]] + * [[https://www.olimex.com/Products/OLinuXino/Home-Server/Pioneer-FreedomBox-HSK/open-source-hardware|Ficheros fuente del hardware]] + * [[https://www.olimex.com/Products/OLinuXino/Home-Server/Pioneer-FreedomBox-HSK/open-source-hardware|Esquéma de la A20-OLinuXino-LIME2 rev.G]] + * [[http://dl.linux-sunxi.org/A20/A20%20Brief%202013-02-27.pdf|Especificaciones técnicas del SoC A20]] + + +=== Extensión para Almacenamiento === + +Junto con tu servidor casero !FreedomBox Pioneer Edition puedes encargar una extensión para almacenamiento consistente en una carcasa para disco SATA, opcionalmente con un disco duro o de estado sólido de entre 128 y 2000 GB de capacidad. Si ya has comprado tu +servidor casero sin la extensión puedes encargarla aparte. + + * [[https://www.olimex.com/Products/OLinuXino/Home-Server/BAY-HDD-1000GB/|Tienda Olimex]] + * Precio: 9 EUR (carcasa suelta sin disco duro, para albergar un disco tuyo) + * Precio: 42 EUR (con disco de estado sólido de 128 GB) + * Precio: 69 EUR (con disco de estado sólido de 512 GB) + * Precio: 42 EUR (con disco duro de 320 GB) + * Precio: 53 EUR (con disco duro de 500 GB) + * Precio: 64 EUR (con disco duro de 1000 GB) + * Precio: 86 EUR (con disco duro de 2000 GB) + +=== Descarga === + +Los kits vienen con una tarjeta SD precargada con !FreedomBox. '''NO hace ninguna falta descargar imágenes'''. + +No obstante, si deseas restablecer tus dispositivos a un estado virginal puedes hacerlo con la imágen provista. Sigue las instrucciones de la página de [[es/FreedomBox/Download|descargas]] para crear una tarjeta SD de !FreedomBox y arrancar tu dispositivo. Asegúrate de descargar imágenes para la [[https://ftp.freedombox.org/pub/freedombox/pioneer/|Pioneer Edition]]. Estas imágenes de tarjeta SD se usan en la ranura SD de la propia placa y no funcionarán si se insertan en un lector SD externo conectado por USB. + +Una alternativa a descargar estas imágenes es [[InstallingDebianOn/Allwinner|instalar Debian]] en el dispositivo y luego [[es/FreedomBox/Hardware/Debian|instalar FreedomBox]] sobre él. + +=== Construcción de una Imágen === + +Las imágenes de !FreedomBox para este hardware se pueden construir usando [[FreedomBox/Maker|Freedom Maker]]. + +=== Reparos conocidos === + + * La imágen distribuída con los kits usa un [[https://salsa.debian.org/freedombox-team/u-boot|u-boot ligéramente modificado]] en vez de el de serie de Debian como el resto de !FreedomBox. Así que si quieres obtener su código fuente usa por favor el [[https://salsa.debian.org/freedombox-team/u-boot|repositorio de u-boot]] del equipo de !FreedomBox. + + +== Obtener el Código Fuente == + +!FreedomBox es 100% [[https://www.gnu.org/philosophy/free-sw.html|software libre]] y puedes obtener el código fuente para estudiarlo, modificarlo y distribuir mejoras. + +=== Desde (dentro de) FreedomBox === + +!FreedomBox se compone de diferentes programas de software y puedes obtener el código fuente de cualquiera de ellos. Estas instrucciones son similares a obtener y [[https://www.debian.org/doc/manuals/maint-guide/build.en.html|construír]] [[https://www.debian.org/doc/manuals/apt-howto/ch-sourcehandling.en.html|código fuente]] [[https://wiki.debian.org/BuildingTutorial|de Debian]] ya que !FreedomBox es una variante pura de Debian. Usando este procedimiento puedes obtener el código fuente de la misma versión del paquete que estás usando actualmene en !FreedomBox. + + 1. Para ver la lista de paquetes software instalados en tu !FreedomBox, ejecuta lo siguiente en un terminal: + {{{ +dpkg -l +}}} + 1. Para obtener el código fuente de cualquiera de esos programas ejecuta: + {{{ +apt source +}}} + Esto requiere que el archivo [[https://www.debian.org/doc/manuals/apt-howto/ch-basico.en.html|/etc/apt/sources.list]] contenga información acerca de los repositorios de código fuente. Esto es así por defecto en todas las imágenes !FreedomBox. Pero si has instalado !FreedomBox desde Debian necesitas asegurarte de que los repositorios de código fuente figuren en este archivo. + 1. Para construir el paquete desde su código fuente, primero instala sus dependencias + {{{ +apt build-dep +}}} + Cambia al directorio fuente creado con el comando ''apt source'': + {{{ +cd +}}} + Y construye el paquete + {{{ + dpkg-buildpackage -rfakeroot -uc +}}} + 1. Instala el paquete: + {{{ + dpkg -i ../.deb +}}} + +=== Otras Maneras de Obtener el Código Fuente === + + 1. El código fuente de cualquier paquete se puede ver y buscar usando el interfaz web de [[https://sources.debian.org/|sources.debian.org]]. Por ejemplo, mira el paquete [[https://sources.debian.org/src/plinth/|plinth]]. + + 1. El código fuente y el binario precompilado de cualquier version de un paquete, incluyendo versiones antigüas, se pueden obtener de [[https://snapshot.debian.org/|snapshot.debian.org]]. Por ejemplo, mira el paquete [[https://snapshot.debian.org/package/plinth/|plinth]]. + + 1. También puedes obtener los enlaces a la web del proyecto original, al control de versiones del proyecto original, al control de versiones de Debian, registro de cambios, etc. desde la página de control Debian para el proyecto en [[https://tracker.debian.org/|tracker.debian.org]]. Por ejemplo, mira la página de control para el paquete [[https://tracker.debian.org/pkg/plinth|plinth]]. + + 1. Puedes compilar e instalar un paquete desde el control de versiones de Debian. Por ejemplo, + {{{ + git clone https://salsa.debian.org/freedombox-team/freedombox.git + cd freedombox + apt build-dep . + dpkg-buildpackage -rfakeroot -uc + dpkg -i ../freedombox*.deb +}}} + +=== Construyendo Imágenes de disco === + +También puedes construír imágenes de disco !FreedomBox para varias platformas de ''hardware'' usando la herramienta '''freedom-maker'''. Esta también está disponible como paquete Debian y su código fuente se puede obtener empleando los métodos anteriores. Hay disponibles [[https://salsa.debian.org/freedombox-team/freedom-maker/blob/master/README.md|Instrucciones de Construcción]] para generar imágenes de disco incluídas en el código fuente del paquete '''freedom-maker'''. + +Las imágenes de disco de !FreedomBox se construyen y suben a los servidores oficiales empleando la infraestructura de integración contínua automatizada. Esta infraestructura está disponible también como [[https://salsa.debian.org/freedombox-team/infrastructure|código fuente]] y proporciona información precisa acerca de como se contruyen las imágenes de !FreedomBox. + +==== Imágenes U-boot sobre Pioneer Edition ==== + +Hay una excepción menor en el paquete u-boot que viene con el ''hardware'' que se vende como Kits de Servidor Casero !FreedomBox Pioneer Edition. Contiene un parche pequeño pero importante que no está en el código fuente de Debian. Tanto el repositorio fuente de Debian u-boot como el parche de !FreedomBox están disponibles como [[https://salsa.debian.org/freedombox-team/u-boot|un repositorio aparte]]. Esperamos que en algún momento este parche esté integrado en u-boot de serie y este repositorio ya no sea necesario. Este paquete se puede compilar en una máquina Debian armhf como sigue (también se puede hacer compilación cruzada, simplemente sigue las instrucciones para compilación cruzada de paquetes Debian): + +{{{ +apt install git git-buildpackage +git clone https://salsa.debian.org/freedombox-team/u-boot.git +cd u-boot +pbuilder create --distribution=buster +gbp buildpackage --git-pbuilder +}}} + +El paquete u-boot Debian estará en ''u-boot-sunxi*.deb''. Este paquete contendrá + +{{{ +mkdir temp +dpkg -x u-boot-suxi*.deb temp +unxz +dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of= seek=8 bs=1k conv=notrunc +}}} + +La imagen resultante tendrá el u-boot modificado. + + + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Plinth.raw.wiki b/doc/manual/es/Plinth.raw.wiki new file mode 100644 index 000000000..98d0303cc --- /dev/null +++ b/doc/manual/es/Plinth.raw.wiki @@ -0,0 +1,71 @@ +== Servicio FreedomBox (Plinth) == + +El servicio !FreedomBox (Plinth) es un interfaz web para administrar las funciones de !FreedomBox. + +El servicio !FreedomBox es [[https://www.gnu.org/philosophy/|Software Libre]] bajo la versión 3 o posterior (a tu elección) de la [[https://www.gnu.org/licenses/agpl.html|Licencia Pública General GNU Affero]]. + +=== Uso === + + * El servicio !FreedomBox viene instalado en todas las imágenes de !FreedomBox. Puedes [[FreedomBox/Download|descargar]] imágenes de !FreedomBox y ejecutarlas en cualquier hardware soportado. El servicio !FreedomBox (Plinth) estará accesible visitando la URL [[http://freedombox/plinth]] o [[https://freedombox.local/plinth]]. + + * Si estás en una máquina Debian puedes instalar el servicio !FreedomBox desde el archivo de paquetes de Debian. Actualmente solo se soportan Buster (estable), Bullseye (en pruebas) y Sid (inestable). Para instalar el servicio !FreedomBox ejecuta: + +{{{ +$ sudo apt-get install freedombox +}}} + + * También puedes obtener el servicio !FreedomBox en su [[https://salsa.debian.org/freedombox-team/freedombox/|repositorio Git]] o [[https://salsa.debian.org/freedombox-team/freedombox/blob/master/INSTALL.md|instalarlo desde el código fuente]]. + +=== Capturas de pantalla === + +[[attachment:freedombox-screenshot-home.png|{{attachment:freedombox-screenshot-home.png|Página Principal|width=300}}]] +[[attachment:freedombox-screenshot-apps.png|{{attachment:freedombox-screenshot-apps.png|Página de Apps|width=300}}]] +[[attachment:freedombox-screenshot-system.png|{{attachment:freedombox-screenshot-system.png|Página del Sistema|width=300}}]] + +[[attachment:freedombox-screenshot-tor.png|{{attachment:freedombox-screenshot-tor.png|Habilitar Servicios or Onion|width=300}}]] +[[attachment:freedombox-screenshot-ttrss.png|{{attachment:freedombox-screenshot-ttrss.png|Newsfeed desde cualquier lugar|width=300}}]] +[[attachment:freedombox-screenshot-roundcube.png|{{attachment:freedombox-screenshot-roundcube.png|Cliente Email|width=300}}]] + +[[attachment:freedombox-screenshot-manual.png|{{attachment:freedombox-screenshot-manual.png|Páginas Man|width=300}}]] +[[attachment:freedombox-screenshot-about.png|{{attachment:freedombox-screenshot-about.png|Página Acerca de|width=300}}]] + +=== Soporte === + +Puedes solicitar soporte en + + * [[https://discuss.freedombox.org/|El foro de debate]] + + * [[AliothList:freedombox-discuss|La lista de correo]] + + * [[irc://irc.debian.org/freedombox|El canal IRC #freedombox]] + + * [[https://matrix.to/#/#freedombox:matrix.org|El canal Matrix FreedomBox]] + +=== Contribuir === + +Buscamos ayuda para mejorar el servicio !FreedomBox. Puedes contribuir al servicio !FreedomBox no solo codificando sino también traduciendo, documentando, diseñando, empaquetando o dando soporte. + + * Hay disponibles instrucciones para [[FreedomBox/Contribute/Code|contribuir código]]. + + * El repositorio Git principal se aloja en la [[https://salsa.debian.org/freedombox-team/freedombox/|página de FreedomBox en Salsa]]. + + * Hay disponibles instrucciones para [[https://salsa.debian.org/freedombox-team/freedombox/blob/master/INSTALL.md|instalar desde el código fuente]] y [[https://salsa.debian.org/freedombox-team/freedombox/blob/master/HACKING.md|modificarlo]]. + + * Las listas de defectos, tareas pendientes y solicitudes de funcionalidad están en el [[https://salsa.debian.org/freedombox-team/freedombox/issues|gestor de incidencias]]. + + * Antes de contribuir al código fuente del servicio !FreedomBox necesitas entender [[https://www.python.org/|Python]] y [[https://www.djangoproject.com/|Django]] porque se basa en ellos. + + * Puedes solicitar asistencia al desarrollo en [[https://discuss.freedombox.org/|el foro de debate]], [[AliothList:freedombox-discuss|la lista de correo]] o el [[irc://irc.debian.org/freedombox|canal de IRC #freedombox]]. + +==== Paquete Debian ==== + + * El servicio !FreedomBox está [[DebianPkg:freedombox|empaquetado]] para Debian como paquete nativo y el código fuente de empaquetado es parte del código fuente del paquete principal. + + * Las incidencias relacionadas con el empaquetado se listan en el [[DebianBug:freedombox|BTS de Debian]]. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Power.raw.wiki b/doc/manual/es/Power.raw.wiki new file mode 100644 index 000000000..0e68bcc99 --- /dev/null +++ b/doc/manual/es/Power.raw.wiki @@ -0,0 +1,20 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Power|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Apagado == +Para reiniciar o apagar tu !FreedomBox haz clic en el menú desplegable del usuario en la esquina superior derecha. Después de seleccionar "Reiniciar" o "Apagar", se te pedirá confirmación. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Power.raw.xml b/doc/manual/es/Power.raw.xml deleted file mode 100644 index 9a478ea41..000000000 --- a/doc/manual/es/Power.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Power12019-06-18 15:25:34fioddorSe crea la versión española.
ApagadoPower proporciona un modo fácil de reiniciar o apagar tu FreedomBox. Después de seleccionar "Reiniciar" o "Apagar", se te pedirá confirmación. Se puede llegar también a las opciones "Reiniciar" y "Apagar" desde el menú desplegable del usuario en la esquina superior derecha. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Privoxy.raw.wiki b/doc/manual/es/Privoxy.raw.wiki new file mode 100644 index 000000000..e24f75903 --- /dev/null +++ b/doc/manual/es/Privoxy.raw.wiki @@ -0,0 +1,58 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Privoxy|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Privoxy (Proxy Web) == +|| {{attachment:FreedomBox/Manual/Privoxy/Privoxy-icon_en_V01.png|icono de Privoxy}} || + +'''Disponible desde''': versión 0.1 + +Un ''proxy web'' actúa como filtro para tráfico web entrante y saliente. Por tanto, puedes ofrecer a los ordenadores de tu red pasar su tráfico internet a través del proxy para eliminar anuncios y mecanismos de rastreo indeseados. + +''Privoxy'' es un software para la seguridad, privacidad, y control certero sobre la web. Proporciona una navegación web mucho más controlada (y anónima) que la que te puede ofrecer tu navegador. Privoxy "es un proxy enfocado principalmente al aumento de la privacidad, eliminación de anuncios y morralla, y a liberar al usuario de las restricciones impuestas sobre sus propias actividades" (fuente: [[https://www.privoxy.org/faq/index.html|Preguntas frecuentes acerca de Privoxy]]). + +=== Vídeo === + +Mira el [[attachment:Privoxy_Installation.webm|vídeo]] acerca de como configurar y usar Privoxy en !FreedomBox. + +=== Configurar === + + 1. Instala ''Proxy Web (Privoxy)'' desde !FreedomBox + + {{attachment:Privoxy-Installation.png|Privoxy Installation|width=800}} + + 1. Adapta las preferencias de proxy de tu navegador al hostname (o dirección IP) de tu !FreedomBox con el puerto 8118. Observa por favor que Privoxy sólo puede tratar tráfico HTTP y HTTPS. No funciona con FTP u otros protocolos. + + {{attachment:Privoxy-BrowserSettings.png|Privoxy Browser Settings|width=800}} + + 1. Vé a la página http://config.privoxy.org/ o http://p.p. Si Privoxy está instalado adecuadamente podrás configurarlo en detalle y si no verás un mensaje de fallo. + + 1. Si usas un portátil que tenga a veces que conectarse con !FreedomBox y Privoxy pasando por routers de terceros quizá quieras instalar una extensión ''proxy switch'' que te permite activar y desactivar el proxy más fácilmente. + +=== Usuarios Avanzados === + + 1. La instalación de serie debería proporcionar un punto de partida razonable para la mayoría de los usuarios. Indudablemente habrá ocasiones en las que quieras ajustar la configuración. Eso se puede afrontar cuando surja la necesidad. + + 1. Con Privoxy activado puedes ver su documentación y los detalles de su configuración en `http://config.privoxy.org/` o en `http://p.p`. + + 1. Para habilitar los cambios en estas configuraciones primero tienes que cambiar el valor de ''habilitar-acciones-de-edición'' en `/etc/privoxy/config` a `1`. Antes de hacerlo lee el manual con atención, especialmente: + ''No se puede controlar por separado el accesso al editor por "ACLs" o authenticación HTTP, así que cualquiera con acceso a Privoxy puede modificar la configuración de todos los usuarios. Esta opción no se recomienda para entornos con usuarios no confiables. Nota que un código de cliente malicioso (p.ej. Java) también puede usar el editor de acciones y no deberías habilitar estas opciones a no ser que entiendas las consecuencias y estés seguro de que los navegadores están correctamente configurados.'' + + 1. Ahora encontrarás un botón `EDITAR` en la pantalla de configuración de `http://config.privoxy.org/`. + + 1. La [[https://www.privoxy.org/user-manual/quickstart.html|Guía rápida]] es un buen punto de partida para leer acerca de cómo definir reglas de bloqueo y filtrado propias. + +## END_INCLUDE + +---- + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Privoxy.raw.xml b/doc/manual/es/Privoxy.raw.xml deleted file mode 100644 index cadcd2b1f..000000000 --- a/doc/manual/es/Privoxy.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Privoxy52020-05-30 19:41:57SunilMohanAdapaUpdate the title to emphasize app name over its generic name42020-05-24 07:14:06fioddorSe alinea con la versión 15 en inglés del 23 de mayo de 202032020-05-10 00:49:54fioddorSe alinea con la versión 13 en inglés del 03 de mayo de 202022019-09-16 11:36:07fioddor12019-09-16 11:33:00fioddorSe crea la versión española.
Privoxy (Proxy Web)Un proxy web actúa como filtro para tráfico web entrante y saliente. Por tanto, puedes ofrecer a los ordenadores de tu red pasar su tráfico internet a través del proxy para eliminar anuncios y mecanismos de rastreo indeseados. Privoxy es un software para la seguridad, privacidad, y control certero sobre la web. Proporciona una navegación web mucho más controlada (y anónima) que la que te puede ofrecer tu navegador. Privoxy "es un proxy enfocado principalmente al aumento de la privacidad, eliminación de anuncios y morralla, y a liberar al usuario de las restricciones impuestas sobre sus propias actividades" (fuente: Preguntas frecuentes acerca de Privoxy).
VídeoMira el vídeo acerca de como configurar y usar Privoxy en FreedomBox.
ConfigurarInstala Proxy Web (Privoxy) desde FreedomBox Privoxy Installation Adapta las preferencias de proxy de tu navegador al hostname (o dirección IP) de tu FreedomBox con el puerto 8118. Observa por favor que Privoxy sólo puede tratar tráfico HTTP y HTTPS. No funciona con FTP u otros protocolos. Privoxy Browser Settings Vé a la página o . Si Privoxy está instalado adecuadamente podrás configurarlo en detalle y si no verás un mensaje de fallo. Si usas un portátil que tenga a veces que conectarse con FreedomBox y Privoxy pasando por routers de terceros quizá quieras instalar una extensión proxy switch que te permite activar y desactivar el proxy más fácilmente.
Usuarios AvanzadosLa instalación de serie debería proporcionar un punto de partida razonable para la mayoría de los usuarios. Indudablemente habrá ocasiones en las que quieras ajustar la configuración. Eso se puede afrontar cuando surja la necesidad. Con Privoxy activado puedes ver su documentación y los detalles de su configuración en http://config.privoxy.org/ o en http://p.p. Para habilitar los cambios en estas configuraciones primero tienes que cambiar el valor de habilitar-acciones-de-edición en /etc/privoxy/config a 1. Antes de hacerlo lee el manual con atención, especialmente: No se puede controlar por separado el accesso al editor por "ACLs" o authenticación HTTP, así que cualquiera con acceso a Privoxy puede modificar la configuración de todos los usuarios. Esta opción no se recomienda para entornos con usuarios no confiables. Nota que un código de cliente malicioso (p.ej. Java) también puede usar el editor de acciones y no deberías habilitar estas opciones a no ser que entiendas las consecuencias y estés seguro de que los navegadores están correctamente configurados. Ahora encontrarás un botón EDITAR en la pantalla de configuración de http://config.privoxy.org/. La Guía rápida es un buen punto de partida para leer acerca de cómo definir reglas de bloqueo y filtrado propias. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Quassel.raw.wiki b/doc/manual/es/Quassel.raw.wiki new file mode 100644 index 000000000..99b6c41fe --- /dev/null +++ b/doc/manual/es/Quassel.raw.wiki @@ -0,0 +1,96 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Power|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Quassel (Cliente IRC) == +|| {{attachment:FreedomBox/Manual/Quassel/Quassel-icon_en_V02.png|icono de Quassel}} || + +'''Disponible desde''': versión 0.8 + +''Quassel'' es una aplicación IRC separada en 2 partes: un "núcleo" y un "cliente". Esto permite que el núcleo permanezca conectado a los servidores IRC recibiendo mensajes aunque el cliente esté desconectado. Ejecutando el servicio nucleo de Quassel !FreedomBox puede mantenerte siempre en línea. Se pueden usar uno o varios clentes Quassel para conectarse intermitentemente desde escritorios o dispositivos móviles. + + +=== ¿Para qué ejecutar Quassel? === + +Muchos debates acerca de !FreedomBox tienen lugar en el canal IRC `irc://irc.debian.org/freedombox`. Si tu !FreedomBox ejecuta ''Quassel'' recolectará todos ellos mientras estás ausente, capturando las respuestas a tus preguntas. Recuerda que el proyecto !FreedomBox es mundial y participa gente de casi todos los husos horarios. Usarás tu ''cliente'' para conectar al núcleo de ''Quassel'' y leer y/o responder cuando tengas tiempo y disponibilidad. + +=== ¿Cómo activar Quassel? === + * En el interfaz web de !FreedomBox + 1. selecciona ''Aplicaciones'' + 1. ve a ''Cliente IRC (Quassel)'' e + 1. instala la aplicación y asegúrate de que está habilitada + {{attachment:Quassel_Installation_es_v01.png|Quassel Installation|width=800}} + 1. tu núcleo de Quassel se está ejecutando + +=== Redirección de Puertos === + +Si tu !FreedomBox está detras de un router necesitarás configurar la redirección de puertos en tu router. Redirije los siguientes puertos de Quassel: + * TCP 4242 + + * Ejemplo de configuración en el router: + {{attachment:Quassel_PortForwarding_es_v01.png}} + +=== Clientes === + +Hay disponibles clientes para [[http://quassel-irc.org/downloads|escritorio]] y [[https://quasseldroid.info/|dispositivos móviles]] para conectar a Quassel. + +==== Escritorio ==== + +En un sistema Debian puedes, p. ej. usar [[https://packages.debian.org/search?keywords=quassel-client|quassel-client]]. Los siguientes pasos describen cómo conectar el Cliente Quassel con el Núcleo de Quassel de tu !FreedomBox. La primera vez que te conectes el Núcleo de Quassel se inicializará también. + + 1. Abre el Cliente Quassel. Te guiará paso a paso para `Conectarse al núcleo`. + {{attachment:quassel-client-1-connect-to-core_es_v01.png|Connect to Core|width=394}} + 1. Haz clic en el botón `Añadir` para abrir el diálogo `Añadir cuenta de núcleo`. + {{attachment:quassel-client-2-add-core-account_es_v01.png|Add Core Account|width=382}} + 1. Rellena cualquier cosa en el campo `Nombre de la cuenta`. Introduce el ''hostname DNS'' de tu !FreedomBox en el campo `Servidor`. El campo `Puerto` debe tener el valor `4242`. Pon el usuario y la contraseña de la cuenta que quieres crear para conectar con el Núcleo de Quassel en los campos `Usuario` y `Contraseña`. Si no quieres que se te pida la contraseña cada vez que arranques el cliente de Quassel marca la opción `Recordar`. + 1. Tras pulsar `OK` en el diálogo `Añadir cuenta de núcleo` deberías ver la cuenta en el diálogo `Conectarse al núcleo`. + {{attachment:quassel-client-3-connect-to-core_es_v01.png|Connect to Core|width=394}} + 1. Selecciona la cuenta del núcleo recién creada y dale a `OK` para conectar con él. + 1. Si es la primera vez que te conectas a este núcleo verás un aviso de `Certificado de seguridad no confiable` y necesitarás aceptar el certificado del servidor. + {{attachment:quassel-client-4-untrusted-security-certficate_es_v01.png|Untrusted Security Certificate|width=504}} + 1. Selecciona `Continuar`. Se te preguntará si quieres aceptar el certificado permanentemente. Selecciona `Para siempre`. + {{attachment:quassel-client-5-untrusted-security-certificate_es_v01.png|Untrusted Security Certificate|width=434}} + 1. Si nadie se ha conectado nunca antes a este Núcleo Quassel antes verás un diálogo por pasos `Asistente de configuración del núcleo`. Selecciona `Siguiente`. + {{attachment:quassel-client-6-core-configuration-wizard_es_v01.png|Core Configuration Wizard|width=504}} + 1. En la página `Crear usuario administrador` introduce el usuario y la contraseña que has usado antes para crear la conexión al núcleo. Selecciona `Recordar la contraseña` para que recuerde la contraseña para futuras sesiones. Haz clic en `Siguiente`. + {{attachment:quassel-client-7-create-admin-user_es_v01.png|Create Admin User Page|width=504}} + 1. En la página `Seleccionar un motor de almacenamiento` selecciona `SQLite` y haz clic en `Enviar`. + {{attachment:quassel-client-8-select-storage-backend_es_v01.png|Select Storage Backend|width=504}} + 1. La configuración del núcleo está completa y verás un asistente `Quassel IRC` para configurar tus conexiones IRC. Haz clic en `Siguiente`. + {{attachment:quassel-client-9-welcome-wizard_es_v01.png|Welcome Wizard|width=504}} + 1. A continuación en la página de `Configurar identidad` pon un nombre y múltiples pseudónimos. Te presentarás con estos a otros usuarios de IRC. No es necesario dar tu nombre real. Los pseudónimos múltipes son útiles como suplentes cuando el primero no se pueda usar por cualquier motivo. Tras aportar la información haz clic en `Siguiente`. + {{attachment:quassel-client-10-setup-identity_es_v01.png|Setup Identity|width=504}} + 1. A continuación en la página de `Configurar conexión de red` pon el nombre de red que quieras y una lista de servidores a los que se deba conectar el Núcleo de Quassel para unirte a esa red IRC (por ejemplo `irc.debian.org:6667`). + {{attachment:quassel-client-11-setup-network-connection_es_v02.png|Setup Network Connection|width=504}} + 1. Selecciona un servidor de la lista y dale a `Editar`. En el diálogo `Información del servidor` pon el puerto `6697` (consulta la lista real de servidores y sus puertos seguros en la documentación de tu red) y haz clic en `Usar conexión cifrada`. Clic en `OK`. Esto es para asegurar que la comunicación entre tu !FreedomBox y el servidor de la red IRC va cifrada. + {{attachment:quassel-client-12-server-info_es_v01.png|Server Info|width=390}} + {{attachment:quassel-client-13-server-info-ssl_es_v01.png|Server Info SSL|width=390}} + 1. Ya de vuelta en el diálogo `Configuración de Conexión de Red` proporciona una lista de canales IRC (como #freedombox) a los que unirte al conectarte a la red. Dale a `Grabar y Conectar`. + {{attachment:quassel-client-14-setup-network-connection_es_v01.png|Setup Network Connection|width=504}} + 1. Deberías conectar con la red y ver la lista de canales a los que te has unido en el panel `Todas las conversaciones` de la izquierda de la ventana principal del Cliente Quassel. + {{attachment:quassel-client-15-quassel-main_es_v01.png|Quassel Main Window|width=644}} + 1. Selecciona un canal y empieza a recibir mensajes de otros participantes del canal y a enviar los tuyos. + +==== Android ==== + +Para dispositivos Android puedes usar p.ej. ''Quasseldroid'' obtenido desde [[https://f-droid.org/es/packages/com.iskrembilen.quasseldroid/|F-Droid]] + + * introduce el núcleo, usuario, etc. + {{attachment:Quasseldroid.png}} + + +Por cierto el verbo alemán ''quasseln'' significa ''hablar mucho'', ''rajar''. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Quassel.raw.xml b/doc/manual/es/Quassel.raw.xml deleted file mode 100644 index 1bf2fbf22..000000000 --- a/doc/manual/es/Quassel.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Quassel132020-05-30 19:42:16SunilMohanAdapaUpdate the title to emphasize app name over its generic name122020-05-24 06:58:26fioddorSe alinea con la versión 11 en inglés del 23 de mayo de 2020112020-05-11 23:17:26fioddorSe alinea con la versión 09 en inglés del 12 de mayo de 2020102020-05-11 18:51:37fioddorImagen traducida92020-05-11 18:44:58fioddorLiteral alineado con la imágen (pero traducido)82020-05-11 18:42:24fioddorErrata72020-05-11 18:40:56fioddorLiterales alineados con las imágenes62020-05-11 18:16:52fioddorMás imágenes traducidas52020-05-11 17:36:30fioddorAlgunas imágenes traducidas42020-05-10 00:47:37fioddorenlace a la página en español32020-05-10 00:45:37fioddorSe alinea con la versión 08 en inglés del 03 de mayo de 202022019-09-12 12:18:51fioddorSe crea la versión española.12019-09-12 12:11:29fioddorSe crea la versión española.
Quassel (Cliente IRC)Quassel es una aplicación IRC separada en 2 partes: un "núcleo" y un "cliente". Esto permite que el núcleo permanezca conectado a los servidores IRC recibiendo mensajes aunque el cliente esté desconectado. Ejecutando el servicio nucleo de Quassel FreedomBox puede mantenerte siempre en línea. Se pueden usar uno o varios clentes Quassel para conectarse intermitentemente desde escritorios o dispositivos móviles.
¿Para qué ejecutar Quassel?Muchos debates acerca de FreedomBox tienen lugar en el canal IRC irc://irc.debian.org/freedombox. Si tu FreedomBox ejecuta Quassel recolectará todos ellos mientras estás ausente, capturando las respuestas a tus preguntas. Recuerda que el proyecto FreedomBox es mundial y participa gente de casi todos los husos horarios. Usarás tu cliente para conectar al núcleo de Quassel y leer y/o responder cuando tengas tiempo y disponibilidad.
¿Cómo activar Quassel?En el interfaz web de FreedomBox selecciona Aplicaciones ve a Cliente IRC (Quassel) e instala la aplicación y asegúrate de que está habilitada Quassel Installation tu núcleo de Quassel se está ejecutando
Redirección de PuertosSi tu FreedomBox está detras de un router necesitarás configurar la redirección de puertos en tu router. Redirije los siguientes puertos de Quassel: TCP 4242 Ejemplo de configuración en el router: Quassel_PortForwarding_es_v01.png
ClientesHay disponibles clientes para escritorio y dispositivos móviles para conectar a Quassel.
EscritorioEn un sistema Debian puedes, p. ej. usar quassel-client. Los siguientes pasos describen cómo conectar el Cliente Quassel con el Núcleo de Quassel de tu FreedomBox. La primera vez que te conectes el Núcleo de Quassel se inicializará también. Abre el Cliente Quassel. Te guiará paso a paso para Conectarse al núcleo. Connect to Core Haz clic en el botón Añadir para abrir el diálogo Añadir cuenta de núcleo. Add Core Account Rellena cualquier cosa en el campo Nombre de la cuenta. Introduce el hostname DNS de tu FreedomBox en el campo Servidor. El campo Puerto debe tener el valor 4242. Pon el usuario y la contraseña de la cuenta que quieres crear para conectar con el Núcleo de Quassel en los campos Usuario y Contraseña. Si no quieres que se te pida la contraseña cada vez que arranques el cliente de Quassel marca la opción Recordar. Tras pulsar OK en el diálogo Añadir cuenta de núcleo deberías ver la cuenta en el diálogo Conectarse al núcleo. Connect to Core Selecciona la cuenta del núcleo recién creada y dale a OK para conectar con él. Si es la primera vez que te conectas a este núcleo verás un aviso de Certificado de seguridad no confiable y necesitarás aceptar el certificado del servidor. Untrusted Security Certificate Selecciona Continuar. Se te preguntará si quieres aceptar el certificado permanentemente. Selecciona Para siempre. Untrusted Security Certificate Si nadie se ha conectado nunca antes a este Núcleo Quassel antes verás un diálogo por pasos Asistente de configuración del núcleo. Selecciona Siguiente. {{attachment:quassel-client-6-core-configuration-wizard_es_v01.png|Core Configuration Wizard|width=504}n En la página Crear usuario administrador introduce el usuario y la contraseña que has usado antes para crear la conexión al núcleo. Selecciona Recordar la contraseña para que recuerde la contraseña para futuras sesiones. Haz clic en Siguiente. Create Admin User Page En la página Seleccionar un motor de almacenamiento selecciona SQLite y haz clic en Enviar. Select Storage Backend La configuración del núcleo está completa y verás un asistente Quassel IRC para configurar tus conexiones IRC. Haz clic en Siguiente. Welcome Wizard A continuación en la página de Configurar identidad pon un nombre y múltiples pseudónimos. Te presentarás con estos a otros usuarios de IRC. No es necesario dar tu nombre real. Los pseudónimos múltipes son útiles como suplentes cuando el primero no se pueda usar por cualquier motivo. Tras aportar la información haz clic en Siguiente. Setup Identity A continuación en la página de Configurar conexión de red pon el nombre de red que quieras y una lista de servidores a los que se deba conectar el Núcleo de Quassel para unirte a esa red IRC (por ejemplo irc.debian.org:6667). Setup Network Connection Selecciona un servidor de la lista y dale a Editar. En el diálogo Información del servidor pon el puerto 6697 (consulta la lista real de servidores y sus puertos seguros en la documentación de tu red) y haz clic en Usar conexión cifrada. Clic en OK. Esto es para asegurar que la comunicación entre tu FreedomBox y el servidor de la red IRC va cifrada. Server Info Server Info SSL Ya de vuelta en el diálogo Configuración de Conexión de Red proporciona una lista de canales IRC (como #freedombox) a los que unirte al conectarte a la red. Dale a Grabar y Conectar. Setup Network Connection Deberías conectar con la red y ver la lista de canales a los que te has unido en el panel Todas las conversaciones de la izquierda de la ventana principal del Cliente Quassel. Quassel Main Window Selecciona un canal y empieza a recibir mensajes de otros participantes del canal y a enviar los tuyos.
AndroidPara dispositivos Android puedes usar p.ej. Quasseldroid obtenido desde F-Droid introduce el núcleo, usuario, etc. Quasseldroid.png Por cierto el verbo alemán quasseln significa hablar mucho, rajar. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/QuickStart.raw.wiki b/doc/manual/es/QuickStart.raw.wiki new file mode 100644 index 000000000..859f5eb74 --- /dev/null +++ b/doc/manual/es/QuickStart.raw.wiki @@ -0,0 +1,124 @@ +#language es +#pragma section-numbers 2 +~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[de/FreedomBox/Handbuch/Schnelleinstieg|Deutsch]] - [[FreedomBox/Manual/QuickStart|English]] - Español -~ + +## BEGIN_INCLUDE += Guía de Inicio Rápido = + +== Lo que necesitas para empezar == + +La forma fácil es [[https://freedomboxfoundation.org/buy/|comprar]] un kit !FreedomBox. + +Alternativamente podrías optar por montarlo tu mismo reuniendo todas las piezas: + * Un [[es/FreedomBox/Hardware|dispositivo]] soportado (incluyendo cualquier dispositivo que pueda funcionar con Debian). En el resto de este manual lo llamaremos la !FreedomBox. + * Un cable de alimentación para tu dispositivo. + * Un cable de red ''Ethernet''. + * Una tarjeta ''microSD'' (o un medio de almacenamiento equivalente para tu dispositivo) preparado según las instrucciones de la página de [[es/FreedomBox/Download|Descargas]]. + +== Cómo empezar == + + 1. Conecta un extremo del cable de red al puerto ''Ethernet'' de tu !FreedomBox y el otro a tu router. + 1. Enciende la !FreedomBox. + * '''Nota:''' En la mayoría de computadoras monoplaca no esperes un efecto de salida en un monitor si lo conectas por HDMI porque el núcleo (kernel) del sistema podría no reconocerlo. Mira más abajo para aprender cómo acceder y controlar tu !FreedomBox desde la red. + 1. En el primer arranque !FreedomBox ejecutará su configuración inicial (las versiones más antiguas de !FreedomBox se reinician tras este paso). Este proceso podría llevar varios minutos en algunas máquinas. Después de darle unos 10 minutos aproximadamente, sigue con el siguiente paso. + * '''Nota:''' Esta espera y reinicio se necesitan a causa de un defecto conocido. /* esto está probablemente obsoleto */ + 1. Después de que tu !FreedomBox haya finalizado su configuración inicial puedes acceder a su interfaz web mediante tu navegador web. + * Si tu ordenador está conectado directamente a tu !FreedomBox a través de un segundo puerto ''Ethernet'' de la red local, puedes navegar a http://freedombox/ o a http://10.42.0.1/. + * Si tu ordenador soporta mDNS (GNU/Linux, Mac OSX o Windows con software mDNS instalado), puedes navegar a: http://freedombox.local/ (o a http://.local/) + * Si te manejas con el interfaz web de tu router, puedes buscar allí la dirección IP de tu !FreedomBox y navegar a ella. + * Si no están disponibles ninguno de estos métodos necesitarás averiguar la dirección IP de tu !FreedomBox. Puedes usar el programa "nmap" de tu ordenador para encontrar su dirección IP: + {{{ + nmap -p 80 --open -sV 192.168.0.0/24 (remplaza la ip/máscara de red con la que use tu router) + }}} + En la mayoría de los casos puedes mirar tu dirección IP actual y cambiar los últimos dígitos por 0 para encontrar tu red local, así: `XXX.XXX.XXX.0/24` + + Tu !FreedomBox aparecerá como una dirección IP con un puerto TCP 80 abierto usando el servicio `Apache httpd` sobre Debian. En el siguiente ejemplo estaría en `http://192.168.0.165`: + {{{ + Nmap scan report for 192.168.0.165 + Host is up (0.00088s latency). + PORT STATE SERVICE VERSION + 80/tcp open http Apache httpd 2.4.17 ((Debian)) + }}} + Si nmap no encuentra nada con el comando anterior puedes probar a remplazar `192.168.0.0/24` por `10.42.0.255/24`. + {{{ + nmap -n -sP 10.42.0.255/24 + }}} + El informe de escaneo mostrará algo similar a esto: + {{{ + Nmap scan report for 10.42.0.1 + Host is up (0.00027s latency). + Nmap scan report for 10.42.0.50 + Host is up (0.00044s latency). + }}} + En este ejemplo, la !FreedomBox está en `http://10.42.0.50`. (`10.42.0.1` es mi ordenador.) + + 1. Al acceder al interfaz web de !FreedomBox tu navegador te avisará de que comunica en modo seguro pero que considera invalido el certificado de seguridad. Tienes que aceptarlo porque el certificado es autogenerado en la !FreedomBox y "autofirmado" (el navegador podría denominarlo "no confiable", "no privado", "error de privacidad" o "emisor/autoridad desconocida"). Decir a tu navegador que ya lo sabes podría implicar accionar algunos botones como "Entiendo los riesgos", "proceder ... (inseguro)" o "Añadir excepción". Después de la instalación este certificado se puede cambiar a otro normal usando la opción ''Let's Encrypt''. + + . {{attachment:ui_insecure_connection-es.png|Aviso de certificado autofirmado|width=600}} + . {{attachment:ui_add_security_exception-es.png|Añadir excepción de seguridad|width=400}} + 1. La primera vez que accedes al interfaz web de tu !FreedomBox verás una página de bienvenida. Haz clic en el botón "Iniciar configuración" para continuar. + . {{attachment:ui_firstboot_welcome-es.png|Bienvenida|width=500}} + + Si has instalado !FreedomBox usando un paquete [[es/FreedomBox/Hardware/Debian|Debian]] se te pedirá una clave secreta. Esta clave se habrá generado durante la instalación del paquete Debian. Se puede leer en el archivo `/var/lib/plinth/firstboot-wizard-secret`. + 1. La siguiente página te pide un nombre de usuario y contraseña. Rellena el formulario y haz clic en "Crear Cuenta." + * 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 +Ahora puedes probar [[es/FreedomBox/Features|cualquier App]] disponible en !FreedomBox. + +== Orientándote == + +=== Página principal === + +La página principal es la que verás al acceder a la raíz web de tu !FreedomBox. También puedes acceder a ella haciendo clic sobre el logo de !FreedomBox de la esquina de arriba a la izquierda del interfaz web de !FreedomBox. + +La página principal tiene accesos directos a las apps instaladas que estén habilitadas. Haciendo clic en los accesos directos de aplicaciones web te llevarán a la página web correspondiente de cada app. Si son otro tipo de servicios hacer clic en los accesos directos te mostrará información acerca de cada servicio. + +{{attachment:ui_frontpage.png|Página principal|width=600}} + +{{attachment:ui_frontpage_with_app.png|Página principal|width=600}} + +=== Menú de Aplicaciones === + +Al Menú de Aplicaciones se accede por el icono de rejilla que está junto al logo de !FreedomBox. Esta página lista todas las apps disponibles para instalar en tu !FreedomBox. Haz click sobre el nombre de la app para visitar su página, desde la que podrás instalarla y configurarla. + +{{attachment:ui_apps.png|Apps|width=600}} + +=== Menú de Ayuda === + +Al Menú de Ayuda se accede por el icono del signo de interrogación de la esquina de arriba a la derecha. Incluye enlaces útiles y el manual de !FreedomBox. + +{{attachment:ui_help-es.png|Ayuda|width=600}} + +=== Menú del Sistema === + +Al Menú del Sistema se accede por el icono del engranaje de la esquina de arriba a la izquierda. Incluye páginas relacionadas con la configuración del sistema. + +{{attachment:ui_system.png|Sistema|width=600}} + +=== Menú del Usuario === + +En la esquina superior derecha se muestra el nombre del usuario actual. Un menú desplegable incluye opciones para editar el perfil del usuario o sacarle del interfaz web. + +{{attachment:ui_user_menu-es.png|Usuario|width=600}} + +=== Menú de Hamburgesa === + +El interfaz web de !FreedomBox's es autoadaptativo. En pantallas o ventanas de navegador estrechas las opciones del menú podrían estar ocultas. + +{{attachment:ui_burger_icon-es.png|User|width=600}} + +Esto se debe a que las opciones del menú han colapsado en el icono de hamburguesa mostrado en la esquina superior derecha de la ventana. Haz clic en él para desplegar el menú. + +{{attachment:ui_burger_menu-es.png|User|width=600}} + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Radicale.raw.wiki b/doc/manual/es/Radicale.raw.wiki new file mode 100644 index 000000000..d079a2f61 --- /dev/null +++ b/doc/manual/es/Radicale.raw.wiki @@ -0,0 +1,186 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Radicale|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Radicale (Calendario y Contactos) == +|| {{attachment:FreedomBox/Manual/Radicale/Radicale-icon_en_V01.png|icono de Radicale}} || + +'''Disponible desde''': versión 0.9 + +Con ''Radicale'' puedes sincronizar tus calendarios, listas de tareas y agendas de contactos personales entre varios ordendores, tabletas, y/o teléfonos inteligentes y compartirlos con tus amistades. Todo sin tener que permitir a terceros que accedan a tu información privada. + +=== ¿Porque debería usar Radicale? === + +Usando Radicale puedes evitar servicios centralizados como Google Calendar o Apple Calendar (iCloud) que explotan los datos de tus eventos y conexiones sociales. + +=== ¿Cómo configurar Radicale? === + +Primero el servidor Radicale necesita estar activado en tu !FreedomBox. + + * En el servicio !FreedomBox + 1. selecciona ''Apps'' + 1. ve a ''Radicale (Calendario y Libreta de contactos)'' e + 1. instala la aplicación. Tras completar la instalación asegúrate de que la aplicación está marcada como "habilitada" en el interfaz de !FreedomBox. Habilitar la aplicación arranca el servidor ''CalDAV/CardDAV'' Radicale. + 1. define los permisos de acceso: + * Solo el dueño de un calendario/libreta de contactos puede ver o hacer cambios + * Cualquier usuario puede ver cualquier calendario/libreta de contactos pero solo el dueño puede hacer cambios + * Cualquier usuario puede ver o hacer cambios en cualquier calendario/libreta + +Nota: Solo los usuarios dados de alta en !FreedomBox pueden acceder a Radicale. + +{{attachment:Radicale-Plinth.png}} + +Si quieres compartir un calendario solo con algunos usuarios determinados la manera más simple es crear un nuevo usuario común para ellos y compartir con ellos el nombre del usuario común y su contraseña. + +Radicale proporciona un interfaz web básico que solo soporta crear calendarios y libretas nuevos. Para añadir eventos o contactos se necesita una [[https://radicale.org/master.html#documentation/supported-clients/|aplicación cliente soportada]] externa. + +{{attachment:radicale_web.png}} + + * Crear calendarios y/o libretas usando el interfaz web + 1. Visita `https:///radicale/` + 1. Ingresa con tu cuenta de !FreedomBox + 1. Selecciona "Crear nuevo calendario o libreta" + 1. Proporciona un título y selecciona el tipo + 1. Opcionalmente, proporciona una descripción o selecciona un color + 1. Haz clic en "Crear" + 1. La página mostrará la URL de tu created nuevo calendario o libreta + +Ahora abre tu aplicación cliente para crear calendarios y/o libretas nuevos que usarán tu !FreedomBox y servidor Radicale. El sitio web de Radicale proporciona una [[http://radicale.org/clients/|lista de clientes soportados]] pero ''no'' uses las URLs que se mencionan allí; sigue este manual porque !FreedomBox usa otra configuración. A continuación se muestran los pasos para 2 ejemplos: + + * Ejemplo de configuración con el cliente ''Evolution'': + * Calendario + 1. Crea un calendario nuevo + 1. Selecciona el "Tipo" "CalDAV" + 1. Con "CalDAV" seleccionado aparecerán más opciones en el cuadro de diálogo. + 1. URL: `https:///radicale//.ics/` cambiando los elementos marcados entre `<>` de acuerdo a tu configuración. + * nota: la `/` inicial de la ruta es importante. + 1. Habilita "Usar una conexión segura." + 1. Nombre del calendario + {{attachment:Radicale-Evolution-Docu.png}} + * Lista de tareas: Añadir una lista de tareas es prácticamente igual que con un calendario. + * Contactos + * Sigue los mismos pasos anteriores reemplazando ''CalDAV'' por ''WebDAV'' y la extensión de la libreta por `.vcf`. + +=== Sincronizar via Tor === + +Configurar un calendario en !FreedomBox con Radicale sobre Tor es lo mismo que sobre la red en claro, en resumen: + + 1. Cuando hayas ingresado al interfaz web de !FreedomBox desde Tor haz clic en Radicale e introduce un usuario de tu !FreedomBox y su contraseña. + 1. Ingresa en el interfaz web de Radicale usando el usuario de tu !FreedomBox y su contraseña. + 1. Haz clic en "Crear libreta o calendario nuevo", proporciona un título, selecciona un tipo y haz clic en "Crear". + 1. Anota la URL, p.ej. `https://.onion/radicale///` cambiando los elementos marcados entre `<>` de acuerdo a tu configuración. + +Estas instrucciones son para ''Thunderbird/Lightning''. Nota: necesitarás estar conectado a Tor con el `Tor Browser Bundle`. + + 1. Abre Thunderbird, la extensión (''add-on'') ''Torbirdy'' y reinicia Thunderbird. (Quizá no haga falta.) + 1. En el interfaz Lightning, en el panel izquierdo bajo ''Calendario'' haz clic con el botón derecho del ratón y selecciona "Nuevo calendario". + 1. Selecciona "En la red" como localización de tu calendario. + 1. Selecciona "CalDAV" copia la URL, p.ej., `https://.onion/radicale///`. como localización cambiando los elementos marcados entre `<>` de acuerdo a tu configuración. + 1. Proporciona un nombre, etc. Haz clic en "Siguiente". Tu calendario está ahora sincronizando con tu !FreedomBox a través de Tor. + 1. Si no has generado un certificado con "Let's Encrypt" para tu !FreedomBox quizá necesites seleccionar "Confirmar Excepción de Seguridad" cuando se te indique. + +=== Sincronizar con tu teléfono Android === + +Hay varias Apps que admiten integración con el servidor ''Radicale''. Este ejemplo usa `DAVx5`, que está disponible p.ej. en [[https://f-droid.org/repository/browse/?fdid=at.bitfire.davdroid|F-Droid]]. +Si también quieres usar listas de tareas hay que instalar primero la app compatible [[https://f-droid.org/repository/browse/?fdid=org.dmfs.tasks|OpenTasks]]. + +Sigue estos pasos para configurar tu cuanta con el servidor ''Radicale'' de tu !FreedomBox. + + 1. Instala ''DAVx5''. + 1. Crea una cuenta nueva en DAVx5 haciendo clic en el botón flotante [+]. + 1. Selecciona la 2ª opción como se muestra en la primera imagen más abajo e introduce la URL base ''https:///radicale//'' (no olvides la `/` del final). DAVx5 averiguará las cuentas ''CalDAV'' y ''WebDAV'' del usuario. + 1. Sigue este video del [[https://www.davdroid.com/faq/existing-contacts-are-not-synced|FAQ de DAVx5]] para aprender cómo importar tus contactos existentes a ''Radicale''. + +'''Sincronizar contactos''' + 1. Haz clic en los menús de hamburguesa de ''CalDAV'' y ''CardDAV'' y selecciona "Refrescar ..." en caso de cuentas existentes o "Crear ..." en caso de cuentas nuevas (ver la 2ª captura de pantalla más abajo). + 1. Marca las cajas de las libretas y/o contactos que quieras sincronizar y haz clic en el botón de sincronización de la cabecera. (ver la 3ª captura de pantalla más abajo) + +{{attachment:DAVdroid-setup-account.png|DAVx5 account setup|width=288}} +{{attachment:DAVdroid-refresh.png|DAVx5 refresh|width=288}} +{{attachment:DAVdroid-sync-account.png|DAVx5 account sync|width=288}} + + +=== Usuarios Avanzados === + +==== Compartir recursos ==== +Arriba se mostrá una manera fácil de crear un recurso para un grupo de gente creando una cuenta dedicada común. Aquí de describe un método alternativo con el que se otorga acceso a un calendario a 2 usuarios `Usuario1` y `Usuario2`. Esto requiere acceso por SSH a la !FreedomBox. + + 1. crea un archivo `/etc/radicale/rights` + {{{ +[friends_calendar] +user: ^(Usuario1|Usuario2)$ +collection: ^.*/calendario_de_mis_amigos.ics$ +permission: rw + +# Dar permisos de escritura a los dueños: +[owner-write] +user: .+ +collection: ^%(login)s/.+$ +permission: rw + }}} + * `[calendario_de_mis_amigos]` es solo un identificador, puede ser cualquier nombre. + * La sección `[owner-write]` asegura que los dueños tengan acceso a sus propios archivos. + 1. Edita el archivo `/etc/radicale/config` y haz los siguientes cambios en la sección `[rights]` + + {{{ +[rights] +type = from_file +file = /etc/radicale/rights + }}} + 1. Reinicia el servidor Radicale o la !FreedomBox + +==== Importar archivos ==== +Si estás usando un archivo de contactos exportado desde otro servicio o aplicación hay que copiarlo a: /var/lib/radicale/collections//'.vcf. + +=== Migrar desde Radicale versión 1.x a versión 2.x === + +En Febrero de 2019 se actualizó Radicale en las versiones "en pruebas" (testing) de Debian desde la versión 1.x a la 2.x. La versión 2.x es mejor pero incompatible con los datos y la configuración empleados en la 1.x. El mecanismo automático de actualización de !FreedomBox que emplean las actualizaciones desatendidas no actualiza automaticamente la version 2.x de Radicale debido a cambios en los archivos de configuración. No obstante la version 19.1 de !FreedomBox, disponible en en las versiones "en pruebas" (testing) desde el 23 de Febrero de 2019, realizará la migración de los datos y la configuración a la versión 2.x de Radicale. No se requiere ninguna acción por parte de los usuarios típicos. Ocurrirá automáticamente. + +Si por algún motivo necesitas ejecutar a mano `apt dist-upgrade` en tu máquina Radicale se actualizará a 2.x y entonces tu !FreedomBox no podrá ejecutar esta actualización (ya que el proyecto de origen decidió eliminar las herramientas de migración de la versión 2.x de Radicale). Para evitar esta situación se recomienda el siguiente procedimiento para actualizar. + +{{{ +sudo su - +apt hold radicale +apt dist-upgrade +apt unhold radicale +}}} + +En cualquier caso, si ya has actualizado a Radicale 2.x sin ayuda de !FreedomBox necesitas realizar la migración de los datos y la configuración por tí mismo. Sigue este procedimiento: + +{{{ +sudo su - +tar -cvzf /root/radicale_backup.tgz /var/lib/radicale/ /etc/radicale/ /etc/default/radicale +apt install -y python-radicale +python -m radicale --export-storage=/root/radicale-migration +cp -dpR /root/radicale-migration/collection-root /var/lib/radicale/collections/collection-root/ +(elimina este directorio si ya existe. O mezcla los contenidos.) +chown -R radicale:radicale /var/lib/radicale/collections/collection-root/ +apt remove -y python-radicale +if [ -f /etc/radicale/config.dpkg-dist ] ; then cp /etc/radicale/config.dpkg-dist /etc/radicale/config ; fi +if [ -f /etc/default/radicale.dpkg-dist ] ; then cp /etc/default/radicale.dpkg-dist /etc/default/radicale ; fi +(Cuando FreedomBox 19.1 está disponble ve al interfaz web de FreedomBox y vuelve a configurar tu preferencia de compartición de calendario si no se muestra bien porque se habrá perdido durante la operación.) +}}} + +Notas: + * `python-radicale` es un paquete antigüo de la versión 1.x de Radicale que sigue disponible en las versiones "en pruebas" (testing) de Debian. Esto es un ''hack'' alternativo para emplear la funcionalidad `--export-storage` que es responsable de la migración de datos. Por desgracia esta funcionalidad ya no está disponible en Radicale 2.x. + * Los ficheros que acaban en `.dpkg-dist` solo existirán si has elegido "Conservar tu versión actualmente instalada" cuando se te preguntó durante la actualización a Radicale 2.x. El procedimiento anterior sobrescribirá la configuración antigüa con una nueva. No se necesitan cambios a los 2 ficheros de configuración salvo que hayas cambiado la preferencia de compartición de calendario. + * Nota: Durante la migración tus datos permanecen a salvo en el directorio `/var/lib/radicale/collections`. Los datos nuevos se crearán y usarán en el directorio `/var/lib/radicale/collections/collections-root/`. + * El comando `tar` hace una copia de seguridad de tu configuración y tus datos en `/root/radicale_backup.tgz` por si haces o algo va mal y quieres deshacer los cambios. + +=== Resolución de Problemas === + +1. Si estás usando !FreedomBox Pioneer Edition o instalando !FreedomBox sobre Debian Buster Radicale podría no estar operativo inmediatamente después de la instalación. Esto se debe a un defecto ya corregido posteriormente. Para superar el problema actualiza !FreedomBox haciendo clic en 'Actualización Manual' desde la app 'Actualizaciones'. Otra opción es simplemente esperar un par de días y dejar que !FreedomBox se actualice solo. Después instala Radicale. Si Radicale ya está instalado deshabilitalo y rehabilitalo después de que se complete la actualización. Esto arreglará el problema y dejará a Radicale trabajando correctamente. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Radicale.raw.xml b/doc/manual/es/Radicale.raw.xml deleted file mode 100644 index 078912122..000000000 --- a/doc/manual/es/Radicale.raw.xml +++ /dev/null @@ -1,25 +0,0 @@ -
es/FreedomBox/Manual/Radicale132020-05-30 19:46:20SunilMohanAdapaUpdate the title to emphasize app name over its generic name122020-05-24 06:32:26fioddorSe alinea con la versión 57 en inglés del 23 de mayo de 2020112020-05-22 10:11:41fioddorSe alinea con la versión 55 en inglés del 22 de mayo de 2020102020-05-15 17:00:38fioddorSe alinea con la versión 54 en inglés del 15 de mayo de 202092020-05-10 00:39:59fioddorSe alinea con la versión 52 en inglés del 03 de mayo de 202082019-09-06 08:16:54fioddorSe mejoran las referencias a Debian Testing en línea con la nomenclatura de https://www.debian.org/releases/72019-09-04 13:36:27fioddorSe completa la traducción.62019-09-04 13:26:30fioddorSe incorpora la traducción de una sección nueva.52019-09-04 12:55:18fioddorSe incorpora la traducción de una sección nueva.42019-09-04 12:52:32fioddorSe incorpora la traducción de una sección nueva.32019-09-04 12:40:55fioddorSe incorpora la traducción de una sección nueva.22019-09-04 12:23:33fioddorSe incorpora la traducción de una sección nueva.12019-09-04 12:00:49fioddorSe crea la versión española (traducción incompleta).
Radicale (Calendario y Contactos)Con Radicale puedes sincronizar tus calendarios, listas de tareas y agendas de contactos personales entre varios ordendores, tabletas, y/o teléfonos inteligentes y compartirlos con tus amistades. Todo sin tener que permitir a terceros que accedan a tu información privada.
¿Porque debería usar Radicale?Usando Radicale puedes evitar servicios centralizados como Google Calendar o Apple Calendar (iCloud) que explotan los datos de tus eventos y conexiones sociales.
¿Cómo configurar Radicale?Primero el servidor Radicale necesita estar activado en tu FreedomBox. En el servicio FreedomBox selecciona Apps ve a Radicale (Calendario y Libreta de contactos) e instala la aplicación. Tras completar la instalación asegúrate de que la aplicación está marcada como "habilitada" en el interfaz de FreedomBox. Habilitar la aplicación arranca el servidor CalDAV/CardDAV Radicale. define los permisos de acceso: Solo el dueño de un calendario/libreta de contactos puede ver o hacer cambios Cualquier usuario puede ver cualquier calendario/libreta de contactos pero solo el dueño puede hacer cambios Cualquier usuario puede ver o hacer cambios en cualquier calendario/libreta Nota: Solo los usuarios dados de alta en FreedomBox pueden acceder a Radicale. Radicale-Plinth.png Si quieres compartir un calendario solo con algunos usuarios determinados la manera más simple es crear un nuevo usuario común para ellos y compartir con ellos el nombre del usuario común y su contraseña. Radicale proporciona un interfaz web básico que solo soporta crear calendarios y libretas nuevos. Para añadir eventos o contactos se necesita una aplicación cliente soportada externa. radicale_web.png Crear calendarios y/o libretas usando el interfaz web Visita https://<dirección_IP_o_dominio_de_tu_servidor>/radicale/ Ingresa con tu cuenta de FreedomBox Selecciona "Crear nuevo calendario o libreta" Proporciona un título y selecciona el tipo Opcionalmente, proporciona una descripción o selecciona un color Haz clic en "Crear" La página mostrará la URL de tu created nuevo calendario o libreta Ahora abre tu aplicación cliente para crear calendarios y/o libretas nuevos que usarán tu FreedomBox y servidor Radicale. El sitio web de Radicale proporciona una lista de clientes soportados pero no uses las URLs que se mencionan allí; sigue este manual porque FreedomBox usa otra configuración. A continuación se muestran los pasos para 2 ejemplos: Ejemplo de configuración con el cliente Evolution: Calendario Crea un calendario nuevo Selecciona el "Tipo" "CalDAV" Con "CalDAV" seleccionado aparecerán más opciones en el cuadro de diálogo. URL: https://<dirección_IP_o_dominio_de_tu_servidor>/radicale/<usuario>/<nombre_del_calendario>.ics/ cambiando los elementos marcados entre <> de acuerdo a tu configuración. nota: la / inicial de la ruta es importante. Habilita "Usar una conexión segura." Nombre del calendario Radicale-Evolution-Docu.png Lista de tareas: Añadir una lista de tareas es prácticamente igual que con un calendario. Contactos Sigue los mismos pasos anteriores reemplazando CalDAV por WebDAV y la extensión de la libreta por .vcf.
Sincronizar via TorConfigurar un calendario en FreedomBox con Radicale sobre Tor es lo mismo que sobre la red en claro, en resumen: Cuando hayas ingresado al interfaz web de FreedomBox desde Tor haz clic en Radicale e introduce un usuario de tu FreedomBox y su contraseña. Ingresa en el interfaz web de Radicale usando el usuario de tu FreedomBox y su contraseña. Haz clic en "Crear libreta o calendario nuevo", proporciona un título, selecciona un tipo y haz clic en "Crear". Anota la URL, p.ej. https://<direccion_onion_de_tu_servidor>.onion/radicale/<usuario>/<código_del_calendario>/ cambiando los elementos marcados entre <> de acuerdo a tu configuración. Estas instrucciones son para Thunderbird/Lightning. Nota: necesitarás estar conectado a Tor con el Tor Browser Bundle. Abre Thunderbird, la extensión (add-on) Torbirdy y reinicia Thunderbird. (Quizá no haga falta.) En el interfaz Lightning, en el panel izquierdo bajo Calendario haz clic con el botón derecho del ratón y selecciona "Nuevo calendario". Selecciona "En la red" como localización de tu calendario. Selecciona "CalDAV" copia la URL, p.ej., https://<direccion_onion_de_tu_servidor>.onion/radicale/<usuario>/<código_del_calendario>/. como localización cambiando los elementos marcados entre <> de acuerdo a tu configuración. Proporciona un nombre, etc. Haz clic en "Siguiente". Tu calendario está ahora sincronizando con tu FreedomBox a través de Tor. Si no has generado un certificado con "Let's Encrypt" para tu FreedomBox quizá necesites seleccionar "Confirmar Excepción de Seguridad" cuando se te indique.
Sincronizar con tu teléfono AndroidHay varias Apps que admiten integración con el servidor Radicale. Este ejemplo usa DAVx5, que está disponible p.ej. en F-Droid. Si también quieres usar listas de tareas hay que instalar primero la app compatible OpenTasks. Sigue estos pasos para configurar tu cuanta con el servidor Radicale de tu FreedomBox. Instala DAVx5. Crea una cuenta nueva en DAVx5 haciendo clic en el botón flotante [+]. Selecciona la 2ª opción como se muestra en la primera imagen más abajo e introduce la URL base (no olvides la / del final). DAVx5 averiguará las cuentas CalDAV y WebDAV del usuario. Sigue este video del FAQ de DAVx5 para aprender cómo importar tus contactos existentes a Radicale. Sincronizar contactos Haz clic en los menús de hamburguesa de CalDAV y CardDAV y selecciona "Refrescar ..." en caso de cuentas existentes o "Crear ..." en caso de cuentas nuevas (ver la 2ª captura de pantalla más abajo). Marca las cajas de las libretas y/o contactos que quieras sincronizar y haz clic en el botón de sincronización de la cabecera. (ver la 3ª captura de pantalla más abajo) DAVx5 account setup DAVx5 refresh DAVx5 account sync
Usuarios Avanzados
Compartir recursosArriba se mostrá una manera fácil de crear un recurso para un grupo de gente creando una cuenta dedicada común. Aquí de describe un método alternativo con el que se otorga acceso a un calendario a 2 usuarios Usuario1 y Usuario2. Esto requiere acceso por SSH a la FreedomBox. crea un archivo /etc/radicale/rights [calendario_de_mis_amigos] es solo un identificador, puede ser cualquier nombre. La sección [owner-write] asegura que los dueños tengan acceso a sus propios archivos. Edita el archivo /etc/radicale/config y haz los siguientes cambios en la sección [rights] Reinicia el servidor Radicale o la FreedomBox
Importar archivosSi estás usando un archivo de contactos exportado desde otro servicio o aplicación hay que copiarlo a: /var/lib/radicale/collections/<usuario>/<nombre_del_archivo_de_contactos>'.vcf.
Migrar desde Radicale versión 1.x a versión 2.xEn Febrero de 2019 se actualizó Radicale en las versiones "en pruebas" (testing) de Debian desde la versión 1.x a la 2.x. La versión 2.x es mejor pero incompatible con los datos y la configuración empleados en la 1.x. El mecanismo automático de actualización de FreedomBox que emplean las actualizaciones desatendidas no actualiza automaticamente la version 2.x de Radicale debido a cambios en los archivos de configuración. No obstante la version 19.1 de FreedomBox, disponible en en las versiones "en pruebas" (testing) desde el 23 de Febrero de 2019, realizará la migración de los datos y la configuración a la versión 2.x de Radicale. No se requiere ninguna acción por parte de los usuarios típicos. Ocurrirá automáticamente. Si por algún motivo necesitas ejecutar a mano apt dist-upgrade en tu máquina Radicale se actualizará a 2.x y entonces tu FreedomBox no podrá ejecutar esta actualización (ya que el proyecto de origen decidió eliminar las herramientas de migración de la versión 2.x de Radicale). Para evitar esta situación se recomienda el siguiente procedimiento para actualizar. En cualquier caso, si ya has actualizado a Radicale 2.x sin ayuda de FreedomBox necesitas realizar la migración de los datos y la configuración por tí mismo. Sigue este procedimiento: Notas: python-radicale es un paquete antigüo de la versión 1.x de Radicale que sigue disponible en las versiones "en pruebas" (testing) de Debian. Esto es un hack alternativo para emplear la funcionalidad --export-storage que es responsable de la migración de datos. Por desgracia esta funcionalidad ya no está disponible en Radicale 2.x. Los ficheros que acaban en .dpkg-dist solo existirán si has elegido "Conservar tu versión actualmente instalada" cuando se te preguntó durante la actualización a Radicale 2.x. El procedimiento anterior sobrescribirá la configuración antigüa con una nueva. No se necesitan cambios a los 2 ficheros de configuración salvo que hayas cambiado la preferencia de compartición de calendario. Nota: Durante la migración tus datos permanecen a salvo en el directorio /var/lib/radicale/collections. Los datos nuevos se crearán y usarán en el directorio /var/lib/radicale/collections/collections-root/. El comando tar hace una copia de seguridad de tu configuración y tus datos en /root/radicale_backup.tgz por si haces o algo va mal y quieres deshacer los cambios.
Resolución de Problemas1. Si estás usando FreedomBox Pioneer Edition o instalando FreedomBox sobre Debian Buster Radicale podría no estar operativo inmediatamente después de la instalación. Esto se debe a un defecto ya corregido posteriormente. Para superar el problema actualiza FreedomBox haciendo clic en 'Actualización Manual' desde la app 'Actualizaciones'. Otra opción es simplemente esperar un par de días y dejar que FreedomBox se actualice solo. Después instala Radicale. Si Radicale ya está instalado deshabilitalo y rehabilitalo después de que se complete la actualización. Esto arreglará el problema y dejará a Radicale trabajando correctamente. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/RaspberryPi2.raw.wiki b/doc/manual/es/RaspberryPi2.raw.wiki new file mode 100644 index 000000000..a244c3e3d --- /dev/null +++ b/doc/manual/es/RaspberryPi2.raw.wiki @@ -0,0 +1,43 @@ +== Raspberry Pi 2 Model B == + +{{attachment:raspberrypi2.jpg|Raspberry Pi 2|width=640,height=428}} + +[[https://www.raspberrypi.org/products/raspberry-pi-2-model-b/|Raspberry Pi 2]] (Model B ) is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi Model B+ with much faster processor and more RAM. !FreedomBox images are built and tested for it. + +Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the [[FreedomBox/Manual/QuickStart|Quick Start page]] to access and control your !FreedomBox from network. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] for this hardware are available. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot into !FreedomBox. + +=== Availability === + + * Price: 35 USD + * [[https://www.raspberrypi.org/products/raspberry-pi-2-model-b/|List of official distributors]] + +=== Hardware === + + * Open Hardware: No + * CPU: 900 MHz quad-core ARM Cortex-A7 + * RAM: 1 GB + * Storage: MicroSD card slot + * Architecture: armhf + * Ethernet: 10/100, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: None + +=== Non-Free Status === + + * Non-free blobs required: boot firmware + * !WiFi: Not available + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +Raspberry Pi 2 image is licensed under Creative Commons Attribution-!ShareAlike 4.0 International license by [[https://commons.wikimedia.org/wiki/File:Raspberry_Pi_2_Model_B_v1.1_top_new_%28bg_cut_out%29.jpg|Multicherry]]. diff --git a/doc/manual/es/RaspberryPi3B+.raw.wiki b/doc/manual/es/RaspberryPi3B+.raw.wiki new file mode 100644 index 000000000..ba01fa000 --- /dev/null +++ b/doc/manual/es/RaspberryPi3B+.raw.wiki @@ -0,0 +1,41 @@ +== Raspberry Pi 3 Model B+ == + +{{attachment:raspberrypi3bplus.jpg|Raspberry Pi 3 Model B+|width=640,height=418}} + +[[https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/|Raspberry Pi 3 Model B+]] is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi 3 Model B with better Ethernet and a 5Ghz Wi-Fi. !FreedomBox "stable" and "testing" images are available for Raspberry Pi 3 Model B+. + +Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the [[FreedomBox/Manual/QuickStart|Quick Start page]] to access and control your !FreedomBox from network. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] for this hardware are available. Download the "stable" or "testing" image for Raspberry Pi 3 Model B+. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot into !FreedomBox. + +=== Availability === + + * Price: 35 USD + * [[https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/|List of official distributors]] + +=== Hardware === + + * Open Hardware: No + * CPU: 1.4GHz 64-bit quad-core ARMv8 CPU + * RAM: 1 GB + * Storage: MicroSD card slot + * Architecture: armhf + * Ethernet: 10/100/1000, RJ45 + * !WiFi: 802.11ac but requires non-free firmware, instead use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: None + +=== Non-Free Status === + + * Non-free blobs required: boot firmware + * !WiFi: Requires non-free firmware + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/RaspberryPi3B.raw.wiki b/doc/manual/es/RaspberryPi3B.raw.wiki new file mode 100644 index 000000000..dc0fac6d5 --- /dev/null +++ b/doc/manual/es/RaspberryPi3B.raw.wiki @@ -0,0 +1,44 @@ +## page was renamed from FreedomBox/Hardware/RaspberryPi3 +== Raspberry Pi 3 Model B == + +{{attachment:raspberrypi3.jpg|Raspberry Pi 3 Model B|width=640,height=421}} + +[[https://www.raspberrypi.org/products/raspberry-pi-3-model-b/|Raspberry Pi 3 Model B]] is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi 2 Model B with a 64-bit processor and on-board Wi-Fi. !FreedomBox "stable" and "testing" images are available for Raspberry Pi 3 Model B. + +Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the [[FreedomBox/Manual/QuickStart|Quick Start page]] to access and control your !FreedomBox from network. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +!FreedomBox SD card [[FreedomBox/Download|images]] for this hardware are available. Download the "stable" or "testing" image for Raspberry Pi 3 Model B. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot into !FreedomBox. + +=== Availability === + + * Price: 35 USD + * [[https://www.raspberrypi.org/products/raspberry-pi-3-model-b/|List of official distributors]] + +=== Hardware === + + * Open Hardware: No + * CPU: 1.2GHz 64-bit quad-core ARMv8 CPU + * RAM: 1 GB + * Storage: MicroSD card slot + * Architecture: armhf + * Ethernet: 10/100, RJ45 + * !WiFi: 802.11n but requires non-free firmware, instead use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: None + +=== Non-Free Status === + + * Non-free blobs required: boot firmware + * !WiFi: Requires non-free firmware + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +Raspberry Pi 3 image is licensed under Creative Commons Attribution-!ShareAlike 4.0 International license by [[https://commons.wikimedia.org/wiki/File:Raspberry_Pi_3_Model_B.png|Herbfargus]]. diff --git a/doc/manual/es/RaspberryPi4B.raw.wiki b/doc/manual/es/RaspberryPi4B.raw.wiki new file mode 100644 index 000000000..bdb219ef0 --- /dev/null +++ b/doc/manual/es/RaspberryPi4B.raw.wiki @@ -0,0 +1,54 @@ +== Raspberry Pi 4 Model B == + +{{attachment:raspberrypi4b.jpg|Raspberry Pi 4 Model B|width=640,height=424}} + +[[https://www.raspberrypi.org/products/raspberry-pi-4-model-b/|Raspberry Pi 4 Model B]] is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi 3 Model B+ with better processor and ability to drive multiple displays. A !FreedomBox "testing" image is available for Raspberry Pi 4 Model B. + +Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the [[FreedomBox/Manual/QuickStart|Quick Start page]] to access and control your !FreedomBox from network. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +Before downloading and using !FreedomBox you need to ensure that latest [[https://github.com/pftf/RPi4|Raspberry Pi 4 UEFI Firmware]] is available on an SD card. See [[https://github.com/pftf/RPi4#installation|instructions]] on how to create an SD card with this firmware. The gist is that you download the firmware zip files, erase the SD card, create a FAT partition, unzip the files to SD card and finally insert the SD card into the board. + +!FreedomBox images meant for all "arm64" hardware work well for this device. Currently only "testing" images work and "stable" images. However, the firmware must present in SD card. This means that !FreedomBox itself must be present on a different disk such as a USB flash disk or USB SATA disk. Follow the instructions on the download page to create a !FreedomBox USB disk and boot the device. These images also work well for USB 2.0 and USB 3.0 disk drives and the process for preparing them is same as for an SD card. + +An alternative to downloading these images is to install Debian on the device and then install !FreedomBox on it. + +=== Build Image === + +!FreedomBox images for this hardware can be built using [[FreedomBox/Maker|Freedom Maker]]. Use the target 'arm64' with distribution 'testing' to build the image for this board. + +=== Availability === + + * Price: 35 USD (2GB RAM) + * Price: 50 USD (4GB RAM) + * Price: 75 USD (8GB RAM) + * [[https://www.raspberrypi.org/products/raspberry-pi-4-model-b/|List of official distributors]] + +=== Hardware === + + * Open Hardware: No + * CPU: Broadcom BCM2711 SOC (4x Cortex-A72``@1.5GHz) + * RAM: 2 GB or 4GB or 8 GB + * Storage: MicroSD card slot + * USB: 2x USB 2.0, 2x USB 3.0, USB Type-C power supply + * Architecture: arm64 + * Ethernet: 10/100/1000, RJ45 + * !WiFi: 802.11ac but requires non-free firmware, instead use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + * SATA: None + +=== Non-Free Status === + + * Non-free blobs required: boot firmware + * !WiFi: Requires non-free firmware + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox + +Raspberry Pi 4 Model B image is licensed under Creative Commons Attribution-!ShareAlike 4.0 license by [[https://commons.wikimedia.org/wiki/File:Raspberry_Pi_4_Model_B_-_Top.jpg|Michael Henzler]]. diff --git a/doc/manual/es/ReleaseNotes.raw.wiki b/doc/manual/es/ReleaseNotes.raw.wiki new file mode 100644 index 000000000..e4f843c15 --- /dev/null +++ b/doc/manual/es/ReleaseNotes.raw.wiki @@ -0,0 +1,1319 @@ +<> + +Please check as well [[FreedomBox/Contribute|contribution]], [[FreedomBox/ProgressCalls|progress calls]], and [[FreedomBox/TODO|TODOs]] related pages. + +For more technical details, see the [[https://salsa.debian.org/freedombox-team/freedombox/blob/master/debian/changelog|FreedomBox changelog]]. + +## BEGIN_INCLUDE + += Release Notes = + +The following are the release notes for each !FreedomBox version. + +== FreedomBox 20.14 (2020-09-15) == + +=== Highlights === + + * apache: Disable mod_status (CVE-2020-25073) + * bepasty: New app for file upload and sharing + * matrixsynapse: Allow upgrade to version 1.19 + +=== Other Changes === + + * apps: Remove Coquelicot + * backups: Make app available by default + * debian: Add newline to end of /var/lib/plinth/firstboot-wizard-secret + * debian: Don't show first wizard secret on command line + * debian: Temporarily revert source package rename + * diagnostics: Prevent showing running status on diagnostics menu item + * doc: Add moinmoin wiki parser + * doc: Fix wiki links in manual + * ejabberd, mumble, wireguard: Update Apple app links + * ejabberd: Use new ruamel.yaml API and allow duplicate keys + * firewall: Show port forwarding info contextually + * firewall: Show port forwarding info in tabular format + * gitweb: Add ability to change default branch + * gitweb: Fix enable auth webserver component on app init + * help, networks: Clarify i18n different contexts for "Manual" + * i18n: Mark strings missed for translation + * ikiwiki: Validate a path when deleting wiki or blog + * js: Don't show running status on buttons pulled to right + * jsxc, sharing, wireguard: Add 'Learn more...' link for help pages + * locale: Update translations for Danish, Dutch, Galician, German, Hungarian, Italian, Spanish, Swedish, Russian, Turkish + * matrixsynapse: Perform a one time conversion to new config format + * matrixsynapse: Rename Riot to Element + * matrixsynapse: Use conf.d snippets + * radicale: Remove code to handle 1.x + * radicale: Stop service during backup and restore + * samba: Hide common system partitions + * snapshots: Clarify description for disabling yearly snapshots + * ssh: Disallow managing keys for the root user + * storage: Fix expanding partitions on GPT partition tables + * upgrades, security: Update the messages describing backports + * upgrades: Add first boot step to configure backports + * upgrades: Change backports activation message wording + * upgrades: Display correct backports info for unstable + * upgrades: security: Don't use technical term 'backports' in UI + * wireguard: Remove hardcoded Windows client version + +== FreedomBox 20.13 (2020-07-18) == + +=== Highlights === + + * upgrades: Update apt cache before manual update + * minidlna: Do not expose statistics over public web + +=== Other Changes === + + * backups: Allow remote repository usernames to start with numbers + * locale: Update translations for Chinese (Simplified), Hungarian, Kannada, Norwegian Bokmål, Spanish, Swedish + * security: Move backports notice to security page + * upgrades: Add button to activate backports if needed for current release + * debian: Rename source package from plinth to freedombox + +== FreedomBox 20.12.1 (2020-07-05) == + + * cfg, frontpage: Ignore errors while reading config and shortcuts + * locale: Update translations for French, German, and Norwegian Bokmål + +== FreedomBox 20.12 (2020-06-29) == + +=== Highlights === + + * apt: Recover from errors before installing apps or updating system + * apache: Add strict content security policy, sandbox and other security headers + * storage: Allow ejecting SATA disks + * configuration: Allow changes using .d drop-in files + +=== Other Changes === + + * configuration: Move default configuration into source code + * configuration: Read from multiple locations in /etc/ and /usr/share/ + * debian: Add ssl-cert and nscd as proper dependencies + * frontpage: Allow adding shotcuts using .d drop-in files + * frontpage: Read shortcuts from multiple locations in /etc/, /usr/share and /var/lib + * locale: Update translations for Czech, Danish, French, German, Russian, Spanish, Swedish, Telugu, Turkish + * storage: Automount system disks without partition table but ignore all loopback devices + * storage: Allow ejecting SATA disks + * storage: Show only physical disks and not all mount points + * upgrades: Skip enabling backports on testing and unstable + * upgrades: Show more logs + * ui: Show a spinner and disable button on form submit + +== FreedomBox 20.11 (2020-06-15) == + +=== Top Highlight === + + * locale: Add new translation for Arabic (Saudi Arabia) + +=== Other Changes === + + * javascript: Remove use of Turbolinks library + * locale: Update translations for French, Norwegian Bokmål, German, Swedish, Polish, and Spanish + * matrixsynapse: Handle upgrade to versions 1.15.x + * upgrades: Avoid manual update interruption when upgrading freedombox package + * upgrades: Don't enable backports on Debian derivatives + +== FreedomBox 20.10 (2020-06-01) == + +=== Top Highlights === + + * pagekite: Fix expired certificates causing connection failures + * tor: Fix problems with running a relay + +=== Other Changes === + + * backups: Add optional field - Name + * cockpit: Promote for advanced storage/firewalld/networking ops + * firewall: Don't show tun interface in internal zone warning + * firewall: Mention that internal services are available over VPN + * ikiwiki: Enable 'attachment' plugin by default + * locale: Update translations for Spanish, French, Russian, Norwegian Bokmål, Czech, Hungarian, and Greek + * minidlna: Add link to manual page + * minidlna: Fix internationalization for name of the app + * mldonkey: Add app to freedombox-share group + * openvpn: Use app toggle button and common app view + * radicale: Fix link in description to clients + * samba: Add clients information + * templates: Fix setup state check + * users: Avoid error when user's groups cannot be parsed + +== FreedomBox 20.9 (2020-05-18) == + +=== Top Highlights === + + * performance: Add app for system monitoring + * upgrades: Restart services and system when needed after upgrades + * System restart will happen at 02:00 local time + +=== Other Changes === + + * bind: Add service alias for bind9 -> named + * firewall: Reload firewalld so it works with newly installed services + * first_setup: Fix regression with logo not showing + * locale: Update translations for Norwegian Bokmål, German, Swedish, Spanish, and Russian + * mediawiki: Stop jobrunner during backup/restore + * minidlna: Stop service during backup/restore + * mumble: Stop service during backup/restore + * package: Fix error log when checking if package manager is busy + * performance: Launch the Cockpit graphs directly if possible + * quassel: Fix stopping service during backup/restore + * quassel: Use systemd sandboxing features + * samba: Change description to Network File Storage + * snapshot: Fix issues with restore and delete + * snapshot: Set as essential module + * storage: Auto-mount disks, notify of failing disks + * tor: Fix stopping service during backup/restore + +== FreedomBox 20.8 (2020-05-04) == + + * syncthing: Add service to freedombox-share group + * users: When adding service to sharing group, only restart if already running + * datetime: Ignore time synchronization service in containers and virtual machines + * minidlna: Make app installable inside unprivileged container + * web_server: Suppress warnings that static directories don't exist + * debian: Remove unused timer + * static: Use SVG logo during first wizard welcome step + * static: Reduce the size of the background noise image + * setup.py: Don't install/ship .po files + * static: Don't ship visual design file and unused images + * all: Update links to repository and project page + * coturn: Add app to manage Coturn TURN/STUN server + * mediawiki: Partial fix for installing on testing + * datetime: Disable diagnostics when no tests are available + * data: Print hostname and IP addresses before console login + * snapshot: Fix message when not available + * snapshot: Fix title + * mumble: Add Mumla to the list of clients + * locale: Update translations for Spanish, Telugu, Russian, German, French, and Swedish + +== FreedomBox 20.7 (2020-04-20) == + + * matrixsynapse: Fix initial installation and upgrade from backports + * gitweb: Improve error handling when creating repository + * locale: Update translations for French, Serbian, and Telugu + +== FreedomBox 20.6.1 (2020-04-11) == + + * users: Restore line of help text that was accidentally dropped + * debian: Add firmware-ath9k-htc to Recommends + * gitweb: Use proper ellipsis char when showing clone progress + * locale: Update translations for Norwegian Bokmål, German, French, Portuguese, Italian, Russian, and Serbian + +== FreedomBox 20.6 (2020-04-06) == + + * app: Ensure toggle buttons work independently of configuration form + * networks, monkeysphere: Make styling more specific to avoid interference + * syncthing: Update description to mention 'syncthing' group + * radicale: Support upgrade up to any 2.x version + * packages: Hold freedombox package during package installs + * users: Add component for managing users and groups + * app: Fix grammar in developer documentation string + * ikiwiki: Disable public edits of blog pages + * ikiwiki: Add moderation of blog comments + * firewalld: Support upgrade up to any 0.8.x version + * infinoted: Fix permissions of sync directory + * locale: Added Serbian translation + * locale: Update translations for Russian, French, German, Czech, Italian, Hindi, Telugu, and Spanish + +== FreedomBox 20.5.1 (2020-03-26) == + + * networks: Update label wording in topology form + * jsxc: Fix issue with serving static files + * debian: Separate binary packages for each language manual + * locale: Update translations for Norwegian Bokmål and German + +== FreedomBox 20.5 (2020-03-23) == + + * app: Fix description block in app header + * pagekite: Don't signal new domain on init if app is disabled + * pagekite: Don't attempt to notify about domain if app is disabled + * pagekite: Remove app enabled checking from getting configuration + * pagekite: On enable/disable, add/remove domain from names module + * pagekite: Fix an error message in custom services form + * matrixsynapse: Handle release of matrix-synapse 1.11 + * setup: Fix regression to force-upgrade caused by Info changes + * pagekite: Don't allow non-unique custom services + * index: Reintroduce clients button in front page + * upgrades: Don't ship apt backport preferences file + * upgrades: Use internal scheduler instead of systemd timer + * shadowsocks: Change default configuration + * shadowsocks: Fix incorrect setting of state directory + * shadowsocks: When editing configuration, don't re-enable + * mediawiki: Don't allow anonymous edits + * names: Fix Local Network Domain is not shown + * shadowshocks: Fix setting configuration on Buster + * locale: Update translations for Swedish, Spanish, and French + +== FreedomBox 20.4 (2020-03-09) == + + * apache: Handle transition to php 7.4 + * app: Fix showing app name in port forwarding information + * apps: Do not show status block if service is running + * i2p: New style app page layout + * locale: Update translations for French, Telugu, Spanish, and Swedish + * networks: Add first boot step for network topology wizard + * networks: Add form for network topology + * networks: Don't show router wizard if not behind a router + * networks, firewall: Support newer version of policykit + * networks: Fixes for networks wizards access and user experience + * networks: If topology wizard is skipped, skip router wizard too + * networks: Show router wizard before Internet connection type wizard + * plinth: Increase sqlite busy timeout from default 5s to 30s + * quassel: Fix unable to disable application without choosing a domain name + * shadowsocks: Move user settings to state directory + * storage: Directory selection form improvements + * transmission: Allow to submit download directory if it is creatable + * upgrades: Clean apt cache every week + * views: Improve template security + +== FreedomBox 20.3 (2020-02-24) == + + * apps: Update style for toggle button + * apps: Drop border shadow for app icon in mobile view + * apps: Show short description as secondary title + * apps: Remove css filters and glow from app icons + * cards: Remove the transition delay on hover effect + * system: Implement new style for cards + * framework: Generate secret key (existing sessions will get logged out) + * framework: Cleanup expired sessions every week + * networks: Add setting for internet connection type + * networks: Ask about internet connection type during setup + * shadowsocks: Fix shadowsocks not able to start + * jsxc: Bypass issue with stronghold to get the app working again + * monkeysphere: Fix regression with reading Apache configuration + * help: Fix attribute on download manual button + * firewall: Improve speed of some operations using DBus API + * css: Add missing license identifier on some CSS files + * deluge: Use safer method for editing configuration + * deluge: More reliable initial configuration setup + * samba: Add link to manual page + * searx: Update search engines for 0.16.0 + * openvpn: Fix spelling for Tunnelblick + * bind: Show served domains + * Update translations for German, Swedish, Italian, Spanish, Norwegian Bokmål, Hungarian, Polish, and French + +== FreedomBox 20.2 (2020-02-10) == + + * networks: Support virtual Ethernet (veth) devices + * diagnostics: Show firewall service status + * storage: Show disks if !FreedomBox is running in an unprivileged container + * service: Stop service not before but after disabling it + * users: Use more precise username validation + * sso, users: Turn off autocapitalization on the username field + * help: Fix anchor hidden under navbar + * searx: Fix installation issue for 0.16.0 + * firewall: Show Run Diagnostics button in app + * glib: Introduce method to schedule an operation at regular intervals + * notification: Show a drop down from main navbar for notifications + * storage: Show low disk space warning using notifications API + * upgrades: Show notification when !FreedomBox is updated + * security: Add Sandbox Coverage to report page + * matrixsynapse: Enable systemd sandboxing + * locale: Update translations for Telugu, French, Norwegian Bokmål, German, Spanish, and Swedish + +== FreedomBox 20.1 (2020-01-27) == + + * deluge: Allow to set a download directory + * deluge: Fix installation failure on slow machine + * storage: Make external disk mounts accessible to other users + * gitweb: Add link to the manual page + * style: Fix incorrect margins for containers in mobile view + * style: Fix responsiveness for app header + * network: Fix activating connections that don't have real devices + * wireguard: Add !WireGuard VPN app + * networks: Add router configuration page + * networks: Add first boot step for router config helper + * bind: Enable sandboxing for bind service + * locale: Updated translations for Dutch, Norwegian Bokmål, German, Spanish, Swedish, French, and Greek + +== FreedomBox 20.0 (2020-01-13) == + + * samba: Improve speed of actions + * deluge: Manage deluged service and connect automatically from web interface + * openvpn: Enable support for communication among all clients + * storage: Ignore errors resizing partition during initial setup + * storage: Make partition resizing work with parted 3.3 + * debian: Add powermgmt-base as recommended package + * openvpn: Enable IPv6 for server and client outside the tunnel + * networks: Fix crashing when accessing network manager D-Bus API + * mediawiki: Use a mobile-friendly skin by default + * mediawiki: Allow admin to set default skin + * matrixsynapse: Allow upgrade to 1.8.* + * security: Add explanation of sandboxing + * Update translations for Greek, German, Swedish, Hungarian, Norwegian Bokmål, and French + +== FreedomBox 19.24 (2019-12-30) == + + * app: Fix !JavaScript doesn't run on first visit + * samba: Add private shares + * firewall: Support upgrading firewalld to 0.8 + * deluge: Add systemd sandboxing features + * infinoted: Add systemd sandboxing features + * storage: Add systemd sandboxing features to udiskie service + * upgrades: Add systemd sandboxing features to repository setup service + * security: List whether each app is sandboxed + * mediawiki: Avoid delay in update script + * diagnostics: Use new component based API for all diagnostic tests + * minidlna: Fix showing clients information + * mediawiki: Fix problem with session cache failing logins + * locale: Update translations for French, German, Swedish, Greek, Hungarian, Norwegian Bokmål, and Dutch + +== FreedomBox 19.23 (2019-12-16) == + + * minidlna: New app for MiniDLNA (Simple Media Server) + * apps: Show app icons in app pages + * apps: Implement responsive layout for app pages + * samba: Recursively set open share directory permissions + * transmission: Add directory selection form + * mumble: Add option to set !SuperUser password + * cockpit: Extend apps description with access info + * cockpit: Add list of valid urls to access the app + * Update translations for French, German, Spanish, Portuguese, and Swedish + +== FreedomBox 19.22 (2019-12-02) == + + * samba: Add new app for Samba file sharing + * pagekite: Remove tabs in the configuration page + * openvpn: Fix text with manual link + * pagekite: Show existing services only if there are any + * pagekite: Move Custom Services under Configuration + * pagekite: Use the new app toggle button + * openvpn: Add client apps + * backups: Fix title not appearing + * diagnostics: Don't run on disabled modules + * apps: Remove link to webapps in app descriptions + * interface: Fix error with app toggle input + * templates: Add toolbar for apps + * toolbar: Move diagnostics button into dropdown menu + * ssh: Fix Avahi SFTP service file + * diagnostics: Fix IPv6 failures + * matrix-synapse: Fix installation of 1.5 from buster-backports + * app: Fix javascript constant redeclaration error + * ikiwiki: Move the create button to manage section + * gitweb: Move create button into manage section + * networks: Move actions button into connection section + * users: Move create button into users section + * locale: Update translations for French, German, and Swedish + +== FreedomBox 19.21 (2019-11-18) == + + * gitweb: Allow to import from a remote repository + * interface: Disable turbolinks on links that don't point to /plinth/... + * backups: Show proper error when SSH server is not reachable + * tor: Rename "Hidden Service" to "Onion Service" + * ejabberd: Handle case where domain name is not set + * tahoe: Mark Tahoe-LAFS as an advanced app + * searx: Set safe_search to Moderate by default + * backups: Make verify ssh host page string translatable + * backups: Simplify SSH fingerprint verification command + * doc: Fix unavailability of manual images + * tor: Fix port diagnostics by correcting port data type + * tor: Expect obfs service to be also available on IPv6 + * tor: Listen on IPv6 for !OrPort + * clients: implement launch button feature + * apps: Implement toggle button in apps pages + * Update translations for German, Hungarian, Swedish, Norwegian Bokmål, French, Polish + +== FreedomBox 19.20 (2019-11-04) == + + * doc: Add Spanish manual + * ssh: Add option to disable password authentication + * sharing: Fix wrong links on Apache2 directory index page + * gitweb: Set correct access rights after enabling application + * gitweb: Fix links leading to blank page + * gitweb: Set proper access after restoration of a backup + * snapshot: Sort snapshot list from newest to oldest + * infinoted: Add missing manual page link + * backups: Fix typo + * Update translations for German, Spanish, Swedish, Czech, French, Norwegian Bokmål, Hungarian + +== FreedomBox 19.19 (2019-10-21) == + + * gitweb: New app for simple git hosting + * ikiwiki: Allow full Unicode text in wiki/blog title names + * users: reload Apache2 to flush LDAP cache after user operations + * ssh: Show server fingerprints in SSH page + * frontpage: Show public shortcuts to all users regardless of group + * ikiwiki: Remove extra create button when no wiki/blog is present + * quassel: Add Let's Encrypt component for certificates + * Update translations for Czech, French, Bulgarian, Dutch, German, and Norwegian Bokmål + +== FreedomBox 19.18 (2019-10-07) == + + * diagnostics: Ensure that exceptions are reported as failures + * users: Rearrange UI to match with other apps + * upgrades, ikiwiki, networks, backups: Replace page tabs with buttons + * dynamicdns, i2p, pagekite, snapshot: Cleanup page templates + * deluge: Support deluge 2 by starting it properly + * minetest: Remove mod-torches no longer available in testing/unstable + * security: Add past vulnerabilities count, move report to new page + * Update translations for Spanish, Norwegian Bokmål, German + +== FreedomBox 19.17 (2019-09-23) == + + * firstboot: Add new help menu to firstboot navbar + * firstboot: Hide left menu during first boot as intended + * Update translations for Chinese (Simplified) and Czech + * Fix tests for letsencrypt and tor + +== FreedomBox 19.16 (2019-09-09) == + + * backups: Allow adding backup repositories on multiple disks + * help: Add buttons for contribute, support, and feedback + * action_utils: Workaround problem with setting debconf answers + * views: Fix failure in redirecting from language selection page + * manual: Move PDF download link to HTML manual page + * help: Convert help icon in the navbar to dropdown + * ejabberd: Fix listen port configuration for ejabberd 19.x + * cockpit, ejabberd: Prevent restart on freedombox startup + * ejabberd: Perform host/domain name operations only when installed + * logging: Improve formatting and reduce noise + * translations: Update Hungarian, German, Italian, French, and Norwegian Bokmål + +== FreedomBox 19.15 (2019-08-26) == + + * security: Hide vulnerability table by default + * names: Perform better layout of domain names table on small screens + * cockpit: Apply domain name changes immediately + * ejabberd: Prevent processing empty domain name + * config: Send hostname change signal only after fully processing it + * letsencrypt: Don't try to obtain certificates for .local domains + * avahi: Expose .local domain as a proper domain + * cockpit: Make essential and install by default + * tt-rss: Force upgrade to 18.12-1.1 and beyond + * updates: Allow matrix-synapse 1.3 to be installed for buster users + * javascript: Don't resubmit when refreshing the page + * storage: Fix regression with restoring backups with storage + * matrix-synapse: Use recommended reverse proxy configuration + * Update translations for German, Hungarian, and Norwegian Bokmål + +== FreedomBox 19.14 (2019-08-12) == + + * storage: Handle all device paths during eject + * storage: Fix incorrect internationalization when throwing an error + * upgrades: Use collapsible-button style for logs + * firewall: Allow automatic upgrade to 0.7.x + * upgrades: Handle release info change + * frontpage: Fix regression with loading custom shortcuts + * names: Add dynamic domain name + * names: Add button to configure each type of name + * names: Update page layout for clearer presentation + * names: Introduce new API for domain name handling + * api: Fix regression with listing only enabled apps in mobile app + * Update translations for Czech, Hungarian, French, Chinese (Simplified), Turkish, Polish, and Norwegian Bokmål + +== FreedomBox 19.13 (2019-07-29) == + + * backups: Make UI more consistent with other apps + * backups: Make backup location tables collapsible + * Updated translations for Chinese (Simplified), German, and Norwegian Bokmål + * help: Show security notice when backports are in use + * security: Show vulnerability counts + +== FreedomBox 19.12 (2019-07-22) == + + * sharing: Allow directories to be publicly shared + * backups: Add option to select/deselect all apps for backup or restore + * dbus: Allow plinth user to own !FreedomBox DBus service + * letsencrypt: Simplify renewal hooks implementation + * cockpit: Don't handle domains if app is not installed + * dynamicdns: Send domain added signal properly during init + * ejabberd: Backup and restore TLS certificates + * Started new Galician translation on Weblate + * Updated translations for Czech, Norwegian Bokmål, Hungarian, Spanish, Telugu, Chinese (Simplified), German, Turkish, and Russian + +== FreedomBox 19.2.2 (2019-07-17) == + +This release does not contain any functional changes, but fixes test failures when building the package. + +== FreedomBox 19.2.1 (2019-07-09) == + +This is a bugfix release for 19.2. + + * dbus: Allow plinth user to own !FreedomBox DBus service + +== FreedomBox 19.11 (2019-07-08) == + + * backups: Fixes to issues while adding SSH remotes: + * Improve UX of adding ssh remote + * Avoid creating duplicate SSH remotes + * Fix issue with repository not being initialized + * Verify SSH hostkey before mounting + * Allow SSH directory paths with : in them + * Require passphrase for encryption in add repository form + * Don't send passphrase on the command line + * Un-mount SSH repositories before deleting them + * matrixsynapse: Fix missing translation mark + * Started new Greek translation on Weblate + * Updated translations for Chinese (Simplified), Hungarian, Spanish, and Russian + +== FreedomBox 19.10 (2019-06-24) == + + * syncthing: Open firewall ports for listening and discovery + * radicale: Workaround issue with creating log directory + * Update translations for Turkish, German, Czech, Norwegian Bokmål, and Portuguese + * Introduce components for firewall, webserver, uwsgi, and daemons + +== FreedomBox 19.9 (2019-06-10) == + + * config: Add option to show advanced apps, which are hidden by default + * monkeysphere: Hide by default + * searx: Add option to allow public access to the application + * Introduce component architecture for apps, with components for menus and shortcuts + * Start new translation for Bulgarian + * Update translations for Turkish and Norwegian Bokmål + +== FreedomBox 19.8 (2019-05-27) == + + * Switch to using SVG icons for all apps. + * Updated translations for Czech, Norwegian Bokmål, Hungarian, German, Turkish, and Spanish. + +== FreedomBox 19.7 (2019-05-13) == + + * i2p: Include default favorites. + * Separate enabled and disabled apps. + * Display port forwarding info for apps. + * Added Slovenian translation. + * Updated translations for Dutch, German, Hungarian, Norwegian Bokmål, Polish, Portuguese, Telugu. + +== FreedomBox 19.6 (2019-04-29) == + + * i2p: Enable new application for I2P Anonymity Network. + * Updated translations for Czech, German, Norwegian Bokmål, and Turkish. + * letsencrypt: Provide link to configure domain if not configured. + * firewall: Show port numbers and types. + +== FreedomBox 19.5 (2019-04-15) == + + * storage: Use more reliable method to list disks and disk space usage. + * Updated translations for Russian and German. + +== FreedomBox 19.4 (2019-04-01) == + + * clients: Open web app in a new browser tab + * matrix-synapse: Change client diagnostics url + * minetest: Fix duplicate domain names being displayed in UI + * storage: Do not show an eject button on /boot partitions + * letsencrypt: Call letsencrypt manage_hooks with correct arguments + * dynamicdns: Install module by default + * storage: Don't check type of the disk for / and /boot + * storage: Don't log error when checking if partition is expandable + * Updated translations for Norwegian Bokmål, Czech, German, Hungarian, Spanish, German, and Russian. + +== FreedomBox 19.3 (2019-03-18) == + + * UI: Move tabs below descriptions. + * firewall: Style heading + * names: Add description + * pagekite: Change heading text + * ikiwiki: Consistent styling for delete warning page + * main: Show service version in logs + * setup: Organize data files into various apps + * Updated translations for Czech, Hungarian, Norwegian Bokmål, Spanish, German, French, Italian, and Turkish. + +== FreedomBox 19.2 (2019-03-02) == + + * config: Fix Ikiwiki entries not showing up as default apps + * config: Migrate default app configuration to new conf file + * config: Rename Default App to Webserver Home Page + * config: Add option to use Apache's default home page as home page + * config: Fix error when setting JSXC as the home page + * Disable Coquelicot for Buster release + * matrix-synapse: Fix LDAP login issue + * config: Revert changes in freedombox.conf to avoid conffile prompt + * openvpn: Migration from easy-rsa 2 to 3 for existing installations + * tor: Use fixed 9001 port for relaying + * package: Implement identifying packages that need conffile prompts + * setup: Trigger force upgrade for app that implement it + * bind: Handle conffile prompt during upgrade + * apache: Pre-enable necessary apache modules + * apache: Use cgid module instead of cgi + * openvpn: Make frontpage shortcut appear after an upgrade + * openvpn: Work around firewalld bug 919517 + * firewalld: Implement upgrading from 0.4.x to 0.6.x + * ttrss: Implement upgrade from 17.4 to 18.12 + * radicale: Add description of web interface + * ttrss: Add backup support + * security: Migrate access config to new file + * Updated translations for Czech, Hungarian, Norwegian Bokmål, Spanish, German, Telugu. + +== FreedomBox 19.1 (2019-02-14) == + + * radicale: Increment module version to trigger upgrade handling + * radicale: Remove obsolete diagnostics + * radicale: Fix server URLs in client info + * Updated translations for Czech, Norwegian Bokmål, and Spanish. + * setup: Add option to handle configuration prompts during install + * radicale: Simplify upgrading to newer packages + * matrixsynapse: Use Let's Encrypt certificates + +== FreedomBox 19.0 (2019-02-09) == + + * mldonkey: Add some more clients to the module page + * mldonkey: Add to the description the three available front-ends + * monkeysphere: Fix handling of multiple domains and keys + * monkeysphere: Fix regression with reading new apache domain config + * apache: Switch to mod_ssl from mod_gnutls + * mldonkey: Enable app + * upgrades: Fix priority for buster-backports version + * upgrades: Fix premature adding of buster-backports sources + * Updated translations for Czech, German, and Spanish + * Switched to a new version number scheme: YY.N + * YY is the year of release. + * N is the release number within that year. + +== Version 0.49.1 (2019-02-07) == + + * ui: Fix regression with configure button in home page. + * backups: Rename 'Abort' buttons to 'Cancel'. + * backups: Use icon for add repository button. + * backups: Move subsubmenu below description. + * backups: Add title and description to other pages. + * backups: Add link to manual page. + * backups: Fix styling for upload size warning. + * backups: Increase timeout for SSH operations to 30 seconds. + * letsencrypt: UI: Fix checkbox disabling. + * datetime: Switch from chrony to systemd-timesyncd. + * Updated translations for Czech, Norwegian Bokmål, and Spanish. + +== Version 0.49.0 (2019-02-05) == + + * security: Update javascript for Content Security Policy. + * help: Use correct package to determine available version. + * repro: Disable app due to issues with Debian package. + * ui: Fix regression with card icon style in front page. + * js: Support full librejs compatibility. + * js: Remove javascript license link from footer. + * backups: Remove incorrectly set buffer size during download. + * backups: Fix incomplete download archives. + * backups: Improve performance of backup download. + * radicale: Handle migration from 1.x to 2.x. + * datetime: Switch from ntp to chrony. + * backports: Add buster-backports to apt sources list. + * Updated translations for Czech, Norwegian Bokmål, and Hungarian. + +== Version 0.48.0 (2019-01-28) == + + * Updated translations for Czech, Hungarian, German, and Norwegian Bokmål. + * UI improvements: + * Fix top margin for content containers. + * Fix setting width of card-list at various page sizes. + * Show help nav item text when navbar is collapsed. + * Hide restart/shutdown items when navbar is collapsed. + * Compact pages on extra small screen sizes. + * Backups improvements: + * Add backup/restore support for syncthing and openvpn. + * Upgrade apps before restoring them + * Fix showing not-installed apps in create backup page + * Automatically install required apps before restore. + * Add a loader to the restore button to indicate progress. + * Serve default favicon for apps that don't provide one. + * radicale: Fix issue with configuration changes not applying. + * storage: Fix false error message in log when visiting home page. + * infinoted: Handle timeout issue when stopping daemon during setup. + * matrix-synapse: Fix startup error caused by bind_address setting. + * radicale: Avoid changes to conffile for radicale 2.x. + * help: Fix showing status logs when an error occurs. + * fail2ban: Enable bans for apache auth failures. + * mldonkey: Initial work on new module for the eDonkey network. + * Not available yet, due to bug in package. + +== Version 0.47.0 (2019-01-14) == + + * Show Gujarati in the list of languages. + * Replace glyphicons with forkawesome icons. + * Snapshots: + * Change configuration to avoid filling up disk. + * Handle "Config in use" error. + * Update descriptions and configuration options. + * Firewall: Fix issue with transition from iptables. + * Security: Switch to Argon2 password hash. + * Cockpit: Add link to manual page and update description. + * Radicale: Add initial support for radicale 2.x. + * Setup: + * Handle showing setup page after app completes installation. + * Optimize installation in-progress checks and refresh time. + +== Version 0.46.0 (2018-12-31) == + + * Updated translations for Czech, German, Spanish, Ukrainian, and Norwegian Bokmål. + * Use systemd journal for logging. + * Rename plinth binary package to "freedombox", and merge freedombox-setup package into it. + +== Version 0.45.0 (2018-12-17) == + + * Storage: Merge list of removable media into existing table. + * Backups: Allow remote backups to SSH servers using sshfs. + * Backups: Removed asking for backup archive name. + * Automatically handle future versions of PHP. + * Updated translations for Hungarian, Czech, Spanish, Chinese (Simplified), Italian, Norwegian Bokmål, French, and German. + +== Version 0.44.0 (2018-12-03) == + + * UI: Add card style and gray noise background to apps pages. + * UI: Fix distortion of the client apps buttons. + * ejabberd: Handle BOSH port change from TCP 5280 to 5443. + * Minetest: Update mods list to available Debian packages. + * Firewall: Use nftables instead of iptables. + * Snapshots: Fix default snapshot listing. + * Snapshots: Show description above either tab. + * Snapshots: Allow snapshots to be selected for deletion. + * Translations: Updated Czech, Norwegian Bokmål, Spanish, German, and Portuguese. + +== Version 0.43.0 (2018-11-19) == + + * Backups improvements: + * Allow backups to be downloaded directly, without export step. + * Restore directly from uploaded backup. + * Avoid error for apps with no data to backup. + * Show free disk space on upload and restore page. + * Do not limit maximum upload size. + * openvpn: Migrate to easy-rsa 3 and fix setup issues. + * Make single sign-on tickets valid for 12 hours. + * Use consistent terminology for updates. + * Updated translations for Czech and Portuguese. + +== Version 0.42.0 (2018-11-05) == + + * Fix wrong color in mobile menu + * snapshot: Fix broken snapshot management after snapper update + * Enable backup/restore for tor, upgrades, monkeysphere, letsencrypt, tahoe + * monkeysphere: Handle importing new OpenSSH format keys + * udiskie: unmount drive as superuser + * Updated translations for Telugu, Indonesian, and Italian + +== Version 0.41.0 (2018-10-22) == + + * Enable backup/restore for datetime, deluge, avahi, backups, bind, security, snapshot, ssh, firewall, diagnostics, names, power, and storage. + * snapshot: Fix issue with setting configuration. + * backups: Fix backup archives ownership issue. + * backups: Fix issue with showing exports from disks without labels. + * backups: Don't rely on disk labels during export/restore. + * backups: Fix downloading extracted archive files. + * Updated translations for Norwegian Bokmål, French, Russian, and Spanish. + +== Version 0.40.0 (2018-10-08) == + + * Backups + * Enable backup/restore for mumble, privoxy, roundcube, searx, jsxc, coquelicot, transmission, quassel, shadowsocks, sharing, pagekite, and cockpit. + * Allow backup archives to be downloaded/uploaded through browser. + * mediawiki: Backup/restore settings as well as data. + * User Interface + * Change card text style and position. + * Change maximum cards per row. + * Add tint effect on card icons under "Apps". + * mediawiki: Run update script for 1.31 upgrade. + * customization: Show custom shortcuts on frontpage. + * Updated translations for Norwegian Bokmål, Portuguese, Spanish, Czech, German, French, and Italian. + +== Version 0.39.0 (2018-09-24) == + + * Updated translations for Hungarian and Norwegian Bokmål. + * Merge Removable Media (udiskie) into Storage module. + * Add Backups module for backing up apps data. + +== Version 0.38.0 (2018-09-10) == + + * mediawiki: Enable SVG support for !MediaWiki + * upgrades: Clean up old kernel packages during automatic upgrades + * Make the progress bar at the top of the page more visible. + * Updated translations for Norwegian Bokmål, Czech, Russian, German, Hungarian, and Spanish. + +== Version 0.37.0 (2018-08-27) == + + * Updated translations for Czech, Norwegian Bokmål, Russian, Spanish, Hungarian, and Dutch. + * install: Use Post/Response/Get pattern for reloads. + +== Version 0.36.0 (2018-08-13) == + + * Updated translations for Hindi, Spanish, Russian, Telugu, German, Hungarian, Czech, and French + * ejabberd: Remove deprecated settings from already existing config files + * mediawiki: Fix issue with re-installation + * mediawiki: Enable Instant Commons + * mediawiki: Fix images throwing 403s + * turbolinks: Reload page using !JavaScript + * Add Lato woff2 fonts + * Disable launch button for web client when not installed + +== Version 0.35.0 (2018-07-30) == + + * configuration: Add an option to set a default app for !FreedomBox. The root URL path (`https://domainname/`) will redirect to the selected app. + * ejabberd: Remove deprecated `iqdisc` setting. To apply this fix, disable and then re-enable the Message Archive Management setting. + * ejabberd: Replace logo with original version. + * mediawiki: Enable short URLs, which look like `https://domainname/mediawiki/ArticleName`. + * radicale: Clarify description for shared calendar/addressbook. + * storage: Handle mount points with spaces. + * udiskie: Add button to eject drives. + * udiskie: Also show read-only filesystems. + * udiskie: Remove internal networks warning. + * udiskie: Show special message when no storage device available. + * Add turbolinks library for smoother navigation. + * Removed extra text from icons for mediawiki, radicale, and tahoe-lafs. + * Updated translations for Russian, Spanish, Dutch, Hungarian, Hindi, Italian, Telugu, German, and Norwegian Bokmål. + +== Version 0.34.0 (2018-07-16) == + + * Prompt for secret during firstboot welcome + * (Does not apply to downloadable !FreedomBox images, but only when installed using freedombox-setup package.) + * Updated translations for Italian, Dutch, Hindi, Hungarian + +== Version 0.33.1 (2018-07-04) == + + * Fix issue where editing a user would remove them from admin group + * Updated translations for Hungarian, Czech, Spanish, Russian, Hindi + +== Version 0.33.0 (2018-07-02) == + + * Updated translations for Hungarian, Norwegian Bokmål, Spanish, Russian, Czech, Hindi, Dutch, Italian + * firewall: Display information that a service is internal only + * users: Don't show Create User link to non-admin users + * users: Redirect to users list on successful user creation + * packages: Show button to refresh package lists when a package is not available for install + * Only show front page shortcuts that a user is allowed to access + * Restrict removal of last admin user + * Use logos instead of icons in the apps page + * udiskie: New module for automatic mounting of removable media + +== Version 0.32.0 (2018-06-18) == + + * Apply new card based design + * Fix client info table size and flickering + * first-setup: Automatically expand root partition + * mediawiki: Enable image uploads + * mediawiki: Make private mode and public registrations mutually exclusive + * mediawiki: Hide frontpage shortcut when private mode is enabled + * Updated translations for Norwegian Bokmål, Czech, Spanish, Russian, Hindi, Telugu, Italian, Dutch, German, and Hungarian + +== Version 0.31.0 (2018-06-04) == + + * Updated translations for Czech, Spanish, Russian, German, Italian, Hindi, Telugu, and Norwegian Bokmål + * mediawiki: Added private mode option + * users: Fix user permissions not being saved + * users: internationalize a string + * mediawiki: Run update script for 1.30 upgrade + * shortcuts: Fix urls for ikiwiki shortcuts + +== Version 0.30.0 (2018-05-21) == + + * Updated translations for Russian, Italian, Norwegian Bokmål, Hungarian, and Hindi + * setup: Remove unavailable as a state in setup_helper + +== Version 0.29.1 (2018-05-08) == + + * security: Fix issue with Plinth locked out from sudo + * Updated translations for Czech and Spanish + +== Version 0.29.0 (2018-05-07) == + + * security: Allow console login access to user plinth + * Add an option to enable/disable public registrations in mediawiki + * tt-rss: Skip the check for SELF_URL_PATH + * searx: Fix issue with uwsgi crashing + * Updated translations for Czech, Spanish, German, Norwegian Bokmål, and Italian + +== Version 0.28.0 (2018-04-23) == + + * setup: disable install button for currently unavailable apps + * Add locale for Lithuanian (lt) + * Translation updates for Italian, Czech, Russian, Spanish, German, Norwegian Bokmål, Telugu, and Dutch + +== Version 0.27.0 (2018-04-09) == + + * middleware: Skip 'installed' message for essential apps + * users: Fix admin group appearing twice in permissions + * apps: Fix app names and short descriptions not being translated + * snapshots: Move manual page link to the index page + * UI: Fix progress bar not appearing + * snapshots: Fix for permissions issue when updating configuration + * snapshots: Add option to enable/disable software installation snapshots + * Translation updates for Italian, Czech, Russian, Spanish, Dutch, German, Norwegian Bokmål, and Ukrainian + +== Version 0.26.0 (2018-03-26) == + + * snapshots: Update description + * searx: Rewrite url from /searx to /searx/ + * manual: Link to manual from each service + * Workaround security issues in django-axes + * apache: Only regenerate snake oil cert when needed + * apache: Explicitly enable the latest version of PHP module + * apache: Increase module version number to fix php7.2 + * Update translations for Chinese (Simplified), Russian, Czech, German, Norwegian Bokmål, Hungarian, Spanish, and Italian + +== Version 0.25.0 (2018-03-12) == + + * sharing: Add app for sharing disk folders. + * ttrss: Update list of client apps. + * infinoted: Allow setup to recover after timeout issue. + * snapshots: Add configuration tab with settings for time-based snapshots. + +== Plinth v0.24.0 (2018-02-26) == + + * Add file-sharing application Coquelicot. + * Add metasearch engine application Searx. + * Add locale for Hungarian (hu). + * mediawiki: Allow shortcut to be publicly visible on front page. + * clients: Add and correct Client Apps. + * locale: Preferred language can be set in each user's profile. + * locale: Anonymous users can select preferred language. + * config: Remove language selection from config page. + * matrixsynapse: Fix mail attribute for ldap login. + +== Plinth v0.23.0 (2018-02-12) == + + * snapshots: Modify configurations to reduce disk usage. + * snapshots: Skip currently active snapshot when deleting all snapshots. + * jsxc: Use consistent url format. + * sso: Increase timeout to 60 minutes. + * theme: Change font from Helvetica to Lato. + * Translation updates for Czech, German, Gujarati, and Telugu. + +== Plinth v0.22.0 (2018-01-30) == + + * matrix-synapse: Make sure configuration file does not get corrupted. + * tor: Show enabled status properly. + * first_setup: Fix not showing admin user creation step. + * Migrate from !GitHub to Salsa + * Migrate from CirceCI to !GitLab CI on Salsa. + * Translation updates for Czech, Dutch, Gujarati, Hindi, Russian and Telugu. + * Started new translation for Ukrainian. + +== Plinth v0.21.0 (2018-01-15) == + + * navigation bar: Change label from 'Configuration' to 'System'. + * storage: Removed beta warning for expanding partition. + * groups: Consistently show available user groups, even before applications are installed. + * syncthing: Restrict administration to users in "syncthing" group. + * help: Show menu on smaller screens also. + * diagnostics: Enable the "Run Diagnostics" button when applications are enabled but not running. + +== Plinth v0.20.0 (2018-01-01) == + + * bind: Don't use forwarders by default + * ejabberd: Remove redundant button Client Apps + * mediawiki: Add wiki application + * users: Make sure first run actually works + * bind: Add information about current utility + +== Plinth v0.19.0 (2017-12-18) == + + * ejabberd: Use dynamic reload instead of restart when changing configuration. + * manual: Make manual available as a PDF download. + * minetest: Show domain information for users to connect to minetest. + * snapshots: Add button to delete all snapshots. + * snapshots: Add option to enable/disable automatic timeline snapshots. + * users: Add groups for bit-torrent and feed-reader, available when these applications are installed. + +== Plinth v0.18.0 (2017-12-04) == + + * Add Shadowsocks client with socks5 proxy. + * Fix SSO regressions and conflict with captcha. + * transmission: Fix sso not being enabled on upgrade. + * avahi: Add service for !FreedomBox discovery. + * Add client information for modules. + +== Plinth v0.17.0 (2017-11-20) == + + * transmission: Enable Single Sign On. + * cockpit: Add short description to frontpage shortcut. + * fail2ban: Fix spelling and sentence structure. + +== Plinth v0.16.0 (2017-11-06) == + +=== Added === + * Add mobile, web and desktop client info for modules. + * Enable django !SecurityMiddleware to improve security ratings. + * cockpit: New module for server administration and web terminal. + +=== Fixed === + * letsencrypt: Fix internal server error when obtaining a certificate. + * ejabberd: Fix LDAP server entry in config file during setup. + * jsxc: Fix outdated URLs for connecting to local ejabberd server. + +== Plinth v0.15.3 (2017-10-20) == + +=== Changed === + + * Rename Disks to Storage. + * Rename Snapshot to Storage Snapshots. + * tt-rss: Enable API access by default. + * Allow access to Plinth from outside the LAN. + * matrix-synapse: Disable public registration by default. + * power: Merge actions into the user dropdown. + +=== Added === + + * Add locales for Kannada (kn) and for Bengali (bn). + * ejabberd: Use Let's Encrypt certificate, also across renewals. + * matrix-synapse: Add enable/disable public registrations. + * Add captcha validation on 3 failed attempts. + * matrix-synapse: Enable LDAP integration. + * letsencrypt: Automatically obtain and revoke SSL certificates. + +=== Fixed === + + * Fix front page label names. + * Fix vertical alignment of shortcut icons. + * storage: Fix issue with locales that use other decimal separators. + * Make tt-rss api accessible using Apache basic auth. + * letsencrypt: Handle case where current domain is empty. + * Handle both admin and non-admin user names in update user template. + +== Plinth v0.15.2 (2017-09-24) == + +=== Added === + + * letsencrypt: Show more info on cert validity status. + * letsencrypt: Add option to delete certificates. + * letsencrypt: Add option to let Plinth manage certbot's renewal hooks. + * power: Warn if a package manager is running before shutdown/restart. + * security: Install and manage fail2ban. + * names: Include domain and services from dynamicdns. + * disks: Add low disk space warning to system and disks page. + * ssh: New application to manage SSH server. + * Add api module to get enabled services and access info. + * Add Django password validators. + * ejabberd, ikiwiki, ttrss: Add user login descriptions. + +=== Removed === + + * diaspora: Disable for this release due to issues affecting package. + * Remove help from navbar before firstboot complete. + +=== Fixed === + + * i18n: Don't use backslash-newline for wrapping long lines. + * radicale: Update link to documentation. + * sso: Upgrade crypto to 4096-bit RSA and SHA-512. + * Users: Allow non-admin users to log out. + +=== Changed === + + * letsencrypt: Make Let's Encrypt an essential module. + * UI: Make apps and configure pages responsive on small screens. + * Make help accessible for logged-in non-admin users. + +== Plinth v0.15.0 (2017-07-01) == + + * Added Tahoe-LAFS module for distributed file storage. + * Added Diaspora* module for federated social networking. + * Currently only available in "contrib" repository. + * New Locales for Czech (cs) and Tamil (ta). + * Added SSO using auth_pubtkt for Syncthing, TT-RSS, and the Repro admin panel. + * If you are logged in to Plinth, you will be automatically logged in to these web apps. + * ejabberd: Added option to enable/disable Message Archive Management. + * help: Added Debian release name to about page. + * firstboot: De-bloat first welcome screen. + * Pinned footer to the bottom of the viewport. + * disks: Restrict precision of reported available space on root partition. + * diagnostics: Disable button if app/service is not running. + * help: Only show help pages if user is logged in. + * navbar: Moved logout to user drop-down and added a new power drop-down. + * disks: Show disabled partition resize option if no space is available. + * Added line break to titles to fix frontpage layout. + * syncthing: Fixed typos and clarity in description. + * firewall: Fix 500 error when firewalld is not running. + * setup: Disable install/upgrade when dpkg/apt is running. + * disks: Use information from lsblk for more accuracy. + * datetime: Show timezone properly when it not in expected list. + +== Plinth v0.14.0 (2017-04) == + + * tor: Added option to use upstream bridges. + * openvpn: Added shortcut to front page, shown only when logged-in. + * openvpn: Non-admin users can download their own profiles. + * Added new locales for Hindi (hi) and Gujarati (gu). + * Added Syncthing module for file synchronization. + * Added Matrix Synapse as chat server with groups, audio and video. + * Require admin access for all system configuration pages. + * Changed appearance of topbar and footer. + * openvpn: Regenerate user key or certificate if empty. + * disks: Workaround issue in parted during resize. + +== Plinth v0.13.1 (2017-01-22) == + + * Two new apps were added: + * Gobby Server (infinoted) for collaborative editing of text documents + * Domain Name Server (BIND), in system menu + * Added !JavaScript license web labels to provide partial support for LibreJS. + * Added basic configuration form for Minetest server. + * Added indicator to Help->About page if new Plinth version is available. + * Show app logos on front page instead of generic icons. + * Prevent anonymous users from accessing setup pages. + * Split Chat Server (XMPP) app into Chat Server (ejabberd) and Chat Client (jsxc). + +== Plinth v0.12.0 (2016-12-08) == + + * Open up RTP ports in the firewall for repro (SIP server). + * Front page shortcuts for services show a Configure button in the details box for logged-in users. + * Add mods packages to be installed with Minetest server. + * Fix issue with reading Dynamic DNS status as non-root user. + * After the hostname is changed, ensure the domain name is still set correctly. + * Allow the domain name to be cleared, and properly set the configuration in this case. + * On the Certificates (Let's Encrypt) page, show a more informative message when no domains are configured. + * On the Chat Server (XMPP) page, show more clearly if domain is not set. + * Apps that require login will not be shown on the front page, unless the user is logged in. + * Show status block for News Feed Reader (Tiny Tiny RSS). + * Change appearance of front page with larger icons and repositioned text. + * Firewall page only lists services that have been setup. The port lists are collapsible under each service. + * Support configuring IPv6 networks. + * Make it less likely to accidentally delete the only Plinth user. + * Updated to work with JSXC 3.0.0 (XMPP web client). + +== Plinth v0.11.0 (2016-09-29) == + + * Added loading icon for additional busy operations. + * Added basic front page with shortcuts to web apps, and information about enabled services. + * networks: Add batctl as dependency, required for batman-adv mesh networking. + * users: + * Fixed checking restricted usernames. + * Display error message if unable to set SSH keys. + * Flush nscd cache after user operations to avoid some types of errors. + * monkeysphere: + * Adopted to using SHA256 fingerprints. + * Sort items for consistent display. + * Handle new uid format of gpg2. + * Fixed handling of unavailable imported domains. + * minetest: Fixed showing status block and diagnostics. + * Fixed stretched favicon. + * Switched base template from container-fluid to container. This will narrow the content area for larger displays. + * Plinth is now able to run as "plinth" user instead of root user. + * xmpp: Replaced jwchat with jsxc. + * ikiwiki: Allow only alphanumerics in wiki/blog name to avoid invalid paths. + +== Plinth v0.10.0 (2016-08-21) == + + * Updated Plinth to support Django 1.10. + * Added a page to display recent status log from Plinth. It is accessible from the 500 error page. + * Tor: Added options to toggle relay and bridge relay modes. + * Radicale: Added access rights control. + * Ikiwiki: Updated suggested packages. + * Users and Groups: Fixed editing users without SSH keys. + * Networks: Added basic support for configuring batman-adv mesh networking. + * Networks: Fixed incorrect access for retrieving DNS entries. + * New languages: + * Persian (50% translated) + * Indonesian (not started, contributions needed) + * New modules added to Plinth: + * Disks: Shows free space of mounted partitions, and allows expanding the root partition. + * Security: Controls login restrictions. + * Snapshots: Manages Btrfs snapshots. + +== Version 0.9.4 (2016-06-24) == + + * Added Polish translation. + * Fixed issue preventing access to Plinth on a non-standard port. + * Dealt with ownCloud removal from Debian. The ownCloud page in Plinth will be hidden if it has not been setup. Otherwise, a warning is shown. + * Fixed issue in Privoxy configuration. Two overlapping listen-addresses were configured, which prevented privoxy service from starting. + * Fixed issue that could allow someone to start a module setup process without being logged in to Plinth. + * Fixed issues with some diagnostic tests that would show false positive results. + * Added check to Diagnostics to skip tests for modules that have not been setup. + * Fixed some username checks that could cause errors when editing the user. + * Added sorting of menu items per locale. + * Moved Dynamic DNS and Pagekite from Applications to System Configuration. + * Allowed setting IP for shared network connections. + * Switched Dreamplug image from "non-free" to "free". This means that we no longer include the non-free firmware for the built-in wifi on Dreamplug. + * Added the "userdir" module for the Apache web server. This allows users in the "admin" group to create a folder called "public_html" under their home folder, and to publicly share files placed in this folder. + * New wiki and manual content licence: ''[[https://creativecommons.org/licenses/by-sa/4.0/|Creative Commons Attribution-ShareAlike 4.0 International]]'' (from June 13rd 2016). + * Switched to using apt-get for module setup in Plinth. This fixes several issues that were seen during package installs. + +== Version 0.9 (2016-04-24) == + + * Fixed Wi-Fi AP setup. + * Prevent lockout of users in 'sudo' group after setup is complete. + * Improved setup mechanism for Plinth modules. Allows users to see what a module is useful for, before doing the setup and package install. Also allows essential modules to be setup by default during !FreedomBox install. + * Added HTTPS certificates to Monkeysphere page. Reorganized so that multiple domains can be added to a key. + * Added Radicale, a CalDAV and CardDAV server. + * Added Minetest Server, a multiplayer infinite-world block sandbox. + * Added Tiny Tiny RSS, a news feed reader. + +== Version 0.8 (2016-02-20) == + + * Added Quassel, an IRC client that stays connected to IRC networks and can synchronize multiple frontends. + * Improved first boot user interface. + * Fixed Transmission RPC whitelist issue. + * Added translations for Turkish, Chinese, and Russian. Fixed and updated translations in other languages. + * Added Monkeysphere, which uses PGP web of trust for SSH host key verification. + * Added Let's Encrypt, to obtain certificates for domains, so that browser certificate warnings can be avoided. + * Added repro, a SIP server for audio and video calls. + * Allow users to set their SSH public keys, so they can login over SSH without a password. + +== Version 0.7 (2015-12-13) == + + * Translations! Full translations of the interface in Danish, Dutch, French, German and Norwegian Bokmål, and partial Telugu. + * Support for OLinuXino A20 MICRO and LIME2 + * New Plinth applications: OpenVPN, reStore + * Improved first-boot experience + * Many bugfixes and cleanups + +== Version 0.6 (2015-10-31) == + + * New supported hardware target: Raspberry Pi 2 + * New modules in Plinth: + * Shaarli: Web application to manage and share bookmarks + * Date & Time: Configure time zone and NTP service + * Service Discovery: Configure Avahi service + * Documentation revamp including new user manual and developer guide + * Improved diagnostic tests, available in Plinth + * Avoid unnecessary changes when installing on existing Debian system + * Network configuration supports PPPoE connections + * Debian packages can be download over Tor + +== Version 0.5 (2015-08-07) == + + * New targets: !CubieTruck, i386, amd64 + * New apps in Plinth: Transmission, Dynamic DNS, Mumble, ikiwiki, Deluge, Roundcube, Privoxy + * !NetworkManager handles network configuration and can be manipulated through Plinth. + * Software Upgrades (unattended-upgrades) module can upgrade the system, and enable automatic upgrades. + * Plinth is now capable of installing ejabberd, jwchat, and privoxy, so they are not included in image but can be installed when needed. + * User authentication through LDAP for SSH, XMPP (ejabberd), and ikiwiki. + * Unit test suite is automatically run on Plinth upstream. This helps us catch at least some code errors before they are discovered by users! + * New, simpler look for Plinth. + * Performance improvements for Plinth. + +== Version 0.3 (2015-01-20) == + + * Tor Bridges: All boxes now act as non-exit Tor bridges, routing traffic for the Tor network. + * [[FreedomBox/Manual/Firewall|Firewall]]: firewall is on by default and is automatically managed. + * Add !BeagleBone support. We now have images for !BeagleBone, !RaspberryPi, !VirtualBox i386/amd64, and !DreamPlug. + * Ability to enable and use Tor Hidden Services. Works with Ejabberd/JWChat and ownCloud services. + * Enable Tor obfsproxy with scramblesuit. + * Drop well-known root password (an account with sudo capabilities still exists for now but will be removed soon). + * Switch to unstable as suite of choice for easier development. + * Newer images are built with systemd by default (due to Debian change). + * Install and operate firewall automatically (uses firewalld). + * Major restructuring of Plinth UI using Python3, Django web development framework and Bootstrap3. Code quality is much better and UI is more polished. + * Introduced packaging framework in Plinth UI for on-demand application installation. + +== Version 0.2 (2014-03-16) == + + * Support for Raspberry Pi and !VirtualBox (x86) in addition to the !DreamPlug. + * New Services: + * Configuration Management UI. + * Instant Messaging. + * !OwnCloud. + * dnsmasq. + * Low-Level Configuration Management. + * Service Announcement. + * LDAP Server. + * LXC Support. + * Source Packages. + * The privoxy setup is now the default from Debian. + +== Version 0.1 (2013-02-26) == + + * First !FreedomBox software release (0.1 image, developer release). + * Full hardware support in Debian + * Support for !DreamPlug. + * Basic software tools selected as common working environment: + * User interface system "plinth" + * Cryptography tools: gpg or "monkeysphere" + * Box-to-box communication design: Freedom-buddy (uses [[https://en.wikipedia.org/wiki/Tor_%28anonymity_network%29|TOR network]]) + * Web cleaning: "privoxy-freedombox". + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Repro.raw.xml b/doc/manual/es/Repro.raw.xml deleted file mode 100644 index db368e68a..000000000 --- a/doc/manual/es/Repro.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Repro32020-05-30 20:02:13SunilMohanAdapaUpdate the title to emphasize app name over its generic name22020-05-24 07:04:52fioddorSe alinea con la versión 09 en inglés del 23 de mayo de 202012019-09-14 08:59:56fioddorSe crea la versión española (traducción incompleta).
Repro (Servidor SIP)App eliminada Repro ha sido eliminada de Debian 10 (Buster) y por tanto ya no está disponible en FreedomBox. Repro es un servidor de SIP, un estándar para llamadas de voz sobre IP (VoIP). Se requiere un cliente SIP de escritorio o móvil para usar Repro.
Cómo configurar el servidor SIPConfigura el dominio en la página /repro/domains.html de la FreedomBox. Repro Domains Añade usuarios en /repro/addUser.html. Repro Users Deshabilita y vuelve a habilitar la aplicaión Repro en Plinth.
Redirección de PuertosSi tu FreedomBox estrá detrás de un router necesitarás configurar la redirección de puertos de tu router. Deberías redirigir los siguientes puertos para Repro: TCP 5060 TCP 5061 UDP 5060 UDP 5061 Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Rock64.raw.wiki b/doc/manual/es/Rock64.raw.wiki new file mode 100644 index 000000000..0eef1c1ae --- /dev/null +++ b/doc/manual/es/Rock64.raw.wiki @@ -0,0 +1,51 @@ +== Rock64 == + +{{attachment:rock64.jpg|Rock64|width=640,height=420}} + +Pine64's [[https://www.pine64.org/devices/single-board-computers/rock64/|Rock64]] is a powerful single board computer. It uses the Rockchip RK3328 Quad Core ARM64 processor. !FreedomBox images are built and tested for this device. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +Before downloading and using !FreedomBox you need to ensure that latest u-boot based firmware is installed into the SPI flash chip. Download the [[https://github.com/ayufan-rock64/linux-mainline-u-boot/releases/latest|latest u-boot]] to write to SPI flash and then see instructions on how to [[http://wiki.pine64.org/index.php?title=NOOB#Flashing_u-boot_to_SPI_Flash|write u-boot firmware into SPI flash]]. The gist is that you download and write an image to an SD card. Boot with SD card and wait for white LED to blink continuosly. After that power off remove SD card and proceed with !FreedomBox download. + +!FreedomBox [[FreedomBox/Download|images]] meant for all "arm64" hardware work well for this device. However, u-boot firmware must present in SPI flash (or on a separate SD card, which is not explained here). Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. These images also work well for eMMC disk which an optional attachment to this board and disk drives in USB 2.0 ports (but not in the USB 3.0 port). The process for preparing them is same as for an SD card. + +An alternative to downloading these images is to [[InstallingDebianOn|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: 25 USD (1GB) + * Price: 35 USD (2GB) + * Price: 45 USD (4GB) + * [[https://store.pine64.org/product/rockpro64-2gb-single-board-computer/|Pine64 Store]] + +=== Hardware === + + * Open Source Hardware (OSHW): No + * CPU: Rockchip RK3328 Quad-Core SOC (4x Cortex A53@1.5Ghz) + * GPU: Mali 450MP2 + * RAM: 1 GiB or 2 GiB or 4 GiB LPDDR3 + * Storage: eMMC module slot, microSD slot, 16 MiB SPI Flash + * USB: 2x USB 2.0, 1x USB 3.0 + * Architecture: arm64 + * Ethernet: 10/100/1000, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + +=== Known Issues === + + * !FreedomBox does not work when booted from USB 3.0 port (but works from eMMC, SD card or USB 2.0 disk). + * !FreedomBox does not work when booted form the top USB 2.0 port with some u-boot firmware versions (the one listed above). It only works with the bottom USB 2.0 port (the one closer to the board). + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/RockPro64.raw.wiki b/doc/manual/es/RockPro64.raw.wiki new file mode 100644 index 000000000..68c882516 --- /dev/null +++ b/doc/manual/es/RockPro64.raw.wiki @@ -0,0 +1,49 @@ +== RockPro64 == + +{{attachment:rockpro64.jpg|RockPro64|width=640,height=385}} + +Pine64's [[https://www.pine64.org/rockpro64/|RockPro64]] is a powerful single board computer. It uses the Rockchip RK3399 Hexa Core ARM64 processor. !FreedomBox images are built and tested for this device. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + +=== Download === + +Before downloading and using !FreedomBox you need to ensure that latest u-boot based firmware is installed into the SPI flash chip. See instructions on how to [[https://github.com/sigmaris/u-boot/wiki/Flashing-U-Boot-to-SPI|write u-boot firmware into SPI flash]]. The gist is that you download and write an image to an SD card. Boot with SD card and wait for white LED blinking to stop. After that power off, remove the SD card and proceed with !FreedomBox download. + +!FreedomBox [[FreedomBox/Download|images]] meant for all "arm64" hardware work well for this device. However, u-boot firmware must present in SPI flash (or on a separate SD card, which is not explained here). Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card and boot the device. These images also work well for USB 2.0 and USB 3.0 disk drives and the process for preparing them is same as for an SD card. + +An alternative to downloading these images is to [[InstallingDebianOn|install Debian]] on the device and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: 60 USD ([[https://store.pine64.org/product/rockpro64-2gb-single-board-computer/|RockPro64 2GB]]) + * Price: 80 USD ([[https://store.pine64.org/product/rockpro64-4gb-single-board-computer/|RockPro64 4GB]]) + +=== Hardware === + + * Open Source Hardware (OSHW): No + * CPU: Rockchip RK3399 SOC (2x Cortex A72@1.8Ghz, 4x Cortex A53@1.4Ghz) + * GPU: Mali T860 MP4 GPU + * RAM: 2 GiB or 4 GiB LPDDR4 + * Storage: eMMC module slot, microSD slot, 16 MiB SPI Flash + * USB: 2x USB 2.0, 1x USB 3.0, 1x USB-C + * Expansion slot: 1x PCIe 4x slot (NVMe disks, etc.) + * Architecture: arm64 + * Ethernet: 10/100/1000, RJ45 + * !WiFi: None, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Not available + +=== Known Issues === + + * !FreedomBox does not work when booted from eMMC module (but works from SD card, USB 2.0 disk or USB 3.0 disk). !FreedomBox on NMVe disk has not been tested. + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Roundcube.raw.wiki b/doc/manual/es/Roundcube.raw.wiki new file mode 100644 index 000000000..44d858a37 --- /dev/null +++ b/doc/manual/es/Roundcube.raw.wiki @@ -0,0 +1,37 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Roundcube|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Roundcube (Cliente de Correo Electrónico (Email)) == +|| {{attachment:FreedomBox/Manual/Roundcube/Roundcube-icon_en_V01.png|icono de Roundcube}} || + +'''Disponible desde''': versión 0.5 + +=== ¿Qué es Roundcube? === + +Roundcube es un cliente de correo electrónico (''email'') para navegador con un interfaz de usuario parecido a una aplicación de escritorio. Admite varios lenguajes. Roundcube usa el protocolo de acceso a mensajes de Internet (IMAP = ''Internet Message Access Protocol'') para acceder a los correos en un servidor remoto. Soporta MIME para enviar archivos adjuntos y en particular proporciona libreta de contactos, gestión de carpetas, búsquedas de mensajes y verificación ortográfica. + +=== Usar Roundcube === + +Tras instalar Roundcube se puede acceder a él en {{{https:///roundcube}}}. Introduce tu usuario y contraseña. El usuario de muchos servicios de correo electrónico suele ser la propia dirección completa, como ''usuario_de_ejemplo@servicio_de_ejemplo.org'', no solo el usuario ''usuario_de_ejemplo''. Introduce la dirección del servidor IMAP de tu servicio de correo electrónico en el campo ''Servidor''. Puedes probar a poner aquí tu nombre de dominio como ''servicio_de_ejemplo.org'' si la dirección es ''usuario_de_ejemplo@servicio_de_ejemplo.org'' y si esto no funciona consulta la dirección del servidor IMAP en la documentación de tu proveedor de correo electrónico. Se recomienda encarecidamente usar una conexión cifrada a tu servidor IMAP. Para ello inserta el prefijo "imaps://" al principio de la dirección del servidor IMAP. Por ejemplo, `imaps://imap.servicio_de_ejemplo.org`. + +{{attachment:roundcube-riseup.png|Logging into your IMAP server|width=606}} + +=== Usar Gmail con Roundcube === + +Si quieres usar Roundcube con tu cuenta Gmail necesitas habilitar primero el ingreso con contraseña en las preferencias de tu cuenta Google porque Gmail no va a permitir por defecto que ingresen aplicaciones mediante contraseña. Para hacerlo visita las [[https://www.google.com/settings/security/lesssecureapps|preferencias de la Cuenta Google]] y habilita ''Apps Menos seguras''. A continuación ingresa en Roundcube introduciendo tu dirección de Gmail como ''Usuario'' y tu contraseña. En el campo servidor pon `imaps://imap.gmail.com`. + +{{attachment:roundcube-gmail.png|Logging into Gmail|width=606}} + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Roundcube.raw.xml b/doc/manual/es/Roundcube.raw.xml deleted file mode 100644 index b2804d07a..000000000 --- a/doc/manual/es/Roundcube.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Roundcube72020-05-30 19:42:50SunilMohanAdapaUpdate the title to emphasize app name over its generic name62020-05-24 06:42:50fioddorSe alinea con la versión 09 en inglés del 23 de mayo de 202052019-09-11 09:40:48fioddorCorrección menor42019-09-11 09:40:18fioddorCorrección menor32019-09-11 09:39:03fioddorCorrección menor22019-09-11 09:37:31fioddor12019-09-11 09:35:26fioddorSe crea la versión española.
Roundcube (Cliente de Correo Electrónico (Email))
¿Qué es Roundcube?Roundcube es un cliente de correo electrónico (email) para navegador con un interfaz de usuario parecido a una aplicación de escritorio. Admite varios lenguajes. Roundcube usa el protocolo de acceso a mensajes de Internet (IMAP = Internet Message Access Protocol) para acceder a los correos en un servidor remoto. Soporta MIME para enviar archivos adjuntos y en particular proporciona libreta de contactos, gestión de carpetas, búsquedas de mensajes y verificación ortográfica.
Usar RoundcubeTras instalar Roundcube se puede acceder a él en https://<tu_freedombox>/roundcube. Introduce tu usuario y contraseña. El usuario de muchos servicios de correo electrónico suele ser la propia dirección completa, como usuario_de_ejemplo@servicio_de_ejemplo.org, no solo el usuario usuario_de_ejemplo. Introduce la dirección del servidor IMAP de tu servicio de correo electrónico en el campo Servidor. Puedes probar a poner aquí tu nombre de dominio como servicio_de_ejemplo.org si la dirección es usuario_de_ejemplo@servicio_de_ejemplo.org y si esto no funciona consulta la dirección del servidor IMAP en la documentación de tu proveedor de correo electrónico. Se recomienda encarecidamente usar una conexión cifrada a tu servidor IMAP. Para ello inserta el prefijo "imaps://" al principio de la dirección del servidor IMAP. Por ejemplo, imaps://imap.servicio_de_ejemplo.org. Logging into your IMAP server
Usar Gmail con RoundcubeSi quieres usar Roundcube con tu cuenta Gmail necesitas habilitar primero el ingreso con contraseña en las preferencias de tu cuenta Google porque Gmail no va a permitir por defecto que ingresen aplicaciones mediante contraseña. Para hacerlo visita las preferencias de la Cuenta Google y habilita Apps Menos seguras. A continuación ingresa en Roundcube introduciendo tu dirección de Gmail como Usuario y tu contraseña. En el campo servidor pon imaps://imap.gmail.com. Logging into Gmail Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Samba.raw.wiki b/doc/manual/es/Samba.raw.wiki new file mode 100644 index 000000000..4378fec22 --- /dev/null +++ b/doc/manual/es/Samba.raw.wiki @@ -0,0 +1,61 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Samba|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Samba (Almacenamiento de Ficheros en Red) == +|| {{attachment:FreedomBox/Manual/Samba/Samba-icon_en_V01.png|icono de Samba}} || + +'''Disponible desde''': versión 19.22 + +Samba te permite tener una carpeta compartida en la red local que se puede usar desde multiples ordenadores con sistemas operativos diferentes. De ahora en adelante nos referiremos a estas carpetas como "shares". +Puedes tener una carpeta personal compartida por tus propios dispositivos (share casero), una compartida con un grupo de confianza (share de grupo) o una compartida con todo dispositivo de la red (share abierto). + +Samba te permite tratar un share como si fueran carpetas locales de tu ordenador. No obstante los shares solo están disponibles en la red local. + +Para aprender más acerca de Samba, mira la [[https://wiki.samba.org/index.php/User_Documentation|documentación de usuario]] de su wiki. + +=== Usar Samba === + +Tras la instalación, puedes elegir qué discos compartir. Los shares habilitados están accesibles en el administrador de archivos de tu ordenador en la ruta \\freedombox (en Windows) o smb://freedombox.local (en Linux y Mac). Hay 3 tipos de share para elegir: + + * '''Share abierto''' - accesible a cualquiera en tu red local. + * '''Share de grupo''' - accesible solo a usuarios !FreedomBox que estén en el grupo ''freedombox-share''. + * '''Share casero''' - cada usuario del ''grupo freedombox-share'' puede tener su propio espacio privado. + +==== En Android ==== + +Para acceder a shares Samba desde un dispositivo Android instala el "Cliente Samba para Android" desde F-Droid o Google Play. Introduce ''smb://freedombox.local/'' como ruta del share en la app. Tus carpetas compartidas deberían estar visibles en la app de administración de archivos. También VLC para Android puede detectar automáticamente y usar los shares Samba. + +=== Integración con otras apps === + +La app Transmission de !FreedomBox proporciona una configuración para permitir que las descargas se graben directamente en un share Samba. + +Si quieres dejar disponibles en Samba ficheros sincronizados con Syncthing tienes que asegurarte de sincronizar en la carpeta compartida de Samba. Además, para dejar las carpetas de Syncthing disponibles en carpetas abiertas o de grupo de Samba necesitas asegurarte de pulsar el botón "Permisos > Ignorar" bajo la pestaña "Avanzado" de la carpeta en el interfaz web de usuario de Syncthing. Esto permitirá escribir los ficheros mediante Samba. + +=== Comparación con otras apps === + +==== Syncthing ==== + +[[es/FreedomBox/Manual/Syncthing|Syncthing]] mantiene una copia de la carpeta compartida en cada dispositivo con el que se comparte. Samba mantiene solo una copy en tu dispositivo !FreedomBox. + +Syncthing puede sincronizar tus carpetas compartidas entre dispositivos por Internet. +Los shares Samba solo están disponibles en tu red local. + +Como Syncthing es primordialmente una solución de sincronización, tiene funcionalidades como resolución de conflictos y versionado. Samba solo tiene una copia del fichero, así que no necesita tales funcionalidades. Por ejemplo, si dos personas están editando una hoja de cálculo almacenada en un share Samba el último que grabe el fichero gana. + + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Samba.raw.xml b/doc/manual/es/Samba.raw.xml deleted file mode 100644 index 5e7fd064e..000000000 --- a/doc/manual/es/Samba.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Samba92020-05-30 19:43:15SunilMohanAdapaUpdate the title to emphasize app name over its generic name82020-05-26 13:19:06fioddorSe alinea con la versión 10 en inglés del 25 de mayo de 202072020-05-24 06:55:40fioddorSe alinea con la versión 09 en inglés del 23 de mayo de 202062020-05-12 08:53:09fioddorMejora menor. Algo más exacto.52020-05-12 08:49:07fioddorSe alinea con la versión 07 en inglés del 12 de abril de 202042020-04-25 14:47:22fioddorSe alinea con la versión 6 en inglés del 23 de abril de 202032020-02-23 11:59:11fioddornomenclatura normalizada22020-02-11 21:56:57fioddorMinor corrections12020-02-11 21:55:07fioddorSe traduce una página nueva
Samba (Almacenamiento de Ficheros en Red)Samba te permite tener una carpeta compartida en la red local que se puede usar desde multiples ordenadores con sistemas operativos diferentes. De ahora en adelante nos referiremos a estas carpetas como "shares". Puedes tener una carpeta personal compartida por tus propios dispositivos (share casero), una compartida con un grupo de confianza (share de grupo) o una compartida con todo dispositivo de la red (share abierto). Samba te permite tratar un share como si fueran carpetas locales de tu ordenador. No obstante los shares solo están disponibles en la red local. Para aprender más acerca de Samba, mira la documentación de usuario de su wiki. Disponible desde la versión: 19.22
Usar SambaTras la instalación, puedes elegir qué discos compartir. Los shares habilitados están accesibles en el administrador de archivos de tu ordenador en la ruta \\freedombox (en Windows) o smb://freedombox.local (en Linux y Mac). Hay 3 tipos de share para elegir: Share abierto - accesible a cualquiera en tu red local. Share de grupo - accesible solo a usuarios FreedomBox que estén en el grupo freedombox-share. Share casero - cada usuario del grupo freedombox-share puede tener su propio espacio privado.
En AndroidPara acceder a shares Samba desde un dispositivo Android instala el "Cliente Samba para Android" desde F-Droid o Google Play. Introduce smb://freedombox.local/<disco> como ruta del share en la app. Tus carpetas compartidas deberían estar visibles en la app de administración de archivos. También VLC para Android puede detectar automáticamente y usar los shares Samba.
Integración con otras appsLa app Transmission de FreedomBox proporciona una configuración para permitir que las descargas se graben directamente en un share Samba. Si quieres dejar disponibles en Samba ficheros sincronizados con Syncthing tienes que asegurarte de sincronizar en la carpeta compartida de Samba. Además, para dejar las carpetas de Syncthing disponibles en carpetas abiertas o de grupo de Samba necesitas asegurarte de pulsar el botón "Permisos > Ignorar" bajo la pestaña "Avanzado" de la carpeta en el interfaz web de usuario de Syncthing. Esto permitirá escribir los ficheros mediante Samba.
Comparación con otras apps
SyncthingSyncthing mantiene una copia de la carpeta compartida en cada dispositivo con el que se comparte. Samba mantiene solo una copy en tu dispositivo FreedomBox. Syncthing puede sincronizar tus carpetas compartidas entre dispositivos por Internet. Los shares Samba solo están disponibles en tu red local. Como Syncthing es primordialmente una solución de sincronización, tiene funcionalidades como resolución de conflictos y versionado. Samba solo tiene una copia del fichero, así que no necesita tales funcionalidades. Por ejemplo, si dos personas están editando una hoja de cálculo almacenada en un share Samba el último que grabe el fichero gana. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Searx.raw.wiki b/doc/manual/es/Searx.raw.wiki new file mode 100644 index 000000000..5f247b7a9 --- /dev/null +++ b/doc/manual/es/Searx.raw.wiki @@ -0,0 +1,61 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Searx|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Searx (Búsqueda Web) == +|| {{attachment:FreedomBox/Manual/Searx/Searx-icon_en_V01.png|icono de Searx}} || + +'''Disponible desde:''' versión 0.24.0 + +=== Acerca de Searx === + +''Searx'' es un [[https://en.wikipedia.org/wiki/Metasearch_engine|metabuscador]]. Un metabuscador agrega los resultados de varios buscadores y los presenta en un interfaz unificado. + +Lee más acerca de Searx en su [[https://asciimoo.github.io/searx/|sitio web oficial]]. + +=== Captura de pantalla === +{{attachment:searx-screenshot.png|Searx Screenshot|width=800}} + +=== Vídeo === +[[attachment:Searx.webm|Searx installation and first steps|&do=get]] (14 MB) + +=== ¿Por qué usar Searx? === + +==== Personalización y Burbujas por Filtrado ==== + +Los buscadores tienen la capacidad de perfilar a sus usuarios y les sirven los resultados más relevantes para ellos, encerrandoles en [[https://en.wikipedia.org/wiki/Filter_bubble|burbujas por filtrado]] y distorsionando la visión que la gente tiene del mundo. Los buscadores tienen un incentivo financiero para servir publicidad interesante a sus usuarios, ya que incrementa la probabilidad de que hagan clic en los anuncios. + +Un metabuscador es una solución posible a este problema, ya que agrega resultados de multiples buscadores puenteando así los intentos de personalización de los buscadores. + +Searx evita almacenar cookies de buscadores para eludir traceos y perfilados de buscadores. + +==== Filtrado de publicidad ==== + +Searx filtra anuncios de los resultados de búsqueda antes de servirlos al usuario, con lo que mejora la relevancia de tus resultados y te evita distracciones. + +==== Privacidad ==== + +Searx usa por defecto HTTP POST en vez de GET para enviar tus consultas de búsqueda a los [[https://en.wikipedia.org/wiki/Web_search_engine|buscadores]], así que si alguien espía tu tráfico no podrá leerlas. Tampoco se almacenarán las consultas en el histórico de tu navegador. + +'''Nota:''' Searx usado desde la barra (''omnibar'') del navegador Chrome hará peticiones GET en vez de POST. + +=== Searx en FreedomBox === + + + * En !FreedomBox Searx usa las credenciales únicas de ''Single Sign On''. Esto implica que tienes que haber ingresado en tu !FreedomBox con el navegador en el que estás usando Searx. + * Se puede acceder fácilmente a SearX a través de Tor. + * Se puede añadir a Searx a la barra de buscadores del navegador Firefox. Mira la [[https://support.mozilla.org/en-US/kb/add-or-remove-search-engine-firefox|Ayuda de Firefox]] acerca de este asunto. Una vez esté Searx añadido también podrás establecerlo como tu buscador por defecto. + * Searx también ofrece resultados de búsqueda en formatos csv, json y rss, que se pueden usar desde scripts para automatizar algunas tareas. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Searx.raw.xml b/doc/manual/es/Searx.raw.xml deleted file mode 100644 index 1d506afd1..000000000 --- a/doc/manual/es/Searx.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Searx62020-05-30 19:43:39SunilMohanAdapaUpdate the title to emphasize app name over its generic name52020-05-23 22:49:23fioddorSe alinea con la versión 10 en inglés del 23 de mayo de 202042020-04-13 16:25:42fioddorSe alinea con la versión 09 en inglés del 12 de abril de 202032019-09-16 12:06:12fioddorCorrección menor22019-09-16 12:04:34fioddorSe crea la versión española.12019-09-16 11:39:36fioddor
Searx (Búsqueda Web)
Acerca de SearxSearx es un metabuscador. Un metabuscador agrega los resultados de varios buscadores y los presenta en un interfaz unificado. Lee más acerca de Searx en su sitio web oficial. Disponible desde: versión 0.24.0
Captura de pantallaSearx Screenshot
VídeoSearx installation and first steps (14 MB)
¿Por qué usar Searx?
Personalización y Burbujas por FiltradoLos buscadores tienen la capacidad de perfilar a sus usuarios y les sirven los resultados más relevantes para ellos, encerrandoles en burbujas por filtrado y distorsionando la visión que la gente tiene del mundo. Los buscadores tienen un incentivo financiero para servir publicidad interesante a sus usuarios, ya que incrementa la probabilidad de que hagan clic en los anuncios. Un metabuscador es una solución posible a este problema, ya que agrega resultados de multiples buscadores puenteando así los intentos de personalización de los buscadores. Searx evita almacenar cookies de buscadores para eludir traceos y perfilados de buscadores.
Filtrado de publicidadSearx filtra anuncios de los resultados de búsqueda antes de servirlos al usuario, con lo que mejora la relevancia de tus resultados y te evita distracciones.
PrivacidadSearx usa por defecto HTTP POST en vez de GET para enviar tus consultas de búsqueda a los buscadores, así que si alguien espía tu tráfico no podrá leerlas. Tampoco se almacenarán las consultas en el histórico de tu navegador. Nota: Searx usado desde la barra (omnibar) del navegador Chrome hará peticiones GET en vez de POST.
Searx en FreedomBoxEn FreedomBox Searx usa las credenciales únicas de Single Sign On. Esto implica que tienes que haber ingresado en tu FreedomBox con el navegador en el que estás usando Searx. Se puede acceder fácilmente a SearX a través de Tor. Se puede añadir a Searx a la barra de buscadores del navegador Firefox. Mira la Ayuda de Firefox acerca de este asunto. Una vez esté Searx añadido también podrás establecerlo como tu buscador por defecto. Searx también ofrece resultados de búsqueda en formatos csv, json y rss, que se pueden usar desde scripts para automatizar algunas tareas. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/SecureShell.raw.wiki b/doc/manual/es/SecureShell.raw.wiki new file mode 100644 index 000000000..6b058b274 --- /dev/null +++ b/doc/manual/es/SecureShell.raw.wiki @@ -0,0 +1,125 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/SecureShell|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Shell Segura == + +=== ¿Qué es Shell Segura? === + +!FreedomBox ejecuta el servidor `openssh-server` por defecto permitiendo así accesos remotos desde todos los interfaces. Si tu dispositivo hardware está conectado a un monitor y un teclado, también puedes ingresar directamente. Para la operación habitual de !FreedomBox no necesitas usar la shell. No obstante, algunas tareas o identificación de algún problema podrían requerirlo. + +=== Configurando una Cuenta de Usuario === + +==== Primer ingreso a FreedomBox: Cuenta de Admin ==== + +Al crear una cuenta en !FreedomBox por primera vez, el usuario tendrá automaticamente privilegios de administrador. Los usuarios `Admin` pueden ingresar mediante ssh (abajo se explica cómo) y escalar sus privilegios a superusuario mediante ``sudo``. + +==== Cuenta de Usuario por Defecto ==== + + * Nota: Si puedes acceder al interfaz web de !FreedomBox es que no necesitas hacer esto. Puedes usar la cuenta de usuario del interfaz web de !FreedomBox para conectar por SSH. + +Las imagenes precompiladas !FreedomBox tienen una cuenta de usuario llamada `fbx` pero no tiene contraseña establecida, así que no se puede ingresar con esta cuenta. + +Hay un script incluído en el programa `freedom-maker` que permite establecer la contraseña de esta cuenta si fuera necesario: + + 1. Descomprime la imagen. + + 1. Obtén una copia de `freedom-maker` en https://salsa.debian.org/freedombox-team/freedom-maker/. + + 1. Ejecuta {{{sudo ./bin/passwd-in-image fbx}}}. + + 1. Copia el archivo de la imagen a la tarjeta SD e inicia el dispositivo. + +El usuario "fbx" también tiene privilegios de superusuario mediante ``sudo``. + +=== Ingresando === + +==== Local ==== + +Para ingresar mediante SSH a tu !FreedomBox: + +{{{ +$ ssh fbx@freedombox +}}} + +Reemplaza `fbx` por el usuario con el que quieres ingresar. Hay que reemplazar `freedombox` por el hostname o dirección IP de tu dispositivo !FreedomBox como se indica en el proceso de [[es/FreedomBox/Manual/QuickStart|Inicio rápido]]. + +`fbx` es el usuario de !FreedomBox con privilegios de superusuario por defecto. Cualquier otro usuario creado con !FreedomBox que pertenezca al grupo `admin` podrá ingresar. La cuenta `root` no tiene contraseña configurada y no podrá ingresar. A todos los demás usuarios se les denegará el acceso. + +`fbx` y los otros usuarios del grupo `admin` podrán ingresar directamente por el terminal. A todos los demás usuarios se les denegará el acceso. + +Si fallas repetidamente intentando ingresar se te bloqueará el acceso por algún tiempo. Esto se debe al paquete `libpam-abl` que !FreedomBox instala por defecto. Para controlar este comportamiento consulta la documentación de `libpam-abl`. + +==== SSH via Tor ==== + +Si tienes habilitados en !FreedomBox los servicios Tor Onion puedes acceder a tu !FreedomBox mediante ssh sobre Tor. Instala `netcat-openbsd`. + +{{{ +$ sudo apt-get install netcat-openbsd +}}} + +Edita `~/.ssh/config` para habilitar conexiones sobre Tor. + +{{{ +$ nano ~/.ssh/config +}}} + +Añade lo siguiente: + +{{{ +Host *.onion + user USUARIO + port 22 + ProxyCommand nc -X 5 -x 127.0.0.1:9050 %h %p +}}} + +Reemplaza USUARIO por un usuario del grupo `admin` (ver arriba). + +En algunos casos podrías necesitar reemplazar 9050 por 9150. + +Ahora, para conectar a la !FreedomBox abre un terminal y teclea: + +{{{ +$ ssh USUARIO@DIRECCION.onion +}}} + +Reemplaza USUARIO por un usuario del grupo `admin` y DIRECCION por la dirección del servicio Tor Onion para SSH de tu !FreedomBox. + +=== Escalar a Superusuario === + +Si después de ingresar quieres volverte superusuario para realizar actividades administrativas: + +{{{ +$ sudo su +}}} + +Habitúate a ingresar como `root` ''solo cuando sea estrictamente necesario''. Si no ingresas como `root` no puedes romperlo todo accidentalmente. + + +<> +=== Cambiar Contraseñas === + +Para cambiar la contraseña de un usuario administrado en el interfaz web de !FreedomBox usa la página Cambiar clave de acceso. El usuario por debecto `fbx` no se administra en el interfaz web de !FreedomBox y su contraseña no se puede cambiar desde él. + +Para cambiar la contraseña en el terminal ingresa a tu !FreedomBox con el usuario cuya contraseña quieres cambiar y ejecuta el siguiente comando: + +{{{ +$ passwd +}}} + +Esto te preguntará tu contraseña actual antes de darte la oportunidad de establecer la nueva. + + +## END_INCLUDE + + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/SecureShell.raw.xml b/doc/manual/es/SecureShell.raw.xml deleted file mode 100644 index dbb23ee60..000000000 --- a/doc/manual/es/SecureShell.raw.xml +++ /dev/null @@ -1,4 +0,0 @@ -
es/FreedomBox/Manual/SecureShell102020-05-24 07:50:22fioddorSe alinea con la versión 18 en inglés del 23 de mayo de 202092020-04-13 16:26:38fioddorSe alinea con la versión 16 en inglés del 12 de abril de 202082020-04-04 20:24:38fioddorSe alinea con la versión 15 inglés del 04 de abril de 202072020-04-04 20:18:47fioddorCorrección menor62020-04-04 20:05:06fioddorSe alinea con la versión 14 inglés del 04 de abril de 202052020-04-04 20:00:07fioddorCorrección menor42019-11-14 18:13:56fioddorSe alinea con la versión 13 en inglés del 11 de noviembre de 201932019-08-20 08:32:32fioddorSe incorpora la traducción de una sección nueva.22019-08-20 07:08:46fioddorSe incorpora la traducción de una sección nueva.12019-08-20 07:02:24fioddorSe crea la versión española.
Shell Segura
¿Qué es Shell Segura?FreedomBox ejecuta el servidor openssh-server por defecto permitiendo así accesos remotos desde todos los interfaces. Si tu dispositivo hardware está conectado a un monitor y un teclado, también puedes ingresar directamente. Para la operación habitual de FreedomBox no necesitas usar la shell. No obstante, algunas tareas o identificación de algún problema podrían requerirlo.
Configurando una Cuenta de Usuario
Primer ingreso a FreedomBox: Cuenta de AdminAl crear una cuenta en FreedomBox por primera vez, el usuario tendrá automaticamente privilegios de administrador. Los usuarios Admin pueden ingresar mediante ssh (abajo se explica cómo) y escalar sus privilegios a superusuario mediante sudo.
Cuenta de Usuario por DefectoNota: Si puedes acceder al interfaz web de FreedomBox es que no necesitas hacer esto. Puedes usar la cuenta de usuario del interfaz web de FreedomBox para conectar por SSH. Las imagenes precompiladas FreedomBox tienen una cuenta de usuario llamada fbx pero no tiene contraseña establecida, así que no se puede ingresar con esta cuenta. Hay un script incluído en el programa freedom-maker que permite establecer la contraseña de esta cuenta si fuera necesario: Descomprime la imagen. Obtén una copia de freedom-maker en . Ejecuta sudo ./bin/passwd-in-image <archivo_de_imagen> fbx. Copia el archivo de la imagen a la tarjeta SD e inicia el dispositivo. El usuario "fbx" también tiene privilegios de superusuario mediante sudo.
Ingresando
LocalPara ingresar mediante SSH a tu FreedomBox: Reemplaza fbx por el usuario con el que quieres ingresar. Hay que reemplazar freedombox por el hostname o dirección IP de tu dispositivo FreedomBox como se indica en el proceso de Inicio rápido. fbx es el usuario de FreedomBox con privilegios de superusuario por defecto. Cualquier otro usuario creado con FreedomBox que pertenezca al grupo admin podrá ingresar. La cuenta root no tiene contraseña configurada y no podrá ingresar. A todos los demás usuarios se les denegará el acceso. fbx y los otros usuarios del grupo admin podrán ingresar directamente por el terminal. A todos los demás usuarios se les denegará el acceso. Si fallas repetidamente intentando ingresar se te bloqueará el acceso por algún tiempo. Esto se debe al paquete libpam-abl que FreedomBox instala por defecto. Para controlar este comportamiento consulta la documentación de libpam-abl.
SSH via TorSi tienes habilitados en FreedomBox los servicios Tor Onion puedes acceder a tu FreedomBox mediante ssh sobre Tor. Instala netcat-openbsd. Edita ~/.ssh/config para habilitar conexiones sobre Tor. Añade lo siguiente: Reemplaza USUARIO por un usuario del grupo admin (ver arriba). En algunos casos podrías necesitar reemplazar 9050 por 9150. Ahora, para conectar a la FreedomBox abre un terminal y teclea: Reemplaza USUARIO por un usuario del grupo admin y DIRECCION por la dirección del servicio Tor Onion para SSH de tu FreedomBox.
Escalar a SuperusuarioSi después de ingresar quieres volverte superusuario para realizar actividades administrativas: Habitúate a ingresar como root solo cuando sea estrictamente necesario. Si no ingresas como root no puedes romperlo todo accidentalmente.
Cambiar ContraseñasPara cambiar la contraseña de un usuario administrado en el interfaz web de FreedomBox usa la página Cambiar clave de acceso. El usuario por debecto fbx no se administra en el interfaz web de FreedomBox y su contraseña no se puede cambiar desde él. Para cambiar la contraseña en el terminal ingresa a tu FreedomBox con el usuario cuya contraseña quieres cambiar y ejecuta el siguiente comando: Esto te preguntará tu contraseña actual antes de darte la oportunidad de establecer la nueva. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Security.raw.wiki b/doc/manual/es/Security.raw.wiki new file mode 100644 index 000000000..40744de22 --- /dev/null +++ b/doc/manual/es/Security.raw.wiki @@ -0,0 +1,36 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Security|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Protección == + +Pulsa el botón ''Mostrar informe de seguridad'' para ver un informe que incluye lo siguiente: + * Cantidad de vulnerabilidades de seguridad en la versión de !FreedomBox instalada. + * Cantidad de vulnerabilidades de seguridad para cada app instalada. + * Si cada app instalada soporta sandboxing de seguridad. + * Para cada app instalada, el porcentaje de cobertura del sandbox de seguridad. + +=== Configuración === + +Cuando se habilita esta opción sólo los usuarios del grupo "admin" podrán entrar a la consola o mediante SSH. Los usuarios de consola podrán acceder a algunos servicios sin más autorización. + +La sección [[../Users|Usuarios]] explica cómo definir grupos de usuarios. + + +Cuando la opción ''Acceso a consola restringido'' está habilitada, sólo los usuarios del grupo ''admin'' podrán ingresar via consola, shell segura (SSH) o interfaz gráfico. Al desactivar esta funcionalidad cualquier usuario con cuenta en !FreedomBox podrá ingresar y quizá tener acceso a ciertos servicios sin más autorización. Esta opción solo debería desactivarse si se confía plenamente en todos los usuarios del sistema. Si quieres usar tu máquina !FreedomBox también como escritorio y admitir que usuarios no-admin ingresen mediante interfáz gráfica esta opción debe estar desactivada. Puedes determinar la lista de usuarios ''admin'' en la sección [[../Users|Users]]. + +{{attachment:Security_es_v01.png}} + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Security.raw.xml b/doc/manual/es/Security.raw.xml deleted file mode 100644 index a10897c35..000000000 --- a/doc/manual/es/Security.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Security62020-04-11 10:27:12fioddorhttps://salsa.debian.org/freedombox-team/plinth/-/issues/1831#note_15425852020-04-04 20:36:39fioddorSe alinea la traducción del literal con el interfaz web.42020-04-04 20:34:34fioddorSe usa imagen traducida y más actual.32020-04-04 20:32:39fioddorSe alinea la traducción del nombre de la página con el interfaz web.22019-10-14 07:25:52fioddorSe actualiza a la versión inglesa 03 del 12 de octubre de 2019.12019-06-19 12:14:30fioddorSe crea la versión española.
ProtecciónCuando se habilita esta opción sólo los usuarios del grupo "admin" podrán entrar a la consola o mediante SSH. Los usuarios de consola podrán acceder a algunos servicios sin más autorización. La sección Usuarios explica cómo definir grupos de usuarios. Cuando la opción Acceso a consola restringido está habilitada, sólo los usuarios del grupo admin podrán ingresar via consola, shell segura (SSH) o interfaz gráfico. Al desactivar esta funcionalidad cualquier usuario con cuenta en FreedomBox podrá ingresar y quizá tener acceso a ciertos servicios sin más autorización. Esta opción solo debería desactivarse si se confía plenamente en todos los usuarios del sistema. Si quieres usar tu máquina FreedomBox también como escritorio y admitir que usuarios no-admin ingresen mediante interfáz gráfica esta opción debe estar desactivada. Puedes determinar la lista de usuarios admin en la sección Users. Security_es_v01.png Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/ServiceDiscovery.raw.wiki b/doc/manual/es/ServiceDiscovery.raw.wiki new file mode 100644 index 000000000..8731e25b2 --- /dev/null +++ b/doc/manual/es/ServiceDiscovery.raw.wiki @@ -0,0 +1,25 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/ServiceDiscovery|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Detección de Servicios == + +La Detección de Servicios permite a otros dispositivos de la red detectar a tu !FreedomBox y a los servicios que expone. Si un cliente de la red local soporta mDNS, puede encontrar tu !FreedomBox en .local (por ejemplo: freedombox.local). + +También permite a !FreedomBox detectar otros dispositivos y servicios que están funcionando en tu red local. + +La Detección de Servicios no es esencial y solo funciona en redes internas. Se puede deshabilitar para mejorar la seguridad especialmente cuando la conectas a una red local hostil. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/ServiceDiscovery.raw.xml b/doc/manual/es/ServiceDiscovery.raw.xml deleted file mode 100644 index 6cf222043..000000000 --- a/doc/manual/es/ServiceDiscovery.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/ServiceDiscovery12019-06-19 12:36:54fioddorSe crea la versión española.
Detección de ServiciosLa Detección de Servicios permite a otros dispositivos de la red detectar a tu FreedomBox y a los servicios que expone. Si un cliente de la red local soporta mDNS, puede encontrar tu FreedomBox en <hostname>.local (por ejemplo: freedombox.local). También permite a FreedomBox detectar otros dispositivos y servicios que están funcionando en tu red local. La Detección de Servicios no es esencial y solo funciona en redes internas. Se puede deshabilitar para mejorar la seguridad especialmente cuando la conectas a una red local hostil. Volver a la descripción de Funcionalidades o a las páginas del manual. InformationSupportContributeReportsPromoteOverview Hardware Live Help Where To Start Translate Calls Talks Features Vision Q&A Design To Do Releases Press Download Manual Code Contributors Blog FreedomBox for Communities FreedomBox Developer Manual HELP & DISCUSSIONS: Discussion Forum - Mailing List - #freedombox irc.debian.org | CONTACT Foundation | JOIN Project Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 This page is copyright its contributors and is licensed under the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license. CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Shadowsocks.raw.wiki b/doc/manual/es/Shadowsocks.raw.wiki new file mode 100644 index 000000000..26dfc7b70 --- /dev/null +++ b/doc/manual/es/Shadowsocks.raw.wiki @@ -0,0 +1,43 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Shadowsocks|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Shadowsocks (Proxy SOCKS5) == +|| {{attachment:FreedomBox/Manual/Shadowsocks/Shadowsocks-icon_en_V01.png|icono de Shadowsocks}} || + +'''Disponible desde''': versión 0.18.0 + +=== ¿Qué es Shadowsocks? === +[[https://shadowsocks.org/en/index.html|Shadowsocks]] es un proxy SOCKS5 ligero y seguro, diseñado para proteger tu tráfico Internet. Se puede usar para eludir la censura y los filtros de Internet. Tu !FreedomBox puede ejecutar un cliente Shadowsocks que puede conectar con un servidor Shadowsocks. También ejecutará un proxy SOCKS5. Los dispositivos locales pueden conectar con este proxy y sus datos serán cifrados y retransmitidos a través del sevidor Shadowsocks. + +'''Nota:''' Shadowsocks está disponible en !FreedomBox a partir de la versión 0.18. + +=== Usar el cliente Shadowsocks === + +La implementación actual de Shadowsocks en !FreedomBox solo soporta configurar !FreedomBox como cliente Shadowsocks. Este caso de uso sería así: + * El client de Shadowsocks (!FreedomBox) está en una región en la que partes de Internet están bloqueadas o censuradas. + * El servidor de Shadowsocks está en una región diferente que no tiene esos bloqueos. + * !FreedomBox proporciona un servicio de proxy SOCKS en la red local para que otros dispositivos hagan uso de la conexión Shadowsocks. + +En el futuro será posible configurar !FreedomBox como servidor Shadowsocks. + +=== Configurar tu FreedomBox para el cliente Shadowsocks === + +Para habilitar Shadowsocks primero navega a la página Proxy Socks5 (Shadowsocks) e instalalo. + +Servidor: el servidor Shadowsocks no es la IP o la URL de !FreedomBox, sino que será otro servidor o VPS configurado como tal (servidor Shadowsocks). También hay algunos servidores Shadowsocks públicos listados en la web, pero sé consciente de que quienquiera que opere el servidor puede ver a dónde van las peticiones y cualquier dato no cifrado que se transmita. + +Para usar Shadowsocks una vez instalado configura la URL del proxy SOCKS5 en tu dispositivo, navegador o aplicación como `http://:1080/`. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Shadowsocks.raw.xml b/doc/manual/es/Shadowsocks.raw.xml deleted file mode 100644 index dd257661a..000000000 --- a/doc/manual/es/Shadowsocks.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Shadowsocks42020-05-30 19:43:58SunilMohanAdapaUpdate the title to emphasize app name over its generic name32020-05-24 07:07:26fioddorSe alinea con la versión 04 en inglés del 23 de mayo de 202022019-09-14 09:52:23fioddorCorrección menor12019-09-14 09:45:29fioddorSe crea la versión española.
Shadowsocks (Proxy SOCKS5)
¿Qué es Shadowsocks?Shadowsocks es un proxy SOCKS5 ligero y seguro, diseñado para proteger tu tráfico Internet. Se puede usar para eludir la censura y los filtros de Internet. Tu FreedomBox puede ejecutar un cliente Shadowsocks que puede conectar con un servidor Shadowsocks. También ejecutará un proxy SOCKS5. Los dispositivos locales pueden conectar con este proxy y sus datos serán cifrados y retransmitidos a través del sevidor Shadowsocks. Nota: Shadowsocks está disponible en FreedomBox a partir de la versión 0.18.
Usar el cliente ShadowsocksLa implementación actual de Shadowsocks en FreedomBox solo soporta configurar FreedomBox como cliente Shadowsocks. Este caso de uso sería así: El client de Shadowsocks (FreedomBox) está en una región en la que partes de Internet están bloqueadas o censuradas. El servidor de Shadowsocks está en una región diferente que no tiene esos bloqueos. FreedomBox proporciona un servicio de proxy SOCKS en la red local para que otros dispositivos hagan uso de la conexión Shadowsocks. En el futuro será posible configurar FreedomBox como servidor Shadowsocks.
Configurar tu FreedomBox para el cliente ShadowsocksPara habilitar Shadowsocks primero navega a la página Proxy Socks5 (Shadowsocks) e instalalo. Servidor: el servidor Shadowsocks no es la IP o la URL de FreedomBox, sino que será otro servidor o VPS configurado como tal (servidor Shadowsocks). También hay algunos servidores Shadowsocks públicos listados en la web, pero sé consciente de que quienquiera que opere el servidor puede ver a dónde van las peticiones y cualquier dato no cifrado que se transmita. Para usar Shadowsocks una vez instalado configura la URL del proxy SOCKS5 en tu dispositivo, navegador o aplicación como http://<tu_freedombox>:1080/. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Sharing.raw.wiki b/doc/manual/es/Sharing.raw.wiki new file mode 100644 index 000000000..a81150246 --- /dev/null +++ b/doc/manual/es/Sharing.raw.wiki @@ -0,0 +1,53 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Sharing|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Sharing (Publicación de Archivos) == +|| {{attachment:FreedomBox/Manual/Sharing/Sharing-icon_en_V01.png|Sharing icon}} || + +'''Disponible desde''': versión 0.25 + +=== ¿Qué es la app Sharing? === + +'''Sharing''' es una aplicación que te permite compartir contenido via web. El contenido compartido pueden ser archivos individuales o directorios completos. + +El contenido se puede compartir públicamente o restringido a usuarios de una lista de grupos autorizados. Los usuarios autorizados podrán acceder al contenido compartido desde su navegador web en {{{https://tu_freedombox/share/nombre_del_contenido}}}. Los usuarios que no pertenezcan a ninguno de los grupos autorizados no verán ni accederán al contenido mediante este mecanismo. + +=== Editando comparticiones === + +Para que los usuarios accedan al contenido mediante su navegador debe existir y tener una compartición. Una compartición es una entrada en la aplicación Sharing que relaciona: + * El Nombre (y por tanto la URL) que usarán los usuarios para solicitar el contenido, + * el Ruta de acceso al contenido a servir y + * el modo de compartición. Si es restringido, también contendrá la lista de grupos autorizados. +En el mismo servidor pueden coexistir múltiples comparticiones. + +Sólo los administradores pueden crear, editar o eliminar comparticiones. Encontrarán la aplicación ''Sharing'' en la sección Aplicacions del interfaz web de !FreedomBox. La aplicación ''Sharing'' es una aplicación web fácil de usar y con un interfaz evidente. + +Cada compartición tiene su priopio ajuste de modo de compartición (pública o restrigida). Sólo los grupos que reconoce el servicio !FreedomBox se pueden combinar en la lista de grupos autorizados. La aplicación ''Sharing'' no ofrecerá los grupos creados en el interfaz de línea de órdenes. + +=== Provisionar/actualizar el contenido === + +El contenido se puede crear antes o después de crear la compartición y se pueden actualizar independientemente. + +No hay que ser administrador para provisionar el contenido. Cualquier usuario con acceso de escritura en la ruta de acceso a la compartición puede crearlo o actualizarlo. + +Varias comparticiones podrían apuntar al mismo contenido. + +Si eres usuario de !FreedomBox y tu administrador se niega a crearte comparticiones, y no necesitas restringir el acceso a tu contenido, todavía puedes recurrir al mecanismo de [[es/FreedomBox/Manual/Apache_userdir|Sitios web de Usuario]] o a las redes entre pares (P2P) ([[es/FreedomBox/Manual/Deluge|Deluge]] o [[es/FreedomBox/Manual/Transmission|Transmission]] para Torrent, o [[es/FreedomBox/Manual/MLDonkey|MLDonkey]]) para publicar tus archivos. + +=== Tecnicismos === +''Sharing'' compartirá el contenido usando el servidor web Apache que viene de serie. + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Snapshots.raw.wiki b/doc/manual/es/Snapshots.raw.wiki new file mode 100644 index 000000000..93f8ca957 --- /dev/null +++ b/doc/manual/es/Snapshots.raw.wiki @@ -0,0 +1,34 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Snapshots|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Almacén de instantáneas == + +Las ''Instantáneas'' te permiten crear instantáneas del sistema de archivos y devolver al sistema a un estado anterior. + + * Nota: Esta funcionalidad requiere un sistema de archivos ''Btrfs''. Todas las imágenes de disco de !FreedomBox estables usan ''Btrfs''. + +{{attachment:FreedomBox/Manual/Snapshots/snapshots_v2.png|Instantáneas|width=800}} + + +Hay tres tipos de instantáneas: + * De Arranque: Tomada cuando el sistema arranca, + * De Instalación de Software (apt): Tomada cuando el software se instala o actualiza, + * De Línea de Tiempo: Tomada cada hora, día, semana, més, o año. + +Las instantáneas de Línea de Tiempo e Instalación de Software se pueden activar y desactivar, y puedes limitar la cantidad de cada tipo de instantánea Timeline. También puedes establecer un porcentaje de espacio en disco a conservar. + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Snapshots.raw.xml b/doc/manual/es/Snapshots.raw.xml deleted file mode 100644 index 455662cef..000000000 --- a/doc/manual/es/Snapshots.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Snapshots32020-05-30 19:55:19SunilMohanAdapaMatch title with FreedomBox interface22020-04-04 21:17:11fioddorCorrección menor12019-06-20 14:29:35fioddorSe crea la versión española.
Almacén de instantáneasLas Instantáneas te permiten crear instantáneas del sistema de archivos y devolver al sistema a un estado anterior. Nota: Esta funcionalidad requiere un sistema de archivos Btrfs. Todas las imágenes de disco de FreedomBox estables usan Btrfs. Instantáneas Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Storage.raw.wiki b/doc/manual/es/Storage.raw.wiki new file mode 100644 index 000000000..2b3f57ccc --- /dev/null +++ b/doc/manual/es/Storage.raw.wiki @@ -0,0 +1,40 @@ +## page was renamed from FreedomBox/Manual/Disks +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Storage|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Almacenamiento == + +''Almacenamiento'' te permite ver los dispositivos de almacenamiento conectados a tu !FreedomBox y el uso de su espacio. + +!FreedomBox puede detectar y montar automáticamente medios extraíbles como unidades flash USB. Se muestran listados bajo la sección ''Dispositivos extraíbles'' junto con una opción para expulsarlos. + +Si queda espacio libre detrás de la partición de ''root'', se mostrará también la opción para expandirla. Normalmente no se muestra ya que en el primer arranque de la !FreedomBox se produce automáticamente una expansión total de la partición de ''root''. + +{{attachment:Storage.png||width=800}} + +=== Operación de almacenamiento avanzada === + +Cockpit proporciona muchas funcionalidades de almacenamiento más avanzadas que las de !FreedomBox. Ambos, !FreedomBox y Cockpit, operan sobre el demonio de almacenamiento Udisks2 y son por ello compatibles entre sí. Entre las funciones proporcionadas por Cockpit se incluyen: + + * Formatear un disco o partición con un nuevo sistema de ficheros. + * Añadir, eliminar particiones o borrar la tabla de particiones. + * Crear y desbloquear sistemas de ficheros cifrados. + * Crear y administrar dispositivos RAID. + +{{attachment:storage-cockpit.png}} + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Storage.raw.xml b/doc/manual/es/Storage.raw.xml deleted file mode 100644 index f3a391fca..000000000 --- a/doc/manual/es/Storage.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Storage22020-05-24 08:44:49fioddorSe alinea con la versión 12 en inglés del 24 de mayo de 202012019-06-20 14:42:39fioddorSe crea la versión española.
AlmacenamientoAlmacenamiento te permite ver los dispositivos de almacenamiento conectados a tu FreedomBox y el uso de su espacio. FreedomBox puede detectar y montar automáticamente medios extraíbles como unidades flash USB. Se muestran listados bajo la sección Dispositivos extraíbles junto con una opción para expulsarlos. Si queda espacio libre detrás de la partición de root, se mostrará también la opción para expandirla. Normalmente no se muestra ya que en el primer arranque de la FreedomBox se produce automáticamente una expansión total de la partición de root. Storage.png
Operación de almacenamiento avanzadaCockpit proporciona muchas funcionalidades de almacenamiento más avanzadas que las de FreedomBox. Ambos, FreedomBox y Cockpit, operan sobre el demonio de almacenamiento Udisks2 y son por ello compatibles entre sí. Entre las funciones proporcionadas por Cockpit se incluyen: Formatear un disco o partición con un nuevo sistema de ficheros. Añadir, eliminar particiones o borrar la tabla de particiones. Crear y desbloquear sistemas de ficheros cifrados. Crear y administrar dispositivos RAID. storage-cockpit.png Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Syncthing.raw.wiki b/doc/manual/es/Syncthing.raw.wiki new file mode 100644 index 000000000..fc28d3995 --- /dev/null +++ b/doc/manual/es/Syncthing.raw.wiki @@ -0,0 +1,65 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Syncthing|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Syncthing (Sincronización de Archivos) == +|| {{attachment:FreedomBox/Manual/Syncthing/Syncthing-icon_en_V01.png|icono de Syncthing}} || + +'''Disponible desde''': versión 0.14.0 + +Con ''Syncthing'' instalado en tu !FreedomBox puedes sincronizar contenido desde otros dispositivos a tu !FreedomBox y vice-versa. Por ejemplo puedes mantener sincronizadas las fotos tomadas desde tu teléfono móvil con tu !FreedomBox. + +Syncthing es una solución de sincronización entre pares, no una de tipo cliente-servidor. Esto implica que !FreedomBox no es realmente el servidor y tus otros dispositivos no son sus clientes. Desde la perspectiva de Syncthing todos son dispositivos equivalentes. Puedes emplear Syncthing para sincronizar tus archivos entre cualquiera de tus dispositivos. La ventaja que aporta !FreedomBox consiste en que como es un servidor está encendida (casi) siempre. Supón que quieres sincronizar las fotos de tu teléfono con tu portátil. Si sincronizas tu teléfono con !FreedomBox el portátil podrá obtenerlas desde la !FreedomBox cuando vuelva a conectarse. No necesitas preocuparte de cuando se conectan los otros dispositivos. Si tu !FreedomBox es uno de los dispositivos configurados con la carpeta compartida de Syncthing puedes estár tranquilo que tus otros dispositivos se sincronizarán en cuanto se conecten. + +Tras instalarlo sigue estas instrucciones del proyecto Syncthing: [[https://docs.syncthing.net/intro/getting-started.html|Arrancando]]. + +Syncthing permite compartir selectivamente carpetas individuales. Antes de compartir los dispositivos tienen que estar emparejados leyendo códigos QR o introduciendo manualmente identificadores de dispositivo. Syncthing tiene un servicio de autodescubrimiento para identicar fácilmente a los otros dispositivos de la misma subred que tengan Syncthing instalado. + +Para acceder al cliente web de la instancia Syncthing que se ejecuta en tu !FreedomBox, usa la ruta `/syncthing`. Actualmente este cliente web está accesible solo a los usuarios de !FreedomBox que tengan privilegios de administrador aunque en alguna futura versión podría estarlo a todos los usuarios de !FreedomBox. + +{{attachment:Syncthing_GUI.png|Syncthing web interface|width=800}} + +Syncthing tiene apps Android disponibles en [[https://f-droid.org/repository/browse/?fdid=com.nutomic.syncthingandroid | F-Droid]] y [[https://play.google.com/store/apps/details?id=com.nutomic.syncthingandroid |Google Play]]. También hay disponibles aplicaciones de escritorio multiplataforma. + + +Para más información acerca de Syncthing visita su [[https://syncthing.net | sitio web oficial]] y su [[https://docs.syncthing.net | documentación]]. + +=== Sincronizar via Tor === + +Syncthing debe sincronizar automáticamente con tu FreedomBox incluso cuando esta solo sea accesible como servicio Tor Onion. + +Si quieres enrutar tu cliente Syncthing via Tor configura la variable de entorno `all_proxy`: + +{{{ +$ all_proxy=socks5://localhost:9050 syncthing +}}} + +Para más información mira la documentación de Syncthing acerca de [[https://docs.syncthing.net/users/proxying.html | el uso de proxies]]. + +=== Evitar repetidores de Syncthing === + +Syncthing emplea por defecto conexiones dinámicas para conectar con otros pares. Esto significa que si estás sincronizando a través de Internet, los datos quizá tengan que atravesar repetidores de Syncthing públicos para alcanzar tus dispositivos. Esto desaprovecha que tu !FreedomBox tenga una dirección IP pública. + +Al añadir tu !FreedomBox como dispositivo en otros clientes de Syncthing establece tu dirección como "tcp://" en vez de "dinámica". Esto permite a tus pares Syncthing conectarse diréctamente a tu !FreedomBox eludiendo la necesidad de repetidores. También permite sincronización rápida bajo demanda si no quieres mantener a Syncthing ejecuándose todo el tiempo en tus dispositivos móviles. + +=== Usar Syncthing con otras aplicaciones === + +==== Administrador de contraseñas ==== + +Los administradores de contraseñas que almacenan sus bases de datos en ficheros son susceptibles de sincronizarse usando Syncthing. El siguiente ejemplo describe el uso de un administrador de contraseñas libre llamado KeePassXC en combinación con Syncthing para servir como remplazo para administradores de contraseñas privativos que almacenan tus contraseñas en la nube. + +KeePassXC almacena usuarios, contraseñas, etc en ficheros con la extensión .kdbx. Estos ficheros .kdbx se pueden almacenar en una carpeta compartida Syncthing para mantenerlos sincronizados en multiples máquinas. Hay disponibles, tanto para escritorio como para dispositivos móviles, aplicaciones de software libre que pueden leer este formato de fichero. Habitualmente sólo tienes que apuntar la aplicación al fichero .kdbx e introducir la contraseña maestra para acceder a tus credenciales almacenadas. Por ejemplo, el mismo fichero .kdbx se puede consultar empleando KeePassXC en el escritorio y KeePassDX en Android. Instalando una extensión se puede usar también KeePassXC para rellenar credenciales en los campos de ingreso (login) en el navegador. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Syncthing.raw.xml b/doc/manual/es/Syncthing.raw.xml deleted file mode 100644 index ab828b9eb..000000000 --- a/doc/manual/es/Syncthing.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Syncthing72020-05-30 19:44:24SunilMohanAdapaUpdate the title to emphasize app name over its generic name62020-05-24 06:54:22fioddorSe alinea con la versión 19 en inglés del 23 de mayo de 202052019-11-14 18:11:07fioddorSe alinea con la versión 18 en inglés del 11 de noviembre de 201942019-11-04 11:25:50fioddorSe alinea con la versión 14 del 01 de noviembre de 201932019-10-28 09:30:15fioddorSe alinea con la versión 14 del 27 de octubre de 201922019-09-11 15:32:18fioddorSe crea la versión española.12019-09-11 15:25:11fioddorSe crea la versión española.
Syncthing (Sincronización de Archivos)Con Syncthing instalado en tu FreedomBox puedes sincronizar contenido desde otros dispositivos a tu FreedomBox y vice-versa. Por ejemplo puedes mantener sincronizadas las fotos tomadas desde tu teléfono móvil con tu FreedomBox. Disponible desde versión: 0.14. Syncthing es una solución de sincronización entre pares, no una de tipo cliente-servidor. Esto implica que FreedomBox no es realmente el servidor y tus otros dispositivos no son sus clientes. Desde la perspectiva de Syncthing todos son dispositivos equivalentes. Puedes emplear Syncthing para sincronizar tus archivos entre cualquiera de tus dispositivos. La ventaja que aporta FreedomBox consiste en que como es un servidor está encendida (casi) siempre. Supón que quieres sincronizar las fotos de tu teléfono con tu portátil. Si sincronizas tu teléfono con FreedomBox el portátil podrá obtenerlas desde la FreedomBox cuando vuelva a conectarse. No necesitas preocuparte de cuando se conectan los otros dispositivos. Si tu FreedomBox es uno de los dispositivos configurados con la carpeta compartida de Syncthing puedes estár tranquilo que tus otros dispositivos se sincronizarán en cuanto se conecten. Tras instalarlo sigue estas instrucciones del proyecto Syncthing: Arrancando. Syncthing permite compartir selectivamente carpetas individuales. Antes de compartir los dispositivos tienen que estar emparejados leyendo códigos QR o introduciendo manualmente identificadores de dispositivo. Syncthing tiene un servicio de autodescubrimiento para identicar fácilmente a los otros dispositivos de la misma subred que tengan Syncthing instalado. Para acceder al cliente web de la instancia Syncthing que se ejecuta en tu FreedomBox, usa la ruta /syncthing. Actualmente este cliente web está accesible solo a los usuarios de FreedomBox que tengan privilegios de administrador aunque en alguna futura versión podría estarlo a todos los usuarios de FreedomBox. Syncthing web interface Syncthing tiene apps Android disponibles en F-Droid y Google Play. También hay disponibles aplicaciones de escritorio multiplataforma. Para más información acerca de Syncthing visita su sitio web oficial y su documentación.
Sincronizar via TorSyncthing debe sincronizar automáticamente con tu FreedomBox incluso cuando esta solo sea accesible como servicio Tor Onion. Si quieres enrutar tu cliente Syncthing via Tor configura la variable de entorno all_proxy: Para más información mira la documentación de Syncthing acerca de el uso de proxies.
Evitar repetidores de SyncthingSyncthing emplea por defecto conexiones dinámicas para conectar con otros pares. Esto significa que si estás sincronizando a través de Internet, los datos quizá tengan que atravesar repetidores de Syncthing públicos para alcanzar tus dispositivos. Esto desaprovecha que tu FreedomBox tenga una dirección IP pública. Al añadir tu FreedomBox como dispositivo en otros clientes de Syncthing establece tu dirección como "tcp://<mi.dominio.freedombox>" en vez de "dinámica". Esto permite a tus pares Syncthing conectarse diréctamente a tu FreedomBox eludiendo la necesidad de repetidores. También permite sincronización rápida bajo demanda si no quieres mantener a Syncthing ejecuándose todo el tiempo en tus dispositivos móviles. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/TinyTinyRSS.raw.wiki b/doc/manual/es/TinyTinyRSS.raw.wiki new file mode 100644 index 000000000..b7f928aed --- /dev/null +++ b/doc/manual/es/TinyTinyRSS.raw.wiki @@ -0,0 +1,92 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/TinyTinyRSS|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Tiny Tiny RSS (Lector de Feeds de Noticias) == +|| {{attachment:FreedomBox/Manual/TinyTinyRSS/TinyTinyRSS-icon_en_V01.png|Tiny Tiny RSS icon}} || + +'''Disponible desde''': versión 0.9 + +''Tiny Tiny RSS'' es un lector y agregador de ''feeds'' de noticias (RSS/Atom) diseñado para leer noticias desde cualquier lugar con una experiencia lo más parecida posible a una aplicación de escritorio. + +Cualquier usuario creado mediante el interfaz web de !FreedomBox podrá ingresar y usar esta app. Cada usuario tiene sus propios ''feeds'', estado y preferencias. + +=== Usar el interfaz web === + +Cuando esté habilitado Tiny Tiny RSS estará disponible en la ruta ''/tt-rss'' del servidor web. Cualquier usuario creado mediante !FreedomBox podrá ingresar y usar esta app. + +{{attachment:ttrss.png|Tiny Tiny RSS|width=800}} + +==== Añadir un nuevo feed ==== + +1. Ve a la página cuyo feed quieras y copia su enlace RSS/Atom feed. + +{{attachment:Select-RSS-feed.png|Selecting feeds|width=800}} + +2. Selecciona "Subscribirse al feed.." en el desplegable Acciones. + +{{attachment:Subscribe-to-feed.png|Subscribe to feed}} + +3. Pega la URL que has copiado en el diálogo que aparece y pulsa el botón '''Subscribirse'''. + +{{attachment:Subscribe-dialog.png|Subscription dialog box|width=800}} + +Dale un minuto a la aplicación para obtener los ''feeds''. + +En algunos sitios web el botón de ''feeds'' RSS no está claramente visible. En tal caso simplemente pega la URL del sitio web en el diálogo Subscribirse y deja que TT-RSS detecte automáticamente los ''feeds'' RSS que haya en la página. + +Puedes probarlo ahora con la página principal de [[https://en.wikinews.org/wiki/Main_Page|WikiNews]] + +Como puedes ver en la imagen seguiente TT-RSS ha detectado y añadido el ''feed'' Atom de !WikiNews a nuestra lista de ''feeds''. + +{{attachment:WikiNews-feed.png|WikiNews feed added}} + +Si no quieres conservar este ''feed'' haz clic con el botón derecho del ratón en el ''feed'' de la imagen anterior, selecciona '''Editar feed''' y dale a '''Desubscribir''' en el diálogo que aparece. + +{{attachment:Unsubscribe.png|Unsubscribe from a feed|width=800}} + + +==== Importar tus feeds desde otro lector ==== + +Encuentra en tu lector de ''feeds'' previo una opción para ''Exportar'' tus ''feeds'' a un fichero. Si tiene que elegir entre varios formatos elige OPML. Pongamos que tu fichero de ''feeds'' exportados se llama Subscriptions.opml + +Haz click en la esquina superior izquierda el menú ''Acciones'' y selecciona ''Preferencias''. Se te llevará a otra página. + +En la cabecera superior selecciona la 2ª solapa llamada ''Feeds''. Tiene varias secciones y la 2ª se llama ''OPML''. Selecciónala. + +{{attachment:OPML.png| OPML feeds page|width=960}} + +Para importar tu fichero Subscriptions.opml a TT-RSS, + 1. Haz clic en ''Examinar...'' y selecciona el fichero en tu sistema de archivos. + 2. Haz clic en ''Importar mi OPML'' + +Tras importar se te llevará a la sección '''Feeds''' que está en la página encima de la de OPML. Puedes ver que los ''feeds'' del lector previo figuran ahora importados en Tiny Tiny RSS. Ahora puedes empezar a usar Tiny Tiny RSS como tu lector principal. + + +=== Usar la app móvil === + +La app oficial para Android del proyecto Tiny Tiny RSS funciona con el servidor Tiny Tiny RSS de !FreedomBox. Se sabe que la aplicación anterior TTRSS-Reader '''no''' funciona. + +Desafortunadamente la app oficial para Android solo está disponible en la Play Store de Google y no en F-Droid. Todavía puedes obtener el código fuente y compilar el fichero apk por tu cuenta. + +Para configurarla, primero instálala y entonces en la página de configuración pon ''https:///tt-rss-app/'' como URL. Pon tu usuario y contraseña en los detalles del Login así como los detalles de Autenticación HTTP. Si tu !FreedomBox no tiene un certificado HTTPS válido configuralo para que admita cualquier certificado SSL y cualquier servidor. + +{{attachment:ttrssapp1.png|Tiny Tiny RSS|width=288}} +{{attachment:ttrssapp2.png|Tiny Tiny RSS|width=288}} +{{attachment:ttrssapp3.png|Tiny Tiny RSS|width=288}} +{{attachment:ttrssapp4.png|Tiny Tiny RSS|width=288}} +{{attachment:ttrssapp5.png|Tiny Tiny RSS|width=288}} + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/TinyTinyRSS.raw.xml b/doc/manual/es/TinyTinyRSS.raw.xml deleted file mode 100644 index 799b28f63..000000000 --- a/doc/manual/es/TinyTinyRSS.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/TinyTinyRSS32020-05-30 19:44:55SunilMohanAdapaUpdate the title to emphasize app name over its generic name22020-05-24 07:02:15fioddorSe alinea con la versión 12 en inglés del 23 de mayo de 202012019-09-13 17:05:05fioddorSe crea la versión española.
Tiny Tiny RSS (Lector de Feeds de Noticias)Tiny Tiny RSS es un lector y agregador de feeds de noticias (RSS/Atom) diseñado para leer noticias desde cualquier lugar con una experiencia lo más parecida posible a una aplicación de escritorio. Cualquier usuario creado mediante el interfaz web de FreedomBox podrá ingresar y usar esta app. Cada usuario tiene sus propios feeds, estado y preferencias.
Usar el interfaz webCuando esté habilitado Tiny Tiny RSS estará disponible en la ruta /tt-rss del servidor web. Cualquier usuario creado mediante FreedomBox podrá ingresar y usar esta app. Tiny Tiny RSS
Añadir un nuevo feed1. Ve a la página cuyo feed quieras y copia su enlace RSS/Atom feed. Selecting feeds 2. Selecciona "Subscribirse al feed.." en el desplegable Acciones. Subscribe to feed 3. Pega la URL que has copiado en el diálogo que aparece y pulsa el botón Subscribirse. Subscription dialog box Dale un minuto a la aplicación para obtener los feeds. En algunos sitios web el botón de feeds RSS no está claramente visible. En tal caso simplemente pega la URL del sitio web en el diálogo Subscribirse y deja que TT-RSS detecte automáticamente los feeds RSS que haya en la página. Puedes probarlo ahora con la página principal de WikiNews Como puedes ver en la imagen seguiente TT-RSS ha detectado y añadido el feed Atom de WikiNews a nuestra lista de feeds. WikiNews feed added Si no quieres conservar este feed haz clic con el botón derecho del ratón en el feed de la imagen anterior, selecciona Editar feed y dale a Desubscribir en el diálogo que aparece. Unsubscribe from a feed
Importar tus feeds desde otro lectorEncuentra en tu lector de feeds previo una opción para Exportar tus feeds a un fichero. Si tiene que elegir entre varios formatos elige OPML. Pongamos que tu fichero de feeds exportados se llama Subscriptions.opml Haz click en la esquina superior izquierda el menú Acciones y selecciona Preferencias. Se te llevará a otra página. En la cabecera superior selecciona la 2ª solapa llamada Feeds. Tiene varias secciones y la 2ª se llama OPML. Selecciónala. OPML feeds page Para importar tu fichero Subscriptions.opml a TT-RSS, Haz clic en Examinar... y selecciona el fichero en tu sistema de archivos. Haz clic en Importar mi OPML Tras importar se te llevará a la sección Feeds que está en la página encima de la de OPML. Puedes ver que los feeds del lector previo figuran ahora importados en Tiny Tiny RSS. Ahora puedes empezar a usar Tiny Tiny RSS como tu lector principal.
Usar la app móvilLa app oficial para Android del proyecto Tiny Tiny RSS funciona con el servidor Tiny Tiny RSS de FreedomBox. Se sabe que la aplicación anterior TTRSS-Reader no funciona. Desafortunadamente la app oficial para Android solo está disponible en la Play Store de Google y no en F-Droid. Todavía puedes obtener el código fuente y compilar el fichero apk por tu cuenta. Para configurarla, primero instálala y entonces en la página de configuración pon como URL. Pon tu usuario y contraseña en los detalles del Login así como los detalles de Autenticación HTTP. Si tu FreedomBox no tiene un certificado HTTPS válido configuralo para que admita cualquier certificado SSL y cualquier servidor. Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Tiny Tiny RSS Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Tor.raw.wiki b/doc/manual/es/Tor.raw.wiki new file mode 100644 index 000000000..9f9c606b2 --- /dev/null +++ b/doc/manual/es/Tor.raw.wiki @@ -0,0 +1,85 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Tor|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Tor (Red para el anonimato) == +|| {{attachment:FreedomBox/Manual/Tor/Tor-icon_en_V01.png|icono de Tor}} || + +'''Disponible desde''': versión 0.3 + +=== ¿Qué es Tor? === + +''Tor'' es una red de servidores operada por voluntarios. Permite a los usuarios de esos servidores mejorar su privacidad y seguridad cuando navegan por Internet. Tu y tus amigos podéis acceder a tu !FreedomBox a través de la red Tor sin revelar su dirección IP. Activando la aplicación Tor en tu !FreedomBox podrás ofrecer servicios remotos (chat, wiki, file sharing, etc...) sin mostrar tu localización. Esta aplicación te dará una protección mejor que un servidor web público porque estarás menos expuesto a gente intrusiva. + +=== Usar Tor para navegación anónima === +''Tor Browser'' es la manera recomendada para navegar la web a través de Tor. Puedes descargar Tor Browser desde https://www.torproject.org/projects/torbrowser.html y seguir sus instrucciones para instalarlo y ejecutarlo. + +=== Usar Servicio Tor Onion para acceder a tu FreedomBox === +El ''Servicio Tor Onion'' proporciona una manera de acceder a tu !FreedomBox incluso aunque esté detrás de un router, cortafuegos, o redirector NAT (p.ej. si tu proveedor de Internet no proporciona una dirección pública IPv4 para tu router). +Para habilitar el ''Servicio Tor Onion'' primero navega a la página ''Red para el anónimato (Tor)''. (Si no la ves haz clic en el logo de !FreedomBox de arriba a la izquierda de la página y ve a la página principal de Apps.) En la página ''Red para el anónimato (Tor)'', bajo ''Configuración'', habilita la caja ''Habilitar los Servicios Tor Onion'' y pulsa el botón de ''Actualizar configuración''. Tor se reconfigurará y se reiniciará. + +Transcurrido un rato la página se refrescará bajo ''Estado'' verás la tabla que lista la dirección .onion del servicio. Copia toda la dirección (que termina en .onion) y pégala en el campo dirección de ''Tor Browser''. Deberías poder acceder a tu !FreedomBox. (Quizá veas un aviso de certificado porque !FreedomBox tiene un certificado autofirmado.) + +{{attachment:tor_browser_plinth.png|Tor Configuration - FreedomBox|width=800}} + Onion +Actualmente solo HTTP (puerto 80), HTTPS (puerto 443) y SSH (puerto 22) están accesibles a través del ''Servicio Tor Onion'' configurado en la !FreedomBox. + +=== Apps accesibles via Tor === + +Las siguientes apps se pueden acceder a través de Tor. Esta lista puede ser incompleta. + + * Calendario y Libreta de direcciones ([[es/FreedomBox/Manual/Radicale|Radicale]]) + * Sincronización de ficheros ([[es/FreedomBox/Manual/Syncthing|Syncthing]]) + * Búsqueda Web ([[es/FreedomBox/Manual/Searx|Searx]]) + * Wiki ([[es/FreedomBox/Manual/MediaWiki|MediaWiki]]) + * Wiki y Blog ([[es/FreedomBox/Manual/Ikiwiki|Ikiwiki]]) + +=== Ejecutar un nodo Tor === +Cuando se instala Tor se configura por defecto para ejecutarse como puente a la red (''bridge relay''). Esta opción se puede deshabilitar en la página de configuración de Tor de !FreedomBox. + +En la parte inferior de página de Tor de !FreedomBox hay una lista de puertos que usa el puente a la red Tor. Si tu !FreedomBox está detrás de un router necesitarás configurar la redirección de puertos de tu router para que estos puertos sean accesibles desde Internet. + +Los requisitos para ejecutar un puente a la red se listan en la [[https://community.torproject.org/relay/|Tor Relay Guide]]. En resúmen, se + * recomienda que un puente tenga disponibles para Tor al menos 16 Mbit/s (Mbps) de ancho de banda para subida y bajada. Mejor más. + * requiere que a se le permita al puente usar un mínimo de 100 GByte de tráfico mensual de salida y de entrada. + * recomienda que un nodo sin salida (mero reenrutador) de <40 Mbit/s tenga al menos 512 MB de RAM disponible; Uno más rápido de 40 Mbit/s debería tener al menos 1 GB de RAM. + +=== Usar el puerto Tor SOCKS (avanzado) === +!FreedomBox proporciona un puerto Tor SOCKS al que pueden conectar otras aplicaciones para enrutar su tráfico a través de la red Tor. Este puerto es accesible a cualquier interfaz (de red) configurado en la zona interna del cortafuegos. Para configurar la aplicación apunta el ''Host SOCKS'' a la dirección IP interna de la conexión y pon el ''Puerto SOCKS'' a 9050. + +==== Exjemplo con Firefox ==== + +Tu navegador web se puede configurar para emplear la red Tor para toda tu actividad de navegación. Esto permite eludir la censura y oculta tu dirección IP a los sitios web durante la navegación normal. Para anonimato se recomienda usar el Navegador Tor. + +Configura tu dirección IP local de !FreedomBox y el puerto 9050 como un proxy SOCKS en Firefox. Hay extensiones para facilitar la activación y desactivación del proxy. + +{{attachment:tor-socks-firefox.png|Configuring Firefox with Tor SOCKS proxy|width=800}} + +Con en proxy SOCKS configurado puedes acceder cualquier URL de tipo ''onion'' diréctamente desde Firefox. !FreedomBox tiene una dirección onion v3 propia a la que puedes conectarte por la red Tor (guárdala en tus favoritos para usarla en situaciones de emergencia). + + +=== Eludiendo la censura de Tor === +Si tu proveedor de Internet (ISP) está tratando de bloquear el tráfico Tor puedes usar puentes (a la red Tor) para conectar (a la red Tor). + +1. Obtén la configuración de los puentes de [[https://bridges.torproject.org/bridges|Tor BridgeDB]] + +{{attachment:tor-bridge-db.png|Tor BridgeDB|width=800}} + +2. Añade las líneas a la configuración de Tor de tu !FreedomBox como se muestra. + +{{attachment:tor-bridge-configuration.png|Tor Configuration Page|width=800}} + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Tor.raw.xml b/doc/manual/es/Tor.raw.xml deleted file mode 100644 index fdde1dc15..000000000 --- a/doc/manual/es/Tor.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Tor122020-05-30 19:45:14SunilMohanAdapaUpdate the title to emphasize app name over its generic name112020-05-23 22:56:09fioddorSe alinea con la versión 25 en inglés del 23 de mayo de 2020102019-11-30 18:08:09fioddorSe alinea con la versión 23 en inglés del 28 de noviembre de 201992019-11-14 17:59:44fioddorSe alinea con la versión 22 en inglés del 11 de noviembre de 201982019-10-28 09:44:53fioddorSe alinea con la versión 21 del 27 de octubre de 201972019-10-21 13:54:58fioddorCorrección menor62019-09-03 15:18:40fioddorMejora menor52019-09-03 15:17:22fioddortraducción de la sección TOR finalizada.42019-09-03 15:11:56fioddorSe incorpora la traducción de una sección nueva.32019-09-03 15:04:38fioddorSe incorpora la traducción de una sección nueva.22019-09-03 14:49:23fioddorSe incorpora la traducción de una sección nueva.12019-09-03 14:32:43fioddorSe crea la versión española (traducción incompleta).
Tor (Red para el anonimato)
¿Qué es Tor?Tor es una red de servidores operada por voluntarios. Permite a los usuarios de esos servidores mejorar su privacidad y seguridad cuando navegan por Internet. Tu y tus amigos podéis acceder a tu FreedomBox a través de la red Tor sin revelar su dirección IP. Activando la aplicación Tor en tu FreedomBox podrás ofrecer servicios remotos (chat, wiki, file sharing, etc...) sin mostrar tu localización. Esta aplicación te dará una protección mejor que un servidor web público porque estarás menos expuesto a gente intrusiva.
Usar Tor para navegación anónimaTor Browser es la manera recomendada para navegar la web a través de Tor. Puedes descargar Tor Browser desde y seguir sus instrucciones para instalarlo y ejecutarlo.
Usar Servicio Tor Onion para acceder a tu FreedomBoxEl Servicio Tor Onion proporciona una manera de acceder a tu FreedomBox incluso aunque esté detrás de un router, cortafuegos, o redirector NAT (p.ej. si tu proveedor de Internet no proporciona una dirección pública IPv4 para tu router). Para habilitar el Servicio Tor Onion primero navega a la página Red para el anónimato (Tor). (Si no la ves haz clic en el logo de FreedomBox de arriba a la izquierda de la página y ve a la página principal de Apps.) En la página Red para el anónimato (Tor), bajo Configuración, habilita la caja Habilitar los Servicios Tor Onion y pulsa el botón de Actualizar configuración. Tor se reconfigurará y se reiniciará. Transcurrido un rato la página se refrescará bajo Estado verás la tabla que lista la dirección .onion del servicio. Copia toda la dirección (que termina en .onion) y pégala en el campo dirección de Tor Browser. Deberías poder acceder a tu FreedomBox. (Quizá veas un aviso de certificado porque FreedomBox tiene un certificado autofirmado.) Tor Configuration - FreedomBox Onion Actualmente solo HTTP (puerto 80), HTTPS (puerto 443) y SSH (puerto 22) están accesibles a través del Servicio Tor Onion configurado en la FreedomBox.
Apps accesibles via TorLas siguientes apps se pueden acceder a través de Tor. Esta lista puede ser incompleta. Calendario y Libreta de direcciones (Radicale) Sincronización de ficheros (Syncthing) Búsqueda Web (Searx) Wiki (MediaWiki) Wiki y Blog (Ikiwiki)
Ejecutar un nodo TorCuando se instala Tor se configura por defecto para ejecutarse como puente a la red (bridge relay). Esta opción se puede deshabilitar en la página de configuración de Tor de FreedomBox. En la parte inferior de página de Tor de FreedomBox hay una lista de puertos que usa el puente a la red Tor. Si tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos de tu router para que estos puertos sean accesibles desde Internet. Los requisitos para ejecutar un puente a la red se listan en la Tor Relay Guide. En resúmen, se recomienda que un puente tenga disponibles para Tor al menos 16 Mbit/s (Mbps) de ancho de banda para subida y bajada. Mejor más. requiere que a se le permita al puente usar un mínimo de 100 GByte de tráfico mensual de salida y de entrada. recomienda que un nodo sin salida (mero reenrutador) de <40 Mbit/s tenga al menos 512 MB de RAM disponible; Uno más rápido de 40 Mbit/s debería tener al menos 1 GB de RAM.
Usar el puerto Tor SOCKS (avanzado)FreedomBox proporciona un puerto Tor SOCKS al que pueden conectar otras aplicaciones para enrutar su tráfico a través de la red Tor. Este puerto es accesible a cualquier interfaz (de red) configurado en la zona interna del cortafuegos. Para configurar la aplicación apunta el Host SOCKS a la dirección IP interna de la conexión y pon el Puerto SOCKS a 9050.
Exjemplo con FirefoxTu navegador web se puede configurar para emplear la red Tor para toda tu actividad de navegación. Esto permite eludir la censura y oculta tu dirección IP a los sitios web durante la navegación normal. Para anonimato se recomienda usar el Navegador Tor. Configura tu dirección IP local de FreedomBox y el puerto 9050 como un proxy SOCKS en Firefox. Hay extensiones para facilitar la activación y desactivación del proxy. Configuring Firefox with Tor SOCKS proxy Con en proxy SOCKS configurado puedes acceder cualquier URL de tipo onion diréctamente desde Firefox. FreedomBox tiene una dirección onion v3 propia a la que puedes conectarte por la red Tor (guárdala en tus favoritos para usarla en situaciones de emergencia).
Eludiendo la censura de TorSi tu proveedor de Internet (ISP) está tratando de bloquear el tráfico Tor puedes usar puentes (a la red Tor) para conectar (a la red Tor). 1. Obtén la configuración de los puentes de Tor BridgeDB Tor BridgeDB 2. Añade las líneas a la configuración de Tor de tu FreedomBox como se muestra. Tor Configuration Page Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Transmission.raw.wiki b/doc/manual/es/Transmission.raw.wiki new file mode 100644 index 000000000..f96d0f93a --- /dev/null +++ b/doc/manual/es/Transmission.raw.wiki @@ -0,0 +1,44 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Transmission|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Transmission (Cliente web de BitTorrent) == +|| {{attachment:FreedomBox/Manual/Transmission/Transmission-icon_en_V01.png|Transmission icon}} || + +'''Disponible desde''': versión 0.5 + + +=== ¿Qué es Transmission ? === + +''!BitTorrent'' es un protocolo de comunicaciones para compartir ficheros entre pares (P2P = ''peer-to-peer''). No es anónimo; debes asumir que otros puedan ver qué ficheros estás comprtiendo. Hay 2 clientes web para !BitTorrent disponibles en !FreedomBox: ''Transmission'' y [[es/FreedomBox/Manual/Deluge|Deluge]]. Tienen funcionalidades similares pero quizá prefieras uno sobre otro. + +''Transmission'' es un cliente !BitTorrent ligero, famoso por su simplicidad y una configuración por defecto que "símplemente funciona". + +=== Captura de pantalla === + +{{attachment:transmission.png|Transmission Web Interface|width=800}} + +=== Usar Transmission === + +Tras instalar ''Transmission'' está accesible en {{{https:///transmission}}}. Transmission emplea el ingreso único de !FreedomBox lo que significa que si has ingresado en tu !FreedomBox puedes acceder diréctamente a Transmission sin tener que volver a introducir las credenciales. Si no, se te pedirá que ingreses primero y luego se te redirigirá a la app Transmission. + +=== Consejos === + +==== Transferir Descargas desde la FreedomBox ==== + + * Se puede añadir el directorio de descargas de ''Transmission'' como directorio compartido en la app "Compartir" y así acceder a tus descargas en este directorio compartido empleando un navegador web. + * (Avanzado) Si tienes acceso SSH a tu !FreedomBox puedes usar `sftp` para ver el directorio de descargas usando un gestor de archivos o un navegador apropiados (p.ej. ''dolphin'' o ''Konqueror''). + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Transmission.raw.xml b/doc/manual/es/Transmission.raw.xml deleted file mode 100644 index c219b4b44..000000000 --- a/doc/manual/es/Transmission.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Transmission82020-05-30 19:45:41SunilMohanAdapaUpdate the title to emphasize app name over its generic name, match with FreedomBox interface72020-05-23 22:58:29fioddorSe alinea con la versión 15 en inglés del 23 de mayo de 202062019-10-28 09:16:06fioddorSe alinea con la versión 14 del 27 de octubre de 201952019-09-04 09:38:37fioddorCorrección menor42019-09-04 09:33:40fioddorEnlace a nueva página traducida.32019-09-04 09:19:10fioddorRecomendación de seguridad.22019-09-04 09:17:24fioddorCorrección menor12019-09-04 06:58:07fioddorSe crea la versión española.
Transmission (Cliente web de BitTorrent)
¿Qué es Transmission ?BitTorrent es un protocolo de comunicaciones para compartir ficheros entre pares (P2P = peer-to-peer). No es anónimo; debes asumir que otros puedan ver qué ficheros estás comprtiendo. Hay 2 clientes web para BitTorrent disponibles en FreedomBox: Transmission y Deluge. Tienen funcionalidades similares pero quizá prefieras uno sobre otro. Transmission es un cliente BitTorrent ligero, famoso por su simplicidad y una configuración por defecto que "símplemente funciona".
Captura de pantallaTransmission Web Interface
Usar TransmissionTras instalar Transmission está accesible en https://<tu freedombox>/transmission. Transmission emplea el ingreso único de FreedomBox lo que significa que si has ingresado en tu FreedomBox puedes acceder diréctamente a Transmission sin tener que volver a introducir las credenciales. Si no, se te pedirá que ingreses primero y luego se te redirigirá a la app Transmission.
Consejos
Transferir Descargas desde la FreedomBoxSe puede añadir el directorio de descargas de Transmission como directorio compartido en la app "Compartir" y así acceder a tus descargas en este directorio compartido empleando un navegador web. (Avanzado) Si tienes acceso SSH a tu FreedomBox puedes usar sftp para ver el directorio de descargas usando un gestor de archivos o un navegador apropiados (p.ej. dolphin o Konqueror). Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/USBWiFi.raw.wiki b/doc/manual/es/USBWiFi.raw.wiki new file mode 100644 index 000000000..b5832790e --- /dev/null +++ b/doc/manual/es/USBWiFi.raw.wiki @@ -0,0 +1,31 @@ +== USB Wi-Fi == +!FreedomBox works on many single board computers. However, many of these boards do not have built-in Wi-Fi capabilities. Even when Wi-Fi capability is available, non-free proprietary firmware is required to make them work. + +A solution to the problem is to plug-in a USB Wi-Fi device into one of the available USB ports. There are many such devices available which do not require non-free firmware to work. The following is a list of such devices that work with !FreedomBox devices. Some devices based on these chips have tested to work well with !FreedomBox including functions such as access point mode. + + * [[https://wikidevi.com/wiki/AR7010|Devices with Atheros AR7010 chip]] + * [[https://wikidevi.com/wiki/AR9271|Devices with Atheros AR9271 chip]] + +=== Firmware Installation === + +The free firmware for these devices is not packaged in Debian yet. You can manually download and install the firmware as follows: + +{{{ +sudo su [enter password] +cd /lib/firmware +wget https://www.thinkpenguin.com/files/ath9k-htc/version-1.4-beta/htc_9271.fw +wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw +}}} + +=== Resources === + + * [[WiFi#USB_Devices|Debian Wiki on WiFi drivers]] + * [[https://en.wikipedia.org/wiki/Comparison_of_open-source_wireless_drivers#Linux_drivers_for_802.11_.22wireless.22|Wikipedia: Comparison of open-source Linux wireless network drivers]] + * [[https://wikidevi.com/wiki/Main_Page|WikiDevi: database of computer hardware]] + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Upgrades.raw.wiki b/doc/manual/es/Upgrades.raw.wiki new file mode 100644 index 000000000..427c9a413 --- /dev/null +++ b/doc/manual/es/Upgrades.raw.wiki @@ -0,0 +1,63 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Upgrades|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Actualizaciones de Software == + +!FreedomBox puede instalar actualizaciones de seguridad automaticamente. Esta funcionalidad viene activada por defecto y no hace falta ninguna acción manual. Puedes activar las actualizaciones automaticas desde el interfaz web de !FreedomBox en la página ''Actualización'' de la sección ''Sistema''. Se recomienda encarecidamente que tengas esta opción habilitada para mantener tu !FreedomBox segura. + +Las actualizaciones se efectúan cada noche. Si quieres apagar tu !FreedomBox cada día después de usarla, déjala ejecutando una noche a la semana más o menos para permitir que ocurran las actualizaciones automaticas. Otra posibilidad es ejecutar actualizaciones manuales como se describe más adelante. + +Nota que una vez comiencen las actualizaciones podría llevarles mucho tiempo completarse. Durante el proceso de actualización (ya sea el automático nocturno o el manual), no podrás instalar aplicaciones desde el interfaz web de !FreedomBox. + +{{attachment:upgrades_es_v01.png}} + +=== ¿Cuando obtendré las últimas funcionalidades? === + +Aunque las actualizaciones se efectúan a diario por razones de seguridad, las últimas funcionalidades no se propagan a todos los usuarios. A continuación se explica cómo llegan las novedades a los usuarios de las diferentes versiones de Debian: + + * '''Usuarios de versiones estables''': Esta categoria de usuarios incluye a los usuarios que compraron la [[es/FreedomBox/Hardware/PioneerEdition|FreedomBox Pioneer Edition]], a los que instalaron !FreedomBox sobre una distribución estable de [[es/FreedomBox/Hardware/Debian|Debian]] y a los que descargaron las imágenes ''estables'' desde [[https://freedombox.org|freedombox.org]]. Como regla general a estos usuarios solo se les proporciona actualizaciones de seguridad de determinados paquetes. Cuando una ''release'' obtiene la confianza de los desarrolladores el propio servicio !FreedomBox se actualiza, lo que supone una excepción a esta regla. Esto implica que las últimas funcionalidades de !FreedomBox estarán disponibles para estos usuarios aunque no tán inmediata- o frecuentemente como para los usuarios de las versiones en pruebas (''testing''). Si una ''app'' sólo está disponible en la distribución en pruebas (''testing'') pero no en la ''estable'' la ''app'' aparecerá en el interfaz web pero no será instalable para los usuarios de la distribución ''estable''. Algunas ''apps'' se actualizan en excepción a la regla de "solo actualizaciones de seguridad" cuando la ''app'' esté seriamente ''rota'' por algún motivo. Debian libera cada bienio una entrega (''release'') con las últimas versiones estables de cada paquete de software y los desarrolladores de !FreedomBox intentarán actualizar a estos usuarios a la nueva entrega (''release'') sin necesidad de intervención manual. + + * '''Usuarios de versiones en pruebas''': Esta categoria de usuarios incluye a los usuarios que instalaron !FreedomBox sobre una distribución en pruebas (''testing'') y a los que descargaron las imágenes en pruebas (''testing'') desde [[https://freedombox.org|freedombox.org]]. Estos usuarios asumen la posibilidad de afrontar disrupciones ocasionales en los servicios e incluso tener que intervenir manualmente para arreglarlas. Como regla general estos usuarios reciben las últimas funcionalidades y actualizaciones de seguridad para todos los paquetes instalados. Cada quincena se libera una nueva versión de !FreedomBox con todas las últimas funcionalidades y correcciones. Estas versiones llegan a los usuarios de la distribución en pruebas (''testing'') aproximadamente 2 o 3 días después de la liberación. + + * '''Usuarios de versiones inestables''': Esta categoria de usuarios incluye a los usuarios que instalaron !FreedomBox sobre una distribución ''inestable'' y a los que descargaron las imágenes ''inestables'' desde [[https://freedombox.org|freedombox.org]]. Estos usuarios asumen la probabilidad de afrontar disrupciones en los servicios y tener que intervenir manualmente para arreglarlas. Como regla general estos usuarios reciben las últimas funcionalidades y actualizaciones de seguridad para todos los paquetes instalados. Cada quincena se libera una nueva versión de !FreedomBox con todas las últimas funcionalidades y correcciones. Estas versiones llegan a los usuarios de la distribución ''inestable'' el mismo día de la liberación. Solo los desarrolladores, probadores y contribuyentes al proyecto !FreedomBox debieran emplear la distribution ''inestable''. Se advierte y exhorta a los usuarios finales de que no la usen. + +=== Actualizaciones Manuales desde el Terminal === + +Algunos paquetes de software podrían requerir intervención manual para actualizarlos, generalmente por razones de configuración. En tales casos !FreedomBox se actualiza a sí mismo y solicita información nueva necesaria para la actualización del paquete. Después de autoactualizarse !FreedomBox actúa en nombre del usuario y actualiza los paquetes con la información recabada. Estos paquetes no se deben actualizar manualmente hasta que !FreedomBox tenga la posibilidad de actualizarlos. La actualización que se dispara manualmente desde el interfaz web ya es consciente de estos paquetes y no los actualiza. + +En situaciones muy extrañas, !FreedomBox podría fallar o quedar a expensas de una intervención manual desde el terminal. Para esto, entra a !FreedomBox por un terminal, ya sea físico, web (empleando [[es/FreedomBox/Manual/Cockpit|Cockpit]]) o mediante SSH (ver sección [[es/FreedomBox/Manual/SecureShell|Shell Segura]]) y ejecuta los siguientes comandos: + +{{{ +$ sudo su - +Password: +# dpkg --configure -a +# apt update +# apt -f install +# unattended-upgrade --debug +# apt install freedombox +# apt update +}}} + +Si `apt-get update` te pide confirmación para algo responde que ''Sí''. Si durante la actualización del paquete `freedombox` te pregunta acerca de los archivos de configuración responde que instale los archivos de configuración nuevos que vienen con la última versión del paquete. Este proceso solo actualizará los paquetes que no necesitan preguntar (excepto el paquete `freedombox`). Después, deja que !FreedomBox se encargue de la actualización de los demás paquetes. Sé paciente mientras se crean nuevas versiones de !FreedomBox para tratar los paquetes que necesitan intervención manual. + +Si quieres ir más allá de la recomendación e instalar todos los paquetes en tu !FreedomBox y realmente estás muy seguro de poder tratar los cambios de configuración de paquetes por tí mismo, ejecuta el siguiente comando: + + +{{{ +$ apt dist-upgrade +}}} + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Upgrades.raw.xml b/doc/manual/es/Upgrades.raw.xml deleted file mode 100644 index 8f8948c3e..000000000 --- a/doc/manual/es/Upgrades.raw.xml +++ /dev/null @@ -1,8 +0,0 @@ -
es/FreedomBox/Manual/Upgrades152020-05-24 07:53:22fioddorSe alinea con la versión 09 en inglés del 23 de mayo de 2020142020-04-13 16:14:41fioddorSe alinea con la versión 08 en inglés del 12 de abril de 2020132020-04-11 10:28:09fioddorhttps://salsa.debian.org/freedombox-team/plinth/-/issues/1831#note_154258122020-04-04 21:44:54fioddor112020-04-04 21:36:45fioddorSe usan imagen traducida y más actual.102020-04-04 21:32:12fioddor92020-04-04 21:29:18fioddorSe alinean literales con la interfaz gráfica.82019-10-16 15:18:30fioddorEnlace a nueva página traducida.72019-09-06 08:31:27fioddorSe mejoran las referencias a Debian Testing en línea con la nomenclatura de https://www.debian.org/releases/62019-08-22 12:54:06fioddorCorrección menor52019-08-22 12:52:31fioddorCorrección menor42019-08-22 12:51:09fioddorCorrección menor32019-08-22 12:48:59fioddorMejora menor22019-08-22 12:44:27fioddorSe actualiza a la versión inglesa 7 de hoy, 22 de agosto de 2019 03:42h.12019-06-19 07:05:29fioddorSe crea la versión española.
Actualizaciones de SoftwareFreedomBox puede instalar actualizaciones de seguridad automaticamente. Esta funcionalidad viene activada por defecto y no hace falta ninguna acción manual. Puedes activar las actualizaciones automaticas desde el interfaz web de FreedomBox en la página Actualización de la sección Sistema. Se recomienda encarecidamente que tengas esta opción habilitada para mantener tu FreedomBox segura. Las actualizaciones se efectúan cada noche. Si quieres apagar tu FreedomBox cada día después de usarla, déjala ejecutando una noche a la semana más o menos para permitir que ocurran las actualizaciones automaticas. Otra posibilidad es ejecutar actualizaciones manuales como se describe más adelante. Nota que una vez comiencen las actualizaciones podría llevarles mucho tiempo completarse. Durante el proceso de actualización (ya sea el automático nocturno o el manual), no podrás instalar aplicaciones desde el interfaz web de FreedomBox. upgrades_es_v01.png
¿Cuando obtendré las últimas funcionalidades?Aunque las actualizaciones se efectúan a diario por razones de seguridad, las últimas funcionalidades no se propagan a todos los usuarios. A continuación se explica cómo llegan las novedades a los usuarios de las diferentes versiones de Debian: Usuarios de versiones estables: Esta categoria de usuarios incluye a los usuarios que compraron la FreedomBox Pioneer Edition, a los que instalaron FreedomBox sobre una distribución estable de Debian y a los que descargaron las imágenes estables desde freedombox.org. Como regla general a estos usuarios solo se les proporciona actualizaciones de seguridad de determinados paquetes. Cuando una release obtiene la confianza de los desarrolladores el propio servicio FreedomBox se actualiza, lo que supone una excepción a esta regla. Esto implica que las últimas funcionalidades de FreedomBox estarán disponibles para estos usuarios aunque no tán inmediata- o frecuentemente como para los usuarios de las versiones en pruebas (testing). Si una app sólo está disponible en la distribución en pruebas (testing) pero no en la estable la app aparecerá en el interfaz web pero no será instalable para los usuarios de la distribución estable. Algunas apps se actualizan en excepción a la regla de "solo actualizaciones de seguridad" cuando la app esté seriamente rota por algún motivo. Debian libera cada bienio una entrega (release) con las últimas versiones estables de cada paquete de software y los desarrolladores de FreedomBox intentarán actualizar a estos usuarios a la nueva entrega (release) sin necesidad de intervención manual. Usuarios de versiones en pruebas: Esta categoria de usuarios incluye a los usuarios que instalaron FreedomBox sobre una distribución en pruebas (testing) y a los que descargaron las imágenes en pruebas (testing) desde freedombox.org. Estos usuarios asumen la posibilidad de afrontar disrupciones ocasionales en los servicios e incluso tener que intervenir manualmente para arreglarlas. Como regla general estos usuarios reciben las últimas funcionalidades y actualizaciones de seguridad para todos los paquetes instalados. Cada quincena se libera una nueva versión de FreedomBox con todas las últimas funcionalidades y correcciones. Estas versiones llegan a los usuarios de la distribución en pruebas (testing) aproximadamente 2 o 3 días después de la liberación. Usuarios de versiones inestables: Esta categoria de usuarios incluye a los usuarios que instalaron FreedomBox sobre una distribución inestable y a los que descargaron las imágenes inestables desde freedombox.org. Estos usuarios asumen la probabilidad de afrontar disrupciones en los servicios y tener que intervenir manualmente para arreglarlas. Como regla general estos usuarios reciben las últimas funcionalidades y actualizaciones de seguridad para todos los paquetes instalados. Cada quincena se libera una nueva versión de FreedomBox con todas las últimas funcionalidades y correcciones. Estas versiones llegan a los usuarios de la distribución inestable el mismo día de la liberación. Solo los desarrolladores, probadores y contribuyentes al proyecto FreedomBox debieran emplear la distribution inestable. Se advierte y exhorta a los usuarios finales de que no la usen.
Actualizaciones Manuales desde el TerminalAlgunos paquetes de software podrían requerir intervención manual para actualizarlos, generalmente por razones de configuración. En tales casos FreedomBox se actualiza a sí mismo y solicita información nueva necesaria para la actualización del paquete. Después de autoactualizarse FreedomBox actúa en nombre del usuario y actualiza los paquetes con la información recabada. Estos paquetes no se deben actualizar manualmente hasta que FreedomBox tenga la posibilidad de actualizarlos. La actualización que se dispara manualmente desde el interfaz web ya es consciente de estos paquetes y no los actualiza. En situaciones muy extrañas, FreedomBox podría fallar o quedar a expensas de una intervención manual desde el terminal. Para esto, entra a FreedomBox por un terminal, ya sea físico, web (empleando Cockpit) o mediante SSH (ver sección Shell Segura) y ejecuta los siguientes comandos: -# dpkg --configure -a -# apt update -# apt -f install -# unattended-upgrade --debug -# apt install freedombox -# apt update]]>Si apt-get update te pide confirmación para algo responde que . Si durante la actualización del paquete freedombox te pregunta acerca de los archivos de configuración responde que instale los archivos de configuración nuevos que vienen con la última versión del paquete. Este proceso solo actualizará los paquetes que no necesitan preguntar (excepto el paquete freedombox). Después, deja que FreedomBox se encargue de la actualización de los demás paquetes. Sé paciente mientras se crean nuevas versiones de FreedomBox para tratar los paquetes que necesitan intervención manual. Si quieres ir más allá de la recomendación e instalar todos los paquetes en tu FreedomBox y realmente estás muy seguro de poder tratar los cambios de configuración de paquetes por tí mismo, ejecuta el siguiente comando: Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/Users.raw.wiki b/doc/manual/es/Users.raw.wiki new file mode 100644 index 000000000..b4b397ae0 --- /dev/null +++ b/doc/manual/es/Users.raw.wiki @@ -0,0 +1,44 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/Users|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Usuarios y Grupos == + +Puedes otorgar acceso a tu !FreedomBox a otros usuarios. Proporciona el nombre del usuario y su contraseña y asignale un grupo. Actualmente se soportan los grupos + * admin + * bit-torrent + * ed2k + * feed-reader + * freedombox-share + * git-access + * i2p + * minidlna + * syncthing + * web-search + * wiki + +El usuario podrá ingresar a los servicios que soporten ingreso único (single-sign-on) mediante LDAP si figuran en el grupo apropriado. + +Los usuarios del grupo `admin` podrán ingresar en todos los servicios. También pueden ingresar al sistema por SSH y escalar a privilegios administrativos (sudo). + +Estas características se pueden cambiar más tarde. + +Asimismo es posible establecer una clave pública SSH que permitirá al usuario ingresar al sistema de modo seguro sin emplear su contraseña. Pueder dar de alta varias claves, una en cada línea. Las líneas en blanco o que comiencen por # se ignoran. + +El idioma de la interfaz se puede establecer individualmente para cada usuario. Por omisión se emplea el del navegador. + +Se pueden desactivar temporalmente las cuentas de usuarios. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/Users.raw.xml b/doc/manual/es/Users.raw.xml deleted file mode 100644 index 3a4b316d9..000000000 --- a/doc/manual/es/Users.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/Users22020-05-24 07:54:47fioddorSe alinea con la versión 09 en inglés del 23 de mayo de 202012019-06-18 13:55:35fioddorSe crea la versión española.
Usuarios y GruposPuedes otorgar acceso a tu FreedomBox a otros usuarios. Proporciona el nombre del usuario y su contraseña y asignale un grupo. Actualmente se soportan los grupos admin wiki El usuario podrá ingresar a los servicios que soporten ingreso único (single-sign-on) mediante LDAP si figuran en el grupo apropriado. Los usuarios del grupo admin podrán ingresar en todos los servicios. También pueden ingresar al sistema por SSH y escalar a privilegios administrativos (sudo). Estas características se pueden cambiar más tarde. Asimismo es posible establecer una clave pública SSH que permitirá al usuario ingresar al sistema de modo seguro sin emplear su contraseña. Pueder dar de alta varias claves, una en cada línea. Las líneas en blanco o que comiencen por # se ignoran. Se pueden desactivar temporalmente las cuentas de usuarios.
Reparos ConocidosActualmente Plinth not distingue entre usuarios y administradores. Todo usuario añadido mediante Plinth tendrá accesso completo al interfaz de Plinth. Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/VirtualBox.raw.wiki b/doc/manual/es/VirtualBox.raw.wiki new file mode 100644 index 000000000..5e140a3b7 --- /dev/null +++ b/doc/manual/es/VirtualBox.raw.wiki @@ -0,0 +1,214 @@ +== VirtualBox == + +{{attachment:virtualbox.png|VirtualBox|width=726,height=475}} + +This page will help you get started with using !FreedomBox on a [[https://en.wikipedia.org/wiki/Virtual_machine|virtual machine]] using !VirtualBox. While !VirtualBox images are primarily used for testing and development, they can also be used for regular use if you have spare resources on one of your machines. This setup is useful if: + + * You don't own one of the [[FreedomBox/Hardware|supported hardware]] devices. + * You don't use Debian GNU/Linux as your operating system. + * You don't want to disturb your Debian installation to try out !FreedomBox. + +Prebuilt !FreedomBox images for !VirtualBox are routinely made available in !VirtualBox's own [[https://www.virtualbox.org/manual/ch05.html#vdidetails|VDI image file format]]. They contain a Debian GNU/Linux operating system and an installation of !FreedomBox with all dependencies ready to run on any OS supported by !VirtualBox (Windows, Linux, Macintosh, and Solaris). + +A more adventurous alternative to downloading one of these images is to [[InstallingDebianOn|install Debian]] on !VirtualBox and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +!VirtualBox itself is available from https://www.virtualbox.org/ (or your distribution's package manager). + +=== Download === + +Follow the instructions on the [[FreedomBox/Download|download]] page to download and verify a !VirtualBox image. The latest images are available on [[https://freedombox.org/download/|freedombox.org]]. + +=== Creating a Virtual Machine === + + 1. Decompress the downloaded VDI image (tool for [[http://www.7-zip.org/|Windows]], [[http://unarchiver.c3.cx/unarchiver|Mac]]). + + 1. Create a new VM in the !VirtualBox UI with OS type ''Linux'' and Version ''Debian'' (32/64-bit according to the downloaded image). +{{attachment:virtualbox_os_type.png|VirtualBox Name and OS dialog}} + + 1. In the ''Hard disk'' dialog choose ''Use an existing virtual hard disk file'' and select the .vdi file you extracted in step 1. + +{{attachment:virtualbox_harddisk_file.png|VirtualBox Hard disk dialog}} + + 1. When created, go to the virtual machine's Settings -> [Network] -> [Adapter 1]->[Attached to:] and choose the network type your want the machine to use according to the explanation in Network Configuration below. The recommended type is the ''Bridged adapter'' option, but be aware that this exposes the !FreedomBox's services to your entire local network. + +{{attachment:virtualbox_network_type.png|VirtualBox recommended network setting}} + +'''Note:''' It is important to make sure that you have provided the correct network interface in the above step. For example, if the virtual machine is running on a laptop connected to a Wi-Fi network, then the wireless interface (starts with ''wlp'') must be chosen as shown in the screenshot. + +=== First Boot === + +When satisfied with the VM settings click the start button in the !VirtualBox UI and your new !FreedomBox will boot. + +The console of the VM will show the textual screen below when finished booting, from here most interaction with !FreedomBox will be through the [[FreedomBox/Plinth|web interface]] in a browser. + +{{attachment:virtualbox_console_after_boot.png|FreedomBox console after booting successfully}} + +If everything went well so far, you should be able to access the web interface of !FreedomBox by pointing a browser on the host machine to https://freedombox.local. + +In case freedombox.local cannot be resolved, you need to find out your !FreedomBox's IP address as described in [[#finding-ip-address-of-vm|Finding out the IP address of the virtual machine]]. Then access this IP from a web browser which is on the same network as the VM (for example, the host). If all is well, you are now presented with a welcome message and invited to complete the ''first boot'' process. + +{{attachment:plinth_first_boot.png|FreedomBox welcomes you to the first boot}} + +This mainly consist of creating an administrative user for the system. + +=== Using === + +See the !FreedomBox [[FreedomBox/Manual/QuickStart|usage]] page for more details. + +You can log in to the Debian GNU/Linux system as the user created during !FreedomBox first boot on the !VirtualBox console or remotely via ssh. + +After logging in, you can become root with the command `sudo su`. + +=== Build Image === + +If you wish to build your own images instead of downloading available images, it can be done using [[FreedomBox/Maker|Freedom Maker]]. + +=== Tips & Troubleshooting === + +==== Network Configuration ==== + +!VirtualBox provides many types of networking options. Each has its +advantages and disadvantages. For more information about how various +networking types work in !VirtualBox, see !VirtualBox's networking +documentation. https://www.virtualbox.org/manual/ch06.html + +For a simple setup, it is recommended that you use a single network +interface in your guest machine. This will make the first boot script +automatically configure that interface as an `internal` network with +`automatic` network configuration. Inside the guest machine, the +networking is configured automatically and all the services are made +available on this network interface. For more information on how +networks are configured by default in !FreedomBox, see +[[FreedomBox/Manual/Networks|Networks]] section. + +What remains is to make those services available to the host machine +or to other machines in the network. You must then choose one of the +following types of networking for the network interface on your guest +machine. To set a particular type of network for the guest's network +adapter, go to the guest VM's settings then the network options and +then select the adapter you wish to configure. There, set the network +type from the available list of networks. + + 1. First and the recommended option is to use the ''Bridged'' type of + network. This option exposes the guest machine to the same network + that host network is connected to. The guest obtains network + configuration information from a router or DHCP server on the + network. The guest will appear as just another machine in the + network. A major advantage of this of setup is that the host and all + other machines in the network will be able to access the services + provided by guest without requiring any further setup. + + The only drawback of this approach is that if the host is not + connected to any network, the guest's network will remain + unconfigured making it inaccessible even from the host. + + 1. Second method is ''Host only'' type of networking. With a + guest's network interface configured in this manner, it will only be + accessible from the host machine. The guest will not able access any + other machine but the host, so you do not have internet access on the guest. + All services on the guest are available to the host machine without any + configuration such as port forwarding. + + 1. The third option is to use the ''NAT'' type of network. This the + networking type that !VirtualBox assigns to a freshly created virtual + machine. This option works even when host is not connected to any + network. The guest is automatically configured and is able to access + the internet and local networks that host is able to connect to. + However, the services provided by the guest require port forwarding + configuration setup to be available outside. + + To configure this go to VM settings -> [Network] -> [Adapter] -> + [Port Forwarding]. Map a port such as 2222 from host to guest port + 22 and you will be able to ssh into !FreedomBox from host machine as + follows: + + {{{ + ssh -p 2222 fbx@localhost + }}} + + Map 4443 on host to 443 on the guest. This make !FreedomBox HTTPS + service available on host using the URL https://localhost:4443/ + + You will need to add a mapping for each such services from host to + guest. + + 1. The final option is to create two network interfaces, one ''host only'' + and one ''NAT'' type. This way you can access the guest without + any additional configuration, and you have internet access on the guest. + The guest will be invisible to any other machines on the network. + + +Summary of various network types: + +|| - ||'''Guest accessible from other machines'''||'''Guest accessible from host'''||'''Works without port forwarding'''||'''Works without host connected to network'''||'''Guest has internet access'''|| +|| '''Bridged''' || (./) || (./) || (./) || {X} || (./) || +|| '''Host only''' || {X} || (./) || (./) || (./) || {X} || +|| '''NAT''' || (./) || (./) || {X} || (./) || (./) || +|| '''NAT and Host || {X} || (./) || (./) || (./) || (./) || + +<> +==== Finding out the IP address of the virtual machine ==== + +This depends on the network configuration you chose. With a ''bridged adapter'', +your virtual machine gets its IP address from the DHCP server of your network, most likely of your Router. You can try the first couple of IP addresses or check your router web interface for a list of connected devices. + +If you chose ''host-only adapter'', the IP address is assigned by the DHCP server of your !VirtualBox network. In the !VirtualBox Manager, go to File -> Preferences -> Network -> Host-only Networks. You can see and edit the DHCP address range there, typically you get assigned addresses close to the ''Lower Address Bound''. + +Another possibility of finding the IP address is to login via the !VirtualBox Manager (or similar software). The !FreedomBox images do not have any default user accounts, so you need to set an initial user and password using the [[https://salsa.debian.org/freedombox-team/freedom-maker/blob/master/bin/passwd-in-image|passwd-in-image script]]. + +See also [[FreedomBox/Manual/QuickStart|QuickStart]] for instructions on how to scan your network to discover the IP of the VM. + +==== Networking Problems with macchanger ==== + +The package `macchanger` can cause network problems with !VirtualBox. If you have a valid IP address on your guest's host network adapter (like 192.168.56.101) but are not able to ping or access the host (like 192.168.56.1), try uninstalling `macchanger`: + +{{{ +$ dpkg --ignore-depends=freedombox-setup --remove macchanger +}}} + +You might have to manually remove the script `/etc/network/if-prep-up/macchanger`. +If Debian complains about unmet dependencies when you use a package manager (apt-get, aptitude, dpkg), try to remove 'macchanger' from the dependencies of 'freedombox-setup' in the file `/var/lib/dpkg/status`. + +==== Mounting Images Locally ==== + +If you want to mount images locally, use the following to copy built images off the !VirtualBox: + +{{{ +$ mkdir /tmp/vbox-img1 /tmp/vbox-root1 +$ vdfuse -f freedombox-unstable_2013.0519_virtualbox-i386-hdd.vdi /tmp/vbox-img1/ +$ sudo mount -o loop /tmp/vbox-img1/Partition1 /tmp/vbox-root1 +$ cp /tmp/vbox-root1/home/fbx/freedom-maker/build/freedom*vdi ~/ +$ sudo umount /tmp/vbox-root1 +# $ sudo umount /tmp/vbox-img1 # corruption here. +}}} + +==== Fixing the time after suspend and resume ==== + +The virtual machine loses the correct time/date after suspending and resuming. One way to fix this is to create a cron-job that restarts the time service `ntp`. You can add a crontab entry as root to restart ntp every 15 minutes by typing +`'crontab -e'` and adding this line: +{{{ +*/15 * * * * /etc/init.d/ntp restart +}}} + +Do not restart this service too often as this increases the load of publicly and freely available NTP servers. + +==== UUID collision in VB ==== + +Whenever this happens !VirtualBox shows following error message: ''Cannot register the hard disk A with UUID ... because a hard disk B with UUID ... already exists in the media registry'' + +Creating several VMs from the same image causes collisions due to ID's (hostname, IP, UUID, etc) that are expected to be universally unique. +Most can be handeled operating the running VM. But !VirtualBox complains before that (at the very creation of the VM) about the hard disk's UUID. This is usual stuff when you develop/test e.g. !FreedomBox. + +You can change a clone's UUID in the terminal as follows: +{{{ +$ VBoxManage internalcommands sethduuid path/to/the/hd/vdi/file +}}} + + + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/WireGuard.raw.wiki b/doc/manual/es/WireGuard.raw.wiki new file mode 100644 index 000000000..7a10a0d9b --- /dev/null +++ b/doc/manual/es/WireGuard.raw.wiki @@ -0,0 +1,76 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/WireGuard|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== WireGuard (Red Privada Virtual) == +|| {{attachment:FreedomBox/Manual/WireGuard/WireGuard-icon_en_V01.png|alt="Icono de WireGuard"}} || + + +=== Acerca de WireGuard === + +'''!WireGuard''' es red privada virtual (VPN) extremadamente sencilla aunque rápida y moderna que emplea cifrado de última generación.Puede ser un reemplazo útil para IPSec u [[es/FreedomBox/Manual/OpenVPN|OpenVPN]]. + +Sitio web oficial: https://www.wireguard.com + +=== Instalación === + +En está disponible para [[DebianBuster]] en [[Backports]]. Si tu lista de fuentes incluye a backports, Puedes instalar wireguard desde la sección Apps del interfaz web de !FreedomBox. +{{{#!wiki caution + WireGuard no se puede instalar aún en !FreedomBox con buster-backports porque el servicio !FreedomBox necesita una nueva versión de NetworkManager para ponerla en funcionamiento. +}}} + +=== Configuración - Debian Peers === + + * [[WireGuard|Step 1 - Generating Keypairs]] + * [[WireGuard|Step 2 - Alternative A - Manual Configuration]] + + +=== Uso === + + * Tunel punto a punto + * Cliente VPN con ruta por omisión + +=== Configuración - Clientes móviles === + +WireGuard tiene una implementación en espacio de usuario para dispositivos móviles disponible en la propia app. Funciona en Android e iOS. [[https://www.wireguard.com/install/|Aquí]] hay una lista completa de sistemas operativos compatibles. + +El cliente se puede configurar de varias maneras: + +==== Alternativa A - Crear una configuración a mano ==== + +Esta es autoexplicativa: te creas la configuración en el dispositivo móvil y transfieres las claves apropiadas a la configuración del servidor. + +==== Alternativa B - Crear una configuración a partir de un archivo ==== + +Aquí tienes que comprimir a .zip el archivo de configuración del cliente, transferirlo al dispositivo, e importarlo a la app. + +==== Alternativa C - Importarla leyendo un código QR (el método másseguro) ==== + +La versión 0.0.20180724 del cliente móvil soporta lectura de código QR. + +Se puede emplear DebianPackage:qrencode para generar códigos QR incluso desde el terminal/la consola usando carácteres UTF-8. + +La syntaxis es: + +{{{ +# qrencode -t ansiutf8 < client.conf +}}} + +Esto generará un código QR legible desde el cliente móvil. + +La ventaja de este enfoque es que no hay necesidad de software adicional ni de transferir información sensible a través de canales de datos que podrían estar comprometidos. + + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/bepasty.raw.wiki b/doc/manual/es/bepasty.raw.wiki new file mode 100644 index 000000000..1561f9ac6 --- /dev/null +++ b/doc/manual/es/bepasty.raw.wiki @@ -0,0 +1,77 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/bepasty|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Bepasty (Compartición de apuntes y archivos) == +|| {{attachment:FreedomBox/Manual/bepasty/bepasty-icon_en_V01.png|Icono de bepasty}} || + +'''Disponible desde''': versión 20.14 + +=== ¿Qué es bepasty? === + +bepasty es una aplicación web que permite cargar y compartir archivos grandes. También se pueden cargar y compartir recortes de texto y código. Los textos, imágenes, audio, video y documentos PDF se pueden previsualizar en el navegador. Se puede asignar una caducidad a los archivos. + +=== Captura de pantalla === + +{{attachment:FreedomBox/Manual/bepasty/bepasty_logged_in_page.png|Captura de pantalla de bepasty|width=800}} + +=== Contraseñas y permisos === + +bepasty solo usa contraseñas (sin usuarios) para controlar el acceso. El usuario tendrá permisos diferentes dependiendo de la contraseña empleada para ingresar a bepasty. Podría tener cualquier combinación de los siguentes permisos: + * '''read''': Leer un archivo, si conoce la URL. + * '''list''': Listar todos los archivos. + * '''create''': Pegar o cargar un archivo nuevo. + * '''delete''': Eliminar un archivo. + * '''admin''': Bloquear y desbloquear archivos. + +Tras instalar bepasty viene pre-configurado con los siguientes roles: + * Viewer: puede ver y listar archivos. + * Editor: puede ver, listar, crear y eliminar archivos. + * Administrator: tiene todos los permisos + +Estos roles dan soporte a un caso de uso de compartición de archivos entre usuarios authorizados y conocidos. Si lo necesitas puedes reconfigurar bepasty para otros roles y casos de uso. + +=== Distribuir contraseñas === + +Por omisión, la configuración de Acceso Público está puesta a ''None'', de modo que se requiere contraseña para cada uso de bepasty. Esto implica que necesitarás distribuir las contraseñas a los usuarios mediante cualquier canal de comunicación del que dispongas. + +Observa que quizá quieras crear múltiples contraseñas con los mismos permisos de modo que puedas distribuir una contraseña única a cada usuario (o grupo de usuarios) y si necesitas revocar acceso a un usuario puedas símplemente borrar su contraseña sin afectar a los demás usuarios. + +=== Usar bepasty === + +Tras ingresar a bepasty, si tienes el permiso Create verás una caja grande de texto en la que podrás pegar cualquier texto. Opcionalmente puedes proporcionar un nombre de fichero o tipo de contenido (Content-Type) para los datos. Tras pulsar Submit se crea el fichero. + +Puedes también arrastrar archivos al area de abajo. Se cargan inmediatamente al soltarlos en este área. También puedes crear una lista para controlar la colección de archivos cargados. + +En ambos casos puedes establecer una caducidad y cuando expire se eliminará el archivo. + +Si tienes el permiso List verás un enlace ''List all Items'' en la zona superior de la página. Esto mostrará todos los archivos creados o cargados. + +Si tienes el permiso Delete o Admin verás acciones junto a cada archivo en la página de la lista. + +Si sólo tienes el permiso Read para leer los archivos necesitarás tento una contraseña como una o más URLs de archivos existentes. + +=== Administrando contraseñas === + +La página de configuración de bepasty en el interfaz de !FreedomBox te permite crear contraseñas nuevas, o eliminar alguna. Al crear una contraseña puedes elegir cualquier combinación de permisos descritos anteriormente. Observa que un administrador típico debiera tener todos los permisos (no solo "Admin"). + +También puedes establecer un comentario. Se recomienda. Y deberías usarlo para ayudarte a recordar el propósito de la contraseña o quién la va a usar. + +Puedes configurar también el Acceso Público, que establece los permisos disponibles por omisión incluso sin ingresar con contraseña. Puedes establecer esto para permitir leer archivos por su URL, o leer y listar todos los archivos. + +=== Enlaces externos === + +https://bepasty-server.readthedocs.io/en/latest/user.html + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/ejabberd.raw.wiki b/doc/manual/es/ejabberd.raw.wiki new file mode 100644 index 000000000..1da86c07c --- /dev/null +++ b/doc/manual/es/ejabberd.raw.wiki @@ -0,0 +1,64 @@ +## page was renamed from FreedomBox/Manual/XMPP +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual/ejabberd|English]] - Español -~ + +<> + +## BEGIN_INCLUDE + +== Ejabberd (Servidor de Mensajería Instantánea) == +|| {{attachment:ejabberd-icon_es_V01.png|icono de ejabberd}} || + +'''Disponble desde''': versión 0.3 + +=== ¿Qué es XMPP? === + +''XMPP'' es un protocolo cliente-servidor federado para Mensajería Instantánea. Esto significa que los usuarios que tengan cuenta en un servidor XMPP pueden conversar con los usuarios que estén en el mismo u otros servidores XMPP. + +XMPP se puede usar también para llamadas de voz y vídeo si los clientes las soportan. + +Actualmente !FreedomBox ofrece ambas partes desde su interfaz web: un servidor (ejabberd) y un cliente web ([[es/FreedomBox/Manual/JSXC|JSXC]]). + +=== Privacidad === + +Con XMPP las conversaciones se pueden securizar de 2 maneras: + 1. TLS: Esto securiza la conexión entre el cliente y el servidor o entre 2 servidores. Esto está áltamente recomendado y ya debería estar soportado por todos los clientes. + 1. Punto a punto: Esto securiza los mensajes enviados entre los clientes de modo que ni siquiera el servidor pueda ver los contenidos. El último protocolo y también el más cómodo se llama ''OMEMO'' pero solo lo soportan algunos clientes. Algunos clientes que no soportan OMEMO podrían soportar otro protocolo llamado OTR. Para que funcione ambos clientes tienen que ser compatibles con el mismo protocolo. + +=== Establer un Nombre de Dominio === + +Para que funcione XMPP tu !FreedomBox necesita tener Nombre de Dominio accesible desde la red. + +Si sólo necesitas que los usuarios de tu red local (LAN) conversen entre sí, puedes inventarte un nombre de dominio. Pero si quieres que participen usuarios de internet en tus salas necesitas un nombre de dominio público. Puedes leer acerca de la obtención de un Nombre de Dominio en la [[../DynamicDNS|sección DNS Dinámico de este manual]]. + +Una vez tengas ya tu Nombre de Dominio puedes decirle a tu !FreedomBox que lo use dándolo de alta en la [[../Configure|configuración]] del sistema. + +'''Nota''': Tras cambiar tu Nombre de Dominio la página del servidor (XMPP) de mensajería instantánea podría mostrar que el servicio no está funcionando. En un minuto más o menos se actualizará y lo volverá a mostrar operativo. + +Ten en cuenta que de momento [[es/FreedomBox/Manual/PageKite|PageKite]] no soporta el protocolo XMPP. + +=== Habilitar a usuarios para usar XMPP === + +Actualmente todos los usuarios creados con !FreedomBox podrán ingresar al servidor XMPP. Puedes añadir usuarios nuevos con el módulo de "Usuarios y Grupos del Sistema". Los grupos seleccionados para el usuario nuevo no importan. + +=== Enrutado de Puertos === + +Si tu !FreedomBox está detrás de un router tendrás que configurar en él la redirección de puertos. Redirije los siguientes puertos de XMPP: + * TCP 5222 (cliente-a-servidor) + * TCP 5269 (servidor-a-servidor) + * TCP 5280 (?) + +=== Clientes compatibles === + + * !FreedomBox proporciona un cliente web: [[es/FreedomBox/Manual/JSXC|JSXC]]. + * Hay [[https://xmpp.org/software/clients.html|clientes XMPP]] disponibles para varias platformas de escritorio y móviles. + +## END_INCLUDE + +Volver a la [[es/FreedomBox/Features|descripción de Funcionalidades]] o a las páginas del [[es/FreedomBox/Manual|manual]]. + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/ejabberd.raw.xml b/doc/manual/es/ejabberd.raw.xml deleted file mode 100644 index df6599146..000000000 --- a/doc/manual/es/ejabberd.raw.xml +++ /dev/null @@ -1 +0,0 @@ -
es/FreedomBox/Manual/ejabberd42020-05-30 19:33:52SunilMohanAdapaUpdate the title to emphasize app name over its generic name32020-05-24 06:35:01fioddorSe alinea con la versión 14 en inglés del 23 de mayo de 202022019-09-05 12:44:11fioddorCorrección menor12019-09-05 11:59:04fioddorSe crea la versión española.
ejabberd (Servidor de Mensajería Instantánea (chat))
¿Qué es XMPP?XMPP es un protocolo federatedo para Mensajería Instantánea. Esto significa que los usuarios que tengan cuenta en un servidor XMPP pueden conversar con los usuarios que estén en el mismo u otros servidores XMPP. XMPP se puede usar también para llamadas de voz y vídeo si los clientes las soportan. Con XMPP las conversaciones se pueden securizar de 2 maneras: TLS: Esto securiza la conexión entre el cliente y el servidor o entre 2 servidores. Esto está áltamente recomendado y ya debería estar soportado por todos los clientes. Punto a punto: Esto securiza los mensajes enviados entre los clientes de modo que ni siquiera el servidor pueda ver los contenidos. El último protocolo y también el más cómodo se llama OMEMO pero solo lo soportan algunos clientes. Algunos clientes que no soportan OMEMO podrían soportar otro protocolo llamado OTR. Para que funcione ambos clientes tienen que ser compatibles con el mismo protocolo.
Estableciendo un Nombre de DominioPara que funcione XMPP tu FreedomBox necesita tener Nombre de Dominio accesible desde Internet. Puedes leer acerca de la obtención de un Nombre de Dominio en la sección DNS Dinámico de este manual. Una vez tengas ya tu Nombre de Dominio puedes decirle a tu FreedomBox que lo use dándolo de alta en la configuración del sistema. Nota: Tras cambiar tu Nombre de Dominio la página del servidor (XMPP) de mensajería instantánea podría mostrar que el servicio no está funcionando. En un minuto más o menos se actualizará y lo volverá a mostrar operativo. Ten en cuenta que de momento PageKite no soporta el protocolo XMPP.
Registrando los usuarios XMPP mediante SSOActualmente todos los usuarios creados con FreedomBox podrán ingresar al servidor XMPP. Puedes añadir usuarios nuevos con el módulo de "Usuarios y Grupos del Sistema". Los grupos seleccionados para el usuario nuevo no importan.
Usar el cliente webTras completar la instalación del módulo XMPP el cliente web JSXC para XMPP está accesible en https://<tu_freedombox>/plinth/apps/xmpp/jsxc/. Automáticamente comprobará la conexión del servidor BOSH al nombre de dominio configurado.
Usar un cliente móvil o de escritorioHay disponibles clientes XMPP para varias platformas móviles y de escritorio.
Enrutado de PuertosSi tu FreedomBox está detrás de un router tendrás que configurar en él la redirección de puertos. Redirije los siguientes puertos de XMPP: TCP 5222 (cliente-a-servidor) TCP 5269 (servidor-a-servidor) Volver a la descripción de Funcionalidades o a las páginas del manual. InformaciónSoporteContribuyeInformesPromueveIntroducción Hardware Ayuda en línea Dónde empezar Traduce Reuniones Charlas Funcionalidades Visión Preguntas y Respuestas Diseño Por hacer Releases Prensa Descargas Manual Codigo Fuente Contribuyentes Blog FreedomBox para Comunidades Manual del Desarrolador de FreedomBox AYUDA y DEBATES: Foro de Debate - Lista de Correo - #freedombox irc.debian.org | CONTACTO Fundación | PARTICIPA Proyecto Next call: Saturday, July 11th at 14:00 UTC Latest news: Announcing Pioneer FreedomBox Kits - 2019-03-26 Esta página está sujeta a copyright y sus autores la publican bajo la licencia pública Creative Commons Atribución-CompartirIgual 4.0 Internacional (CC BY-SA 4.0). CategoryFreedomBox
\ No newline at end of file diff --git a/doc/manual/es/freedombox-manual.raw.wiki b/doc/manual/es/freedombox-manual.raw.wiki new file mode 100644 index 000000000..9801ae2b7 --- /dev/null +++ b/doc/manual/es/freedombox-manual.raw.wiki @@ -0,0 +1,133 @@ +#language es + +~- [[DebianWiki/EditorGuide#translation|Translation(s)]]: [[FreedomBox/Manual|English]] - Español -~ + +## BEGIN_INCLUDE + +<> + + +<> +<> +<> +<> + += Apps = +/* Add entries here sorted after the level 2 heading inside the page to keep the list alphabetically sorted */ +/* Para mantener la lista ordenada alfabéticamente añade estas entradas según el título de nivel 2 de dentro de su página */ +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + += Sistema = +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + += Hardware = +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> +<> + +<> + += Contribuir = + +<> + += Guía del Desarrollador = + +<> + += Cacharreo = + +!FreedomBox consiste de 2 sub-proyectos principales: + + * El Servicio !FreedomBox (Plinth), el interfaz web + * Freedom Maker, un script para generar imágenes de disco para hardware variado + +<> +<> + += Cuéntaselo a tu gente = + + * [[https://freedombox.org/|FreedomBox]] + * [[../Press|FreedomBox en la Prensa]] (en) + * [[../Conferences|Conferencias]] (en) + * [[../TalksAndPresentations|Cahrlas y presentaciones]] (en) + * [[../TalksAndPresentations/AvailableMaterial|Material Disponible]]. Presentaciones y otros materiales en bruto. + * [[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/|Videos de la Debconf11]] + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/manual/es/freedombox-manual.raw.xml b/doc/manual/es/freedombox-manual.raw.xml deleted file mode 100644 index f720e7597..000000000 --- a/doc/manual/es/freedombox-manual.raw.xml +++ /dev/null @@ -1,14059 +0,0 @@ - - -
- - es/FreedomBox/Manual - - - 67 - 2020-05-30 20:04:07 - SunilMohanAdapa - Sort apps and system items according to their new titles - - - 66 - 2020-05-26 14:06:09 - fioddor - Enlace a nueva página traducida. - - - 65 - 2020-05-24 08:20:24 - fioddor - Se alinea con la versión 88 en inglés del 24 de mayo de 2020 - - - 64 - 2020-05-10 10:11:38 - fioddor - Se alinea con la versión 84 en inglés del 06 de mayo de 2020 - - - 63 - 2020-05-10 00:33:47 - fioddor - Enlace a página traducida. - - - 62 - 2020-05-03 17:17:44 - JamesValleroy - Fix from markers for Contribute and Developer included pages - - - 61 - 2020-04-26 16:48:28 - JamesValleroy - gitweb included twice, remove one instance - - - 60 - 2020-04-04 12:31:29 - fioddor - Enlace a página traducida. - - - 59 - 2020-02-21 15:55:40 - JosephNuthalapati - Add entry for Samba - - - 58 - 2019-12-25 21:08:13 - fioddor - Enlace a página traducida. Se alinea con la versión 80 del 25 de diciembre de 2019. - - - 57 - 2019-12-20 21:18:19 - fioddor - Se alinea con la versión 79 en inglés del 20 de diciembre de 2019 - - - 56 - 2019-12-17 21:17:07 - fioddor - Se alinea con la versión 78 en inglés del 15 de diciembre de 2019 - - - 55 - 2019-10-21 14:05:52 - fioddor - Corrección menor - - - 54 - 2019-10-10 20:52:39 - JosephNuthalapati - Fix possible XML validation error when exported to DocBook format - - - 53 - 2019-09-18 11:07:13 - fioddor - Enlace a nueva página traducida. - - - 52 - 2019-09-18 08:27:29 - fioddor - Enlace a nueva página traducida. - - - 51 - 2019-09-17 14:01:06 - fioddor - Enlace a nueva página traducida. - - - 50 - 2019-09-17 12:10:22 - fioddor - Enlace a nueva página traducida. - - - 49 - 2019-09-17 11:26:58 - fioddor - Enlace a nueva página traducida. - - - 48 - 2019-09-16 12:07:24 - fioddor - Enlace a nueva página traducida. - - - 47 - 2019-09-16 11:37:06 - fioddor - Enlace a nueva página traducida. - - - 46 - 2019-09-16 10:59:12 - fioddor - Enlace a nueva página traducida. - - - 45 - 2019-09-16 09:36:54 - fioddor - Enlace a nueva página traducida. - - - 44 - 2019-09-14 09:45:54 - fioddor - Enlace a nueva página traducida. - - - 43 - 2019-09-14 09:03:46 - fioddor - Enlace a nueva página traducida. - - - 42 - 2019-09-13 17:07:09 - fioddor - Enlace a nueva página traducida. - - - 41 - 2019-09-12 12:19:54 - fioddor - Enlace a nueva página traducida. - - - 40 - 2019-09-12 11:08:26 - fioddor - Enlace a nueva página traducida. - - - 39 - 2019-09-11 15:33:53 - fioddor - Enlace a nueva página traducida. - - - 38 - 2019-09-11 14:54:58 - fioddor - Enlace a nueva página traducida. - - - 37 - 2019-09-11 10:35:33 - fioddor - Enlace a nueva página traducida. - - - 36 - 2019-09-11 09:41:44 - fioddor - Enlace a nueva página traducida. - - - 35 - 2019-09-11 08:07:33 - fioddor - Enlace a nueva página traducida. - - - 34 - 2019-09-05 12:48:18 - fioddor - Enlace a nueva página traducida. - - - 33 - 2019-09-04 13:37:22 - fioddor - Enlace a nueva página traducida. - - - 32 - 2019-09-04 09:51:27 - fioddor - Enlace a nueva página traducida. - - - 31 - 2019-09-04 09:36:09 - fioddor - Enlace a nueva página traducida. - - - 30 - 2019-09-04 06:59:54 - fioddor - Enlace a nueva página traducida. - - - 29 - 2019-09-03 15:19:33 - fioddor - Enlace a nueva página traducida. - - - 28 - 2019-08-29 12:51:22 - fioddor - Enlace a nueva página traducida. - - - 27 - 2019-08-28 07:40:58 - fioddor - traducción de la sección SISTEMA finalizada. - - - 26 - 2019-08-23 13:03:13 - fioddor - Enlace a nueva página semi-traducida. - - - 25 - 2019-08-23 10:48:53 - fioddor - Enlace a nueva página traducida. - - - 24 - 2019-08-20 12:57:11 - fioddor - Enlace a nueva página traducida. - - - 23 - 2019-08-20 12:17:28 - fioddor - Enlace a nueva página traducida. - - - 22 - 2019-08-20 11:09:08 - fioddor - - - 21 - 2019-08-20 11:03:15 - fioddor - Enlace a nueva página traducida. - - - 20 - 2019-08-20 08:34:41 - fioddor - Enlace a nueva página traducida. - - - 19 - 2019-07-01 09:50:34 - fioddor - Enlace a la versión española. - - - 18 - 2019-06-20 15:24:02 - fioddor - Enlace a nueva página traducida. - - - 17 - 2019-06-20 15:14:21 - fioddor - Enlace a nueva página traducida. - - - 16 - 2019-06-20 14:44:02 - fioddor - Enlace a nueva página traducida. - - - 15 - 2019-06-20 14:30:08 - fioddor - Enlace a nueva página traducida. - - - 14 - 2019-06-19 12:37:41 - fioddor - Enlace a nueva página traducida. - - - 13 - 2019-06-19 12:15:59 - fioddor - Enlace a nueva página traducida. - - - 12 - 2019-06-19 10:43:11 - fioddor - Enlace a nueva página traducida. - - - 11 - 2019-06-19 10:28:55 - fioddor - Enlace a nueva página traducida. - - - 10 - 2019-06-19 07:44:50 - fioddor - Enlace a nueva página traducida. - - - 9 - 2019-06-18 15:47:59 - fioddor - Enlace a nueva página traducida. - - - 8 - 2019-06-18 15:28:11 - fioddor - Enlace a nueva página traducida. - - - 7 - 2019-06-18 15:18:23 - fioddor - Enlace a nueva página traducida. - - - 6 - 2019-06-18 13:49:37 - fioddor - Enlace a nueva página traducida. - - - 5 - 2019-06-18 12:40:13 - fioddor - Enlace a nueva página traducida. - - - 4 - 2019-06-18 12:25:15 - fioddor - - - 3 - 2019-06-18 12:23:44 - fioddor - Enlace a nueva página traducida. - - - 2 - 2019-06-18 08:07:20 - fioddor - - - 1 - 2019-06-18 07:52:26 - fioddor - Primera traducción provisional - - - -
- FreedomBox: recupera tu privacidad online - FreedomBox es un servidor personal diseñado tomando en cuenta la privacidad y la propiedad de los datos. Es un subconjunto del sistema operativo universal Debian e incluye solo software libre. Puedes ejecutarlo en casa en un ordenador pequeño, barato y energéticamente eficiente dedicado a tal uso. También se puede instalar en cualquier ordenador que ejecute Debian o en una máquina virtual. - Para reeemplazar servicios de comunicaciones de terceros que están espiando toda tu vida, podrás alojar servicios por ti mismo y usarlos en casa o a través de Internet mediante un navegador o aplicaciones especializadas. Estos servicios incluyen chat y audioconferencias, correo electrónico web, compartición de ficheros y calendario, libreta de direcciones y sincronización de feeds de noticias. Por ejemplo, para comenzar a usar un servicio de chat privado activa el servicio desde el interfaz de administración y agrega a tus amistades como usuarios autorizados del servicio. Podrán conectarse al servicio alojado en tu FreedomBox usando clientes de chat XMPP como Conversations para Android, Pidgin para Windows y Linux, o Messages para Mac OS, y acceder a comunicaciones cifradas. - FreedomBox es un producto que puedes comprar, instalar y queda lista para usar. Una vez instalado el interfaz es fácil de usar, parecido a un teléfono inteligente. - Documentación de usuario: - - - - Aplicaciones de FreedomBox - - - - - Manual - - - - - Ayuda en directo de la comunidad - - - - FreedomBox también puede alojar un punto de acceso Wi-Fi, un proxy para bloquear anuncios y una red privada virtual (VPN). Los usuarios más avanzados pueden reemplazar su router por un FreedomBox. - Configurar FreedomBox en casa sobre un hardware específico o en tu ordenador con Debian podría requerir cierto conocimiento técnico o ayuda de la comunidad. - Documentación técnica relacionada: - - - - Máquinas que soportan FreedomBox - - - - - Desgarga e Instalación - - - - - Manual del Desarrollador de FreedomBox - - - -
- Uso típico: Nube Privada - FreedomBox proporciona servicios a ordenadores y dispositivos móviles en tu hogar, y a tus amistades. Esto incluye mensajería instantánea segura y audioconferencias de alta calidad con poco consumo de banda. FreedomBox te permite publicar tus contenidos en un blog y en un wiki para colaborar con el resto del mundo. Están previstos los servicios de servidor personal de correo electrónico y red social federada usando GNU Social y Diaspora, para proporcionar alternativas a Gmail y Facebook que respeten la privacidad. -
-
- Uso avanzado: Router Casero Inteligente - FreedomBox se ejecuta en un ordenador físico y puede enrutar tu tráfico. Puede reemplazar a tu router inalámbrico de casa dando salida a internet a dispositivos variados como teléfonos móviles, ordenadores portátiles y televisores. Enrutando tráfico FreedomBox puede eliminar anuncios espía y malware web antes incluso de que alcancen tus dispositivos. FreedomBox puede ocultar tu localización y protejer tu anonimato enrutando tu tráfico por la red Tor. FreedomBox proporciona un servidor VPN que puedes emplear cuando estés lejos de casa para mantener secreto tu tráfico en redes inalámbricas públicas en las que no confíes y para acceder con seguridad a tus dispositivos de casa. - También lo puedes llevar contigo y tu portátil y usarlo para conectar a redes públicas en el trabajo, o para habilitar sus servicios en la escuela o en la oficina. - Se podría emplear en una aldea para habilitar comunicaciones digitales por toda la aldea. En el futuro, FreedomBox intentará dar soporte a medios alternativos de conexión a Internet, como redes Mesh. -
-
- Uso avanzado: Para Comunidades - El objetivo principal del diseño de FreedomBox es ser empleado como servidor personal en el hogar para uso por parte de una única familia y sus amistades. No obstante, en esencia es un software servidor que puede ayudar a un usuario no técnico a desplegar y mantener servicios con facilidad. El software se encarga automáticamente de muchas de las decisiones técnicas de administración del sistema, incluída la seguridad, reduciendo la complejidad para un usuario no técnico. Esta naturaleza de FreedomBox le hace apropiado para alojar servicios para comunidades pequeñas como aldeas o pequeñas empresas. Las comunidades pueden alojar sus propios servicios con un esfuerzo minimo usando FreedomBox. Pueden desplegar redes Wi-Fi que cubran toda el área de la comunidad y traer conexiones a Internet desde largas distancias. Los miembros de la comunidad pueden disfrutar conectividad a Internet, cobertura Wi-Fi omnipresente, servicios de VoIP, contenidos educativos y de entretenimiento offline, etc anteriormente no disponibles. También reforzará la privacidad individual de los miembros de la comunidad, reducirá su dependencia de servicios centralizados proporcionados por grandes compañías y les hará resistentes a la censura. - El libro electrónico libre FreedomBox for Communities describe la motivación y proporciona instrucciones detalladas para configurar FreedomBox para este caso de uso. Miembros del proyecto FreedomBox estan involucrados en desplegar redes Wi-Fi con conectividad gratuíta a Internet en la India rural. Este libro electrónico documenta su conocimiento y experiencias. -
-
- Interfaz de FreedomBox -
- Captura de pantalla - - - - - - - FreedomBox front page - - - -
-
- Video de introducción - - Plinth_Introduction.webm - - (36 MB, 13 Min.) -
-
- Más recursos en formato video - La charla Eben Moglen - Freedom in the cloud que impartió Eben Moglen antes del arranque del proyecto FreedomBox expone aspectos de la filosofía que hay detrás FreedomBox. - Primera demostración de FreedomBox en SFLC, Universidad de Columbia por Sunil Mohan Adapa. -
-
-
-
- Guía de Inicio Rápido -
- Lo que necesitas para empezar - La forma fácil es comprar un kit FreedomBox. - Alternativamente podrías optar por montarlo tu mismo reuniendo todas las piezas: - - - Un dispositivo soportado (incluyendo cualquier dispositivo que pueda funcionar con Debian). En el resto de este manual lo llamaremos la FreedomBox. - - - Un cable de alimentación para tu dispositivo. - - - Un cable de red Ethernet. - - - Una tarjeta microSD (o un medio de almacenamiento equivalente para tu dispositivo) preparado según las instrucciones de la página de Descargas. - - -
-
- Cómo empezar - - - Conecta un extremo del cable de red al puerto Ethernet de tu FreedomBox y el otro a tu router. - - - Enciende la FreedomBox. - - - Nota: En la mayoría de computadoras monoplaca no esperes un efecto de salida en un monitor si lo conectas por HDMI porque el núcleo (kernel) del sistema podría no reconocerlo. Mira más abajo para aprender cómo acceder y controlar tu FreedomBox desde la red. - - - - - En el primer arranque FreedomBox ejecutará su configuración inicial (las versiones más antiguas de FreedomBox se reinician tras este paso). Este proceso podría llevar varios minutos en algunas máquinas. Después de darle unos 10 minutos aproximadamente, sigue con el siguiente paso. - - - Nota: Esta espera y reinicio se necesitan a causa de un defecto conocido. - - - - - Después de que tu FreedomBox haya finalizado su configuración inicial puedes acceder a su interfaz web mediante tu navegador web. - - - Si tu ordenador está conectado directamente a tu FreedomBox a través de un segundo puerto Ethernet de la red local, puedes navegar a o a . - - - Si tu ordenador soporta mDNS (GNU/Linux, Mac OSX o Windows con software mDNS instalado), puedes navegar a: (o a ) - - - Si te manejas con el interfaz web de tu router, puedes buscar allí la dirección IP de tu FreedomBox y navegar a ella. - - - Si no están disponibles ninguno de estos métodos necesitarás averiguar la dirección IP de tu FreedomBox. Puedes usar el programa "nmap" de tu ordenador para encontrar su dirección IP: - - En la mayoría de los casos puedes mirar tu dirección IP actual y cambiar los últimos dígitos por 0 para encontrar tu red local, así: XXX.XXX.XXX.0/24 - Tu FreedomBox aparecerá como una dirección IP con un puerto TCP 80 abierto usando el servicio Apache httpd sobre Debian. En el siguiente ejemplo estaría en http://192.168.0.165: - - Si nmap no encuentra nada con el comando anterior puedes probar a remplazar 192.168.0.0/24 por 10.42.0.255/24. - - El informe de escaneo mostrará algo similar a esto: - - En este ejemplo, la FreedomBox está en http://10.42.0.50. (10.42.0.1 es mi ordenador.) - - - - - Al acceder al interfaz web de FreedomBox tu navegador te avisará de que comunica en modo seguro pero que considera invalido el certificado de seguridad. Tienes que aceptarlo porque el certificado es autogenerado en la FreedomBox y "autofirmado" (el navegador podría denominarlo "no confiable", "no privado", "error de privacidad" o "emisor/autoridad desconocida"). Decir a tu navegador que ya lo sabes podría implicar accionar algunos botones como "Entiendo los riesgos", "proceder ... (inseguro)" o "Añadir excepción". Después de la instalación este certificado se puede cambiar a otro normal usando la opción Let's Encrypt. - - - - - - - - - Aviso de certificado autofirmado - - - - - - - - - - - - Añadir excepción de seguridad - - - - - - - - La primera vez que accedes al interfaz web de tu FreedomBox verás una página de bienvenida. Haz clic en el botón "Iniciar configuración" para continuar. - - - - - - - - - Bienvenida - - - - Si has instalado FreedomBox usando un paquete Debian se te pedirá una clave secreta. Esta clave se te habrá proporcionado durante la instalación del paquete Debian. También se puede leer en el archivo /var/lib/plinth/firstboot-wizard-secret. - - - - - La siguiente página te pide un nombre de usuario y contraseña. Rellena el formulario y haz clic en "Crear Cuenta." - - - Nota: El usuario que creas aquí tendrá privilegios de Admin y también podrá entrar por SSH. Por seguridad y para prevenir meteduras de pata no deberías introducir tu cuenta de uso habitual, sino una especial. Luego puedes añadir más usuarios, entre ellos el tuyo de uso habitual. - - - - - - - - - Cuenta - - - - - - - - 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. - - - - - - - - - Completado - - - - - - - - Ahora puedes probar cualquier App disponible en FreedomBox. -
-
- Orientándote -
- Página principal - La página principal es la que verás al acceder a la raíz web de tu FreedomBox. También puedes acceder a ella haciendo clic sobre el logo de FreedomBox de la esquina de arriba a la izquierda del interfaz web de FreedomBox. - La página principal tiene accesos directos a las apps instaladas que estén habilitadas. Haciendo clic en los accesos directos de aplicaciones web te llevarán a la página web correspondiente de cada app. Si son otro tipo de servicios hacer clic en los accesos directos te mostrará información acerca de cada servicio. - - - - - - - Página principal - - - - - - - - - - Página principal - - - -
-
- Menú de Aplicaciones - Al Menú de Aplicaciones se accede por el icono de rejilla que está junto al logo de FreedomBox. Esta página lista todas las apps disponibles para instalar en tu FreedomBox. Haz click sobre el nombre de la app para visitar su página, desde la que podrás instalarla y configurarla. - - - - - - - Apps - - - -
-
- Menú de Ayuda - Al Menú de Ayuda se accede por el icono del signo de interrogación de la esquina de arriba a la derecha. Incluye enlaces útiles y el manual de FreedomBox. - - - - - - - Ayuda - - - -
-
- Menú del Sistema - Al Menú del Sistema se accede por el icono del engranaje de la esquina de arriba a la izquierda. Incluye páginas relacionadas con la configuración del sistema. - - - - - - - Sistema - - - -
-
- Menú del Usuario - En la esquina superior derecha se muestra el nombre del usuario actual. Un menú desplegable incluye opciones para editar el perfil del usuario o sacarle del interfaz web. - - - - - - - Usuario - - - -
-
- Menú de Hamburgesa - El interfaz web de FreedomBox's es autoadaptativo. En algún caso podrías echar en falta las opciones del menú en ventanas estrechas. - - - - - - - User - - - - Esto se debe a que las opciones del menú han colapsado en el icono de hamburguesa mostrado en la esquina superior derecha de la ventana. Al hacer clic en él se despliega el menú. - - - - - - - User - - - -
-
-
-
- Obtener Ayuda - - - - Este manual intenta darte la información que necesitas para comenzar a usar tu FreedomBox. No obstante, si después de leerlo tienes cualquier pregunta puedes obtener ayuda de los contribuyentes a la comunidad así: - - - Buscando o preguntando en tu foro de debate (recomendado). - - - Escribiendo a la lista de correo electrónico freedombox-discuss@lists.alioth.debian.org. También puedes apuntarte a recibir copias de cada debate que ocurra en la lista de correo o leer sus archivos. - - - Conversando por chat en #freedombox@irc.oftc.net. - - - Leyendo el wiki. - - - Leyendo el sitio web de la FreedomBox Foundation. - - - Leyendo la Página del Proyecto FreedomBox. - - -
-
- Descarga e Instalación - Bienvenido a la página de descargas de FreedomBox. - - - Nota: Si has comprado un kit FreedomBox esta sección no está pensada para tí, así que puedes simplemente saltártela entera. (A no ser que quieras específicamente compilarte una imagen alternativa del software). - - - Puedes instalar FreedomBox sobre alguno de los baratos dispositivos hardware soportados, sobre cualquier sistema operativo Debian Linux, o sobre una máquina virtual. - Instalar en una máquina que lleve el sistema Debian es fácil porque FreedomBox está disponble como paquete. Recomendamos instalar FreedomBox sobre una placa SBC soportada. La placa estaría dedicada al uso de FreedomBox en el hogar. Esto evitará un montón de riesgos, como configuraciones accidentalmente incorectas por el usuario. En caso de duda decidiendo qué hardware es el más apropiado para tí o durante la instalación, usa por favor la página de soporte o lee la página de Preguntas y Respuestas basada en los archivos de la lista de correo Freedombox-discuss. -
- Descargando en Debian - Si estás instalando sobre un sistema Debian existente no necesitas descargar las imágenes. Lee las instrucciones para configurar FreedomBox en Debian. -
-
- Descargando para placa SBC o Máquina Virtual -
- Preparar tu dispositivo - Lee las instrucciones específicas para tu hardware respecto a como preparar tu dispositivo en la sección Hardware. En la web hay abundante documentación respecto a como contigurar tu dispositivo y grabar USB's o tarjetas SD para arrancar tu hardware. -
-
- Descargar Imágenes - Las imágenes recientes para hardware soportado están disponibles aquí: - - - Imágenes Oficiales: - - - Imágenes Oficiales: - - -
-
- Verificar las Imágenes Descargadas - Es importante verificar las imágenes que has descargado para asegurar que el fichero no se ha corrompido durante la transmisión y que efectívamente es la imagen construída por los desarrolladores de FreedomBox. - Nota: Las imágenes de prueba y nocturnas las firma el servidor de integración contínua de FreedomBox automaticamente. - - - Primero abre un terminal e importa las claves publicas de los desarrolladores de FreedomBox que construyeron las imágenes: - - Si este comando muestra un error como new key but contains no user ID - skipped usa un servidor de claves diferente para descargarlas: - - O - - - - A continuación, verifica la huella de las claves públicas: - -sub 4096R/4C1D4B57 2011-11-12 - -$ gpg --fingerprint 7D6ADB750F91085589484BE677C0C75E7B650808 -pub 4096R/7B650808 2015-06-07 [expires: 2020-06-05] - Key fingerprint = 7D6A DB75 0F91 0855 8948 4BE6 77C0 C75E 7B65 0808 -uid James Valleroy -uid James Valleroy -sub 4096R/25D22BF4 2015-06-07 [expires: 2020-06-05] -sub 4096R/DDA11207 2015-07-03 [expires: 2020-07-01] -sub 2048R/2A624357 2015-12-22 - -$ gpg --fingerprint 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8 -pub rsa4096 2018-06-06 [SC] - 013D 86D8 BA32 EAB4 A669 1BF8 5D41 53D6 FE18 8FC8 -uid [ unknown] FreedomBox CI (Continuous Integration server) -sub rsa4096 2018-06-06 [E]]]> - - - Finalmente, verifica tu imágen descargada con su archivo de firma .sig. Por ejemplo: - " -gpg: WARNING: This key is not certified with a trusted signature! -gpg: There is no indication that the signature belongs to the owner. -Primary key fingerprint: BCBE BD57 A11F 70B2 3782 BC57 36C3 6144 0C9B C971]]> - - -
-
- Instalación - Tras la descarga puedes emplear la imágen para arrancar tu hardware (incluyendo máquinas virtuales). Necesitarás copiar la imágen a la tarjeta de memoria o pincho USB así: - - - Averigua en qué dispositivo está tu tarjeta. - - - Desconecta tu tarjeta (Sácala de la ranura). - - - Ejecuta dmesg -w mara mostrar y seguir los mensajes del núcleo (kernel). - - - Conecta tu tarjeta (insértala en su ranura). Verás mensajes como estos: - - - - En este caso, el disco insertado recientemente está disponible en /dev/sdg. Toma nota con mucho cuidado para emplearla en el paso de copia más adelante. - - - - - Descomprime la descarga usando tar: - - El comando de arriba es un ejemplo para la imagen cubietruck construída el 2015/12/13. El nombre de archivo de tu descarga será diferente. - - - Copia la imágen a tu tarjeta. Asegúrate de que NO escribes sobre el almacenamiento principal de tu ordenador (como /dev/sda). Asegúrate - - - también de que NO ejecutas este paso como root para evitar sobreescribir datos en tu disco duro por una identificación errónea del dispositivo o fallos al teclear el comando. No habitual es que los usuarios normales tuvieran acceso de escritura sobre los discos USB y tarjetas SD pinchados en el sistema. Si no tienes permiso para escribir en tu tarjeta SD como usuario normal quizá necesites ejecutar éste comando como root. En tal caso comprueba y recomprueba todo antes de ejecutar el comando. Otra precaución de seguridad es desconectar todos los demás discos externos excepto la tarjeta SD antes de ejecutar el comando. - - - Por ejemplo, si tu tarjeta SD es /dev/sdg, como en el paso anterior, para copiar la imágen, ejecuta: - - - - Un comando alternativo para copiar a la tarjeta SD: - - - /dev/sdg ; sync]]> - - - En MS Windows necesitarás una herramienta como etcher. En MacOS (OSX) puedes usar programas como balenaetcher y rosaimagewriter. - - - El comando anterior es un ejemplo para la imagen cubietruck construída el 2015/12/13. El nombre del archivo de tu imágen será diferente. - Al identificar el dispositivo, usa el destino con letra de unidad como /dev/sdg, NO un destino numerado como /dev/sdg1. El dispositivo sin número refiere al dispositivo completo, mientras que el numerado refiere a una partición concreta. Queremos usar todo el dispositivo. Las imágenes descargadas contienen información completa acerca de cuantas particiones debería haber, sus tamaños y tipos. No necesitas formatear tu tarjeta SD ni crear particiones. Todo el contenido previo de la tarjeta será eliminado durante el proceso de escritura. - - - Usa la imágen insertando la tarjeta SD o disco USB en el dispositivo de destino y arrancándolo. Tu dispositivo también debe estár preparado - (ver la sección Hardware). - - - Lee (el resto de) el Manual (en) para obtener instrucciones acerca de como usar las aplicaciones de FreedomBox. - - -
-
-
- Obtener el Código Fuente - FreedomBox es 100% software libre y puedes obtener el código fuente para estudiarlo, modificarlo y distribuir mejoras. -
- Desde (dentro de) FreedomBox - FreedomBox se compone de diferentes programas de software y puedes obtener el código fuente de cualquiera de ellos. Estas instrucciones son similares a obtener y construír código fuente de Debian ya que FreedomBox es una variante pura de Debian. Usando este procedimiento puedes obtener el código fuente de la misma versión del paquete que estás usando actualmene en FreedomBox. - - - Para ver la lista de paquetes software instalados en tu FreedomBox, ejecuta lo siguiente en un terminal: - - - - Para obtener el código fuente de cualquiera de esos programas ejecuta: - ]]> - Esto requiere que el archivo /etc/apt/sources/list contenga información acerca de los repositorios de código fuente. Esto es así por defecto en todas las imágenes FreedomBox. Pero si has instalado FreedomBox desde Debian necesitas asegurarte de que los repositorios de código fuente figuren en este archivo. - - - Para construir el paquete desde su código fuente, primero instala sus dependencias - ]]> - Cambia al directorio fuente creado con el comando apt source: - ]]> - Y construye el paquete - - - - Instala el paquete: - .deb]]> - - -
-
- Otras Maneras de Obtener el Código Fuente - - - El código fuente de cualquier paquete se puede ver y buscar usando el interfaz web de sources.debian.org. Por ejemplo, mira el paquete plinth. - - - El código fuente y el binario precompilado de cualquier version de un paquete, incluyendo versiones antigüas, se pueden obtener de snapshot.debian.org. Por ejemplo, mira el paquete plinth. - - - También puedes obtener los enlaces a la web del proyecto original, al control de versiones del proyecto original, al control de versiones de Debian, registro de cambios, etc. desde la página de control Debian para el proyecto en tracker.debian.org. Por ejemplo, mira la página de control para el paquete plinth. - - - Puedes compilar e instalar un paquete desde el control de versiones de Debian. Por ejemplo, - - - -
-
- Construyendo Imágenes de disco - También puedes construír imágenes de disco FreedomBox para varias platformas de hardware usando la herramienta freedom-maker. Esta también está disponible como paquete Debian y su código fuente se puede obtener empleando los métodos anteriores. Hay disponibles Instrucciones de Construcción para generar imágenes de disco incluídas en el código fuente del paquete freedom-maker. - Las imágenes de disco de FreedomBox se construyen y suben a los servidores oficiales empleando la infraestructura de integración contínua automatizada. Esta infraestructura está disponible también como código fuente y proporciona información precisa acerca de como se contruyen las imágenes de FreedomBox. -
- Imágenes U-boot sobre Pioneer Edition - Hay una excepción menor en el paquete u-boot que viene con el hardware que se vende como Kits de Servidor Casero FreedomBox Pioneer Edition. Contiene un parche pequeño pero importante que no está en el código fuente de Debian. Tanto el repositorio fuente de Debian u-boot como el parche de FreedomBox están disponibles como un repositorio aparte. Esperamos que en algún momento este parche esté integrado en u-boot de serie y este repositorio ya no sea necesario. Este paquete se puede compilar en una máquina Debian armhf como sigue (también se puede hacer compilación cruzada, simplemente sigue las instrucciones para compilación cruzada de paquetes Debian): - - El paquete u-boot Debian estará en u-boot-sunxi*.deb. Este paquete contendrá - -dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of= seek=8 bs=1k conv=notrunc]]> - La imagen resultante tendrá el u-boot modificado. -
-
-
-
-
- Apps - - Add entries here sorted after the level 2 heading inside the page to keep the list alphabetically sorted - Para mantener la lista ordenada alfabéticamente añade estas entradas según el título de nivel 2 de dentro de su página - -
- Coquelicot (Compartición de Archivos) -
- Acerca de Coquelicot - Coquelicot es aplicación web para compartir archivos enfocada a proteger la privacidad de sus usuarios. El principio básico es simple: los usuarios pueden subir un archivo al servidor y a cambio reciben una URL única para descargarlo que se puede compartir con terceros. Además se puede establecer una contraseña para reforzar el acceso. - Más información acerca de Coquelicot en su LEEME - Disponible desde: versión 0.24.0 -
-
- Cuando usar Coquelicot - El mejor uso de Coquelicot es para compartir rápidamente un archivo suelto. Si quieres compartir una carpeta... - - - ...para usar y tirar, comprime la carpeta y compartela como archivo con Coquelicot - - - ...que deba mantenerse sincronizada entre ordenadores usa mejor Syncthing - - - Coquelicot también puede proporcionar un grado de privacidad razonable. Si se necesita anonimato mejor sopesas emplear la aplicación de escritorio Onionshare. - Como Coquelicot carga todo el archivo al servidor tu FreedomBox consumirá ancho de banda tanto para la subida como para la descarga. Para archivos muy grandes sopesa compartirlos creando un fichero BitTorrent privado. Si se necesita anonimato usa Onionshare. Es P2P y no necesita servidor. -
-
- Coquelicot en FreedomBox - Con Coquelicot instalado puedes subir archivos a tu servidor FreedomBox y compartirlos en privado. - Tras la instalación la página de Coquelicot ofrece 2 preferencias. - - - Contraseña de Subida: Actualmente y por facilidad de uso Coquelicot está configurado en FreedomBox para usar autenticación simple por contraseña. Recuerda que se trata de una contraseña global para esta instancia de Coquelicot y no tu contraseña de usuario para FreedomBox. Tienes que acordarte de esta contraseña. Puedes establecer otra en cualquier momento desde el interfaz de FreedomBox. - - - Tamaño Máximo de Archivo: Puedes alterar el tamaño máximo de los archivos a transferir mediante Coquelicot usando esta preferencia. El tamaño se expresa en Mebibytes y el máximo solo está limitado por el espacio en disco de tu FreedomBox. - - -
-
- Privacidad - Alguien que monitorice tu tráfico de red podría averiguar que se está transfiriendo un archivo en tu FreedomBox y posiblemente también su tamaño pero no sabrá su nombre. Coquelicot cifra los archivos en el servidor y sobrescribe los contenidos con 0s al borrarlos, eliminando el riesgo de que se desvelen los contenidos del fichero si tu FreedomBox resultara confiscada o robada. El riesgo real que hay que mitigar es que además del destinatario legítimo un tercero también descargue tu fichero. -
- Compartir mediante mensajería instantánea - Algunas aplicaciones de mensajería instantánea con vista previa de sitios web podrían descargar tu fichero para mostrarla (su vista previa) en la conversación. Si configuras la opción de descarga única para un archivo podrías notar que la aplicación de mensajería consume la única descarga. Si compartes mediante estas aplicaciones usa una contraseña de descarga en combinación con la opción de descarga única. -
-
- Compartir en privado enlaces de descarga - Se recomienda compartir las contraseñas y los enlaces de descarga de tus archivos por canales cifrados. Puedes evitar todos los problemas anteriores con las vistas previas de la mensajería instantánea símplemente empleando aplicaciones de mensajería que soporten conversaciones cifradas como Riot con Matrix Synapse o XMPP (servidor ejabberd en FreedomBox) con clientes que soporten cifrado punto a punto. Envía la contraseña y el enlace de descarga separados en 2 mensajes distintos (ayuda que tu aplicación de mensajería soporte perfect forward secrecy como XMPP con OTR). También puedes compartir tus enlaces por correo electrónico cifrado con PGP usando Thunderbird. -
-
-
-
- Coturn (Asistente para VoIP) - Coturn es un servidor para facilitar llamadas y conferencias de audio/video proporcionando una implementación de los protocolos TURN y STUN. Los servidores de comunicación por WebRTC, SIP y otros pueden usarlo para establecer una llamada entre partes que de otro modo no podrían conectarse entre si. - No está pensado para que lo usen diréctamente los usuarios. Los servidores como Matrix Synapse necesitan configurarse con los datos proporcionados en la página de app de Coturn. Además de Matrix Synapse, Jitsi, Ejabberd, Nextcloud Talk, etc. pueden usar el servidor Coturn para llamadas y conferencias de audio/video. No hace falta que los servidores se ejecuten en la misma máquina que FreedomBox. Los servidores externos pueden usar un Coturn ejecutado en FreedomBox. - Coturn está disponible en FreedomBox desde la version 20.8 como app avanzada. Esto implica que para ver el icono de Coturn en la sección "Apps" necesitas marcar en "Mostrar apps y funcionalidades avanzadas" en "Configuración General". -
- Cómo funciona - Al hacer una llamada de audio/video lo mejor es enrutar los flujos multimedia directamente entre los pares porque minimiza la latencia (mejor calidad de señal) y evita depender de un servidor centralizado (privacidad). Esto escala bien porque un servidor de chat simple puede albergar miles de llamadas sin involucrarse de ningún otro modo que para establecer la llamada. Sin embargo este enfoque no suele funcionar la mayoría de las veces por cómo se configuran las redes. La mayoría de los pares de la red carecen de una dirección IP propia reservada para ellos y suelen operar detrás de un dispositivo de red que les traduce las direcciones de red (NAT: "Network Address Translation"). Esto significa que en realidad estos pares no tienen modo de alcanzarse entre sí directamente. - Para abordar este problema se introdujo una técnica simple conocida como STUN. Con ayuda de un servidor STUN los pares pueden prescindir de los dispositivos NAT para transmitir entre ellos. Desafortunadamente este truco solo funciona un 80% de las ocasiones. Así que si STUN falla, los pares no tienen más opción que enrutar su comunicación a través de un intermediario llamado servidor TURN. Todo el mecanismo de intentar primero con STUN y recaer en TURN se describe en un protocolo llamado ICE. - En FreedomBox, Coturn proporciona servidores STUN y TURN. Ambos servicios se proporcionan tanto sobre TCP como sobre UDP y tanto en canales cifrados (que tienen mayor probabilidad de éxito) como sin cifrar. Como los servidores STUN son baratos y no consumen muchos recursos no se necesita autenticación para usarlos. Por otra parte los servidores TURN sí la necesitan. Esta autenticación está altamente simplificada y no requiere mantener una base de datos de usuarios. Un servidor como matrix-synapse que vaya a establecer una llamada de audio/video entre dos pares generará un nombre de usuario y contraseña empleando un secreto compartido. Cuando los pares usen el servidor TURN se les validará usando estas credenciales porque el servidor TURN conoce este secreto. - En resumen, un servidor de comunicaciones necesita saber las URLs de los servidores STUN/TURN junto con el secreto de autenticación para TURN. Después, durante el establecimiento de la llamada de audio/video guiarán a los pares a usar los servidores STUN/TURN. La app Coturn de FreedomBox proporciona exactamente ésta información, que se puede usar para configurar un servidor de comunicaciones independientemente de que se ejecute en la misma máquina que FreedomBox o en otro servidor. -
-
- Configurar Matrix Synapse - El servidor de Matrix Synapse de FreedomBox se puede configurar para que use el servidor de TURN/STUN Coturn. En el futuro, cuando instales Matrix Synapse FreedomBox instalará Coturn automáticamente y configurará sus parámetros en Matrix Synapse. Para configurar Matrix Synapse, edita el fichero /etc/matrix-synapse/homeserver.yaml con las siguientes líneas: - - Y luego reinicia el servidor matrix-synapse deshabilitando y rehabilitando la app de matrix-synapse. -
-
-
- Deluge (Cliente web de BitTorrent) -
- ¿Qué es Deluge? - BitTorrent es un protocolo de comunicaciones para compartir ficheros entre pares (P2P = peer-to-peer). No es anónimo; debes asumir que otros puedan ver qué ficheros estás comprtiendo. Hay 2 clientes web para BitTorrent disponibles en FreedomBox: Transmission y Deluge. Tienen funcionalidades similares pero quizá prefieras uno sobre otro. - Deluge es un cliente BitTorrent altamente configurable. Se puede añadir funcionalidad adicional instalando extensiones (plugins). -
-
- Captura de pantalla - - - - - - - Deluge Web UI - - - -
-
- Configuración Inicial - Tras instalar Deluge se puede acceder apuntando tu navegador a https://<tu freedombox>/deluge. Necesitarás introducir una contraseña para ingresar: - - - - - - - Deluge Login - - - - La contraseña inicial es deluge. La primera vez que ingreses Deluge te preguntará si quieres cambiarla. Debes cambiarla por algo más dificil de adivinar. - A continuación se te mostrará el administrador de conexiones. Haz clic sobre la primera entrada (Offline - 127.0.0.1:58846). Luego pulsa "Arrancar el Demonio" para que arranque el servicio Deluge service que se ejecutará en segundo plano. - - - - - - - Deluge Connection Manager (Offline) - - - - Ahora debería poner "Online". Haz clic en "Conectar" para completar la configuración. - - - - - - - Deluge Connection Manager (Online) - - - - En este punto ya estás usando Deluge. Puedes hacer más cambios en las Preferencias o añadir un fichero o una URL de torrent. -
-
-
- ejabberd (Servidor de Mensajería Instantánea (chat)) -
- ¿Qué es XMPP? - XMPP es un protocolo federatedo para Mensajería Instantánea. Esto significa que los usuarios que tengan cuenta en un servidor XMPP pueden conversar con los usuarios que estén en el mismo u otros servidores XMPP. XMPP se puede usar también para llamadas de voz y vídeo si los clientes las soportan. - Con XMPP las conversaciones se pueden securizar de 2 maneras: - - - TLS: Esto securiza la conexión entre el cliente y el servidor o entre 2 servidores. Esto está áltamente recomendado y ya debería estar soportado por todos los clientes. - - - Punto a punto: Esto securiza los mensajes enviados entre los clientes de modo que ni siquiera el servidor pueda ver los contenidos. El último protocolo y también el más cómodo se llama OMEMO pero solo lo soportan algunos clientes. Algunos clientes que no soportan OMEMO podrían soportar otro protocolo llamado OTR. Para que funcione ambos clientes tienen que ser compatibles con el mismo protocolo. - - -
-
- Estableciendo un Nombre de Dominio - Para que funcione XMPP tu FreedomBox necesita tener Nombre de Dominio accesible desde Internet. Puedes leer acerca de la obtención de un Nombre de Dominio en la sección DNS Dinámico de este manual. - Una vez tengas ya tu Nombre de Dominio puedes decirle a tu FreedomBox que lo use dándolo de alta en la configuración del sistema. - - - Nota: Tras cambiar tu Nombre de Dominio la página del servidor (XMPP) de mensajería instantánea podría mostrar que el servicio no está funcionando. En un minuto más o menos se actualizará y lo volverá a mostrar operativo. - - - Ten en cuenta que de momento PageKite no soporta el protocolo XMPP. -
-
- Registrando los usuarios XMPP mediante SSO - Actualmente todos los usuarios creados con FreedomBox podrán ingresar al servidor XMPP. Puedes añadir usuarios nuevos con el módulo de "Usuarios y Grupos del Sistema". Los grupos seleccionados para el usuario nuevo no importan. -
-
- Usar el cliente web - Tras completar la instalación del módulo XMPP el cliente web JSXC para XMPP está accesible en https://<tu_freedombox>/plinth/apps/xmpp/jsxc/. Automáticamente comprobará la conexión del servidor BOSH al nombre de dominio configurado. -
-
- Usar un cliente móvil o de escritorio - Hay disponibles clientes XMPP para varias platformas móviles y de escritorio. -
-
- Enrutado de Puertos - Si tu FreedomBox está detrás de un router tendrás que configurar en él la redirección de puertos. Redirije los siguientes puertos de XMPP: - - - TCP 5222 (cliente-a-servidor) - - - TCP 5269 (servidor-a-servidor) - - -
-
-
- GitWeb (Alojamiento simple para Git) - GitWeb proporciona alojamiento Git en FreedomBox. Proporciona un interfaz web simple para realizar acciones comunes como ver archivos, diferencias, descripciones de cambio, etc. - Disponible desde versión: 19.19 -
- Autenticación básica HTTP - Actualmente el GitWeb de FreedomBox solo soporta remotos HTTP. Para evitar tener que introducir la contraseña cada vez que haces pull/push al repositorio puedes editar tu remoto para incluír credenciales. - - Ejemplo: - - - Tu nombre de usuario y contraseña se cifrarán. Quien monitorize el tráfico de la red solo apreciará el nombre de dominio. - Nota: Al usar este método tu contraseña se almacenará en claro en el fichero .git/config del repositorio local. Por este motivo debes crear un usuario FreedomBox que solo tenga acceso a gitweb y no usar nunca una cuenta de administrador. -
-
- Réplicas Espejo - Aunque tus repositorios se albergan principalmente en tu propia FreedomBox puedes configurar un repositorio en otro servicio de alojamiento Git como GitLab a modo de copia espejo. -
-
-
- I2P (Red anónima) -
- Acerca de I2P - El Proyecto Internet Invisible (I2P) es una capa anonimizadora de red concebida para protejer las comunicaciones de la censura y la vigilancia. I2P proporciona anonimato enviando tráfico cifrado a través de una red distribuída alrededor del mundo gestionada por voluntarios. - Más información acerca de I2P en la página principal del proyecto. -
-
- Servicios Ofrecidos - Los siguientes servicios se ofrecen en FreedomBox a través de I2P de serie. Se pueden habilitar más servicios desde la consola de enrutado I2P que se puede abrir desde el interfaz web de FreedomBox. - - - Navegación web anónima: I2P se puede usar para navegar por la web de forma anónima. Para ello configura tu navegador (preferíblemente un navegador Tor) para conectar al proxy I2P. Esto se puede hacer estableciendo los proxies HTTP y HTTPS a freedombox.local (o la IP local de tu FreedomBox) con sus respectivos puertos a 4444 y 4445. Este servicio está disponible sólo cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de navegación web anónima a través de I2P. - - - Acceso a eepsites: La red I2P puede albergar sitios web anónimos llamados eepsites cuyo nombre de dominio acaba en .i2p. Por ejemplo, http://i2p-projekt.i2p/ es el sitio web del proyecto I2P en la red I2P. Los eepsites son inaccesibles a un navegador normal a través de una conexión Internet normal. Para navegar a los eepsites tu navegador necesita configurarse para usar los proxies HTTP y HTTPS como se describió antes. Este servicio solo está disponible cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de acceso a eepsites a través de I2P. - - - Descargas anónima de torrentes: I2PSnark, una aplicación para descargar y compartir archivos anónimamente mediante la red BitTorrent está disponible y habilitada por defecto en FreedomBox. Esta aplicación se controla mediante un interfaz web que se puede abrir desde la sección Torrentes Anonimos de la app I2P en el interfaz web de FreedomBox o de la consola de enrutado I2P. Solo los usuarios ingresados pertenecientes al grupo Manage I2P application pueden usar este servicio. - - - Red IRC: La red I2P contiene una red IRC llamada Irc2P. Esta red alberga el canal IRC oficial del proyecto I2P, entre otros. Este servicio viene habilitdo de serie en FreedomBox. Para usarlo abre tu cliente IRC favorito y configuralo para conectar con freedombox.local (o la IP local de tu FreedomBox) en el puerto 6668. Este servicio solo está disponible cuando accedes a la FreedomBox usando la red local (redes de la zona interna del cortaguegos) y no cuando llegas a la FreedomBox desde Internet. Una excepción a esto es cuando te conectas al servicio VPN de la FreedomBox desde Internet, en cuyo caso sí puedes usar el servicio de IRC a través de I2P. - - - Consola de enrutado I2P: Este es el interfaz central de administración de I2P. Muestra el estado actual de I2P, estadísticas de ancho de banda y permite modificar varias preferencias de configuración. Puedes adecuar tu participación en la red I2P y usar/editar una lista con tus sitios I2P (eepsites) favoritos. Solo los usuarios ingresados pertenecientes al grupo Manage I2P application pueden usar este servicio. - - -
-
-
- Ikiwiki (Wiki y Blog) -
- ¿Qué es Ikiwiki? - Ikiwiki convierte páginas wiki a páginas HTML listas para publicar en un sitio web. En particular, proporciona blogs, podcasts, calendarios y una amplia selección de extensiones (plugins). -
-
- Inicio rápido - Tras instalar la app en el interfaz de administración de tu FreedomBox: - - - Ve a la sección Crear y crea un wiki o un blog. - - - Vuelve a la sección Configurar y haz clic en el enlace /ikiwiki. - - - Haz clic en el nombre de tu nuevo wiki o blog bajo Directorio Padre. - - - Disfruta de tu nueva página de publicación. - - -
-
- Crear un wiki o blog - Puedes crear un wiki o blog para albergarlo en tu FreedomBox mediante la página Wiki y Blog (Ikiwiki). La primera vez que visites esta página te pedirá instalar paquetes requiridos por Ikiwiki. - Tras completar la instalación de paquetes selecciona la solapa Crear. Puedes elegir el tipo: Wiki o Blog. Teclea también un nombre para el wiki o blog, y el usuario y contraseña para su cuenta de administrador. Al hacer clic en Actualizar configuración verás el wiki/blog añadido a tu lista. Observa que cada wiki/blog tiene su propia cuenta de administrador. - - - - - - - ikiwiki: Create - - - -
-
- Acceder a tu wiki o blog - Desde la página de Wiki y Blog (Ikiwiki) selecciona la solapa Administrar y verás una lista de tus wikis y blogs. Haz clic en un nombre para navegar a ese wiki o blog. - - - - - - - ikiwiki: Manage - - - - Desde aquí, si le das a Editar o a Preferencias se te llevará a una página de ingreso. Para ingresar con la cuenta de administrador que creaste antes selecciona la solapa Otros, introduce el usuario y la contraseña y haz clic en Ingresar. -
-
- Ingreso único de usuarios (SSO) - Se puede dar permiso para editar a otros usuarios de FreedomBox además de al administrador del wiki/blog. Sin embargo no tendrán todos los permisos del administrador. Podrán añadir o editar páginas pero no podrán cambiar la configuración del wiki. - Para añadir a un usuario al wiki ve a la página Usuarios y Grupos de FreedomBox (bajo Configuración del Sistema, el icono del engranaje de la esquina superior derecha de la página). Crea o modifica un usuario y añádele al grupo wiki. (Los usuarios del grupo admin tendrán también acceso al wiki.) - Para ingresar como usuario FreedomBox ve a la página de ingreso del wiki/blog y selecciona la solapa Otros. Luego haz clic en el botón Ingresar con autenticación HTTP. El navegador mostrá un diálogo emergente en el que podrás introducir el usuario y la contraseña del usuario de FreedomBox. -
-
- Añadir usuarios FreedomBox como admnistradores de wiki - - - Ingresa al wiki con su cuenta de administrador. - - - Haz clic en Preferencias y luego en Configurar. - - - Debajo de Principal, en usuarios administradores de algún wiki, añade el nombre de un usuario de FreedomBox. - - - (Opcional) Desmarca la opción habilitar autenticación mediante contraseña de extensión de autenticación: autenticación mediante contraseña. (Nota: Esto deshabilitará el ingreso con la cuenta de administrador anterior. Solo se podrá ingresar mediante ingreso único usando autenticación HTTP.) - - - Haz clic en Grabar Configuración. - - - Pulsa Preferencias y a continuación Salir. - - - Ingresa como el nuevo usuario administrador usando Ingresar con autenticación HTTP. - - -
-
-
- infinoted (Servidor Gobby) - Infinoted es un servidor de edición colaborativa de textos para Gobby. - Para usarlo descarga el cliente Gobby para escritorio e instalalo. Inicialo, selecciona "Conectar a un Servidor" e introduce el nombre de dominio de tu FreedomBox. -
- Redirección de Puertos - Si tu FreedomBox está detras de un router necesitarás configurar la redirección de puertos en tu router. Redirije los siguientes puertos de infinoted: - - - TCP 6523 - - -
-
-
- Matrix Synapse (Servidor de Mensajería Instantánea (chat)) -
- ¿Qué es Matrix? - Matrix es un estándar abierto para comunicaciones sobre IP en tiempo real interoperables y descentralizadas. Synapse es la implementación de referencia de un servidor Matrix. Se puede usar para montar mensajería instantánea sobre FreedomBox para albergar grandes salones de chat, comunicaciones cifradas punto a punto y llamadas de audio/vídeo. Matrix Synapse es una aplicación federada en la que puede haber salas de chat en un servidor y los usuarios de cualquier otro servidor de la red federada pueden unirse a ellas. Más información acerca de Matrix. - Disponible desde: versión 0.14.0 -
-
- ¿Cómo acceder a tu servidor Matrix Synapse? - Para acceder al servidor Matrix Synapse recomendamos el cliente Riot. Puedes descargar Riot para escritorio. Las aplicaciones para Android e iOS están disponibles en sus tiendas (app stores) respectivas. -
-
- Configurar Matrix Synapse en tu FreedomBox - Para habilitar Matrix, primero navega a la página de tu servidor de chat (Matrix Synapse) e instálalo. Matrix necesita un nombre de dominio válido configurado. Tras la instalación, se te pedirá que lo configures seleccionandolo de entre un menú desplegable con dominios disponibles. Los dominios se configuran en la página Sistema -> Configuración y actualmente no podrás cambiar el dominio una vez esté configurado. Tras configurar un dominio verás que el servicio se está ejecutando. El servicio estará accesible en el dominio de FreedomBox configurado. - Tendrás que configurar tu router para que reenvíe el puerto 8448 a tu FreedomBox. - Todos los usuarios registrados en tu FreedomBox tendrán sus IDs Matrix @usuario:dominio. Si está habilitado el registro público tu cliente se puede usar también para registrar una cuenta de usuario nueva. -
-
- Federarse con otras instancias Matrix - Podrás interactuar con cualquier otra persona que ejecute otra instancia de Matrix. Esto se hace simplemente iniciando una conversación con ellos usando su matrix ID que seguirá el formato @su-usuario:su-dominio. También podrás unirte a salas de otros servidores y tener llamadas de audio/video con contactos de otros servidores. -
-
- Uso de Memoria - El servidor de referencia Synapse implementado en Python es conocido por consumir mucha RAM, especialmente al cargar salones grandes con miles de participantes como #matrix:matrix.org. Se recomienda evitar unirse a estos salones si tu dispositivo FreedomBox solo tiene 1 GiB RAM o menos. Debería ser seguro unirse a salas con hasta 100 participantes. El equipo de Matrix está trabajando en una implementación de servidor Matrix escrita en Go llamada Dendrite que debería tener mejor rendimiento en entornos con poca memoria. - Algunos salones públicos muy grandes de la red Matrix están también disponibles como canales IRC (p.ej. #freedombox:matrix.org está disponible también como #freedombox en irc.debian.org). Es mejor usar IRC en vez de Matrix para estos salones tán grandes. Puedes unirte a los canales de IRC usando Quassel. -
-
- Uso Avanzado - - - Si quieres crear una gran cantidad de usuarios en tu servidor de Matrix Synapse usa los siguientes comandos en una shell remota como usuario root: - - - /etc/matrix-synapse/conf.d/registration_shared_secret.yaml -chmod 600 /etc/matrix-synapse/conf.d/registration_shared_secret.yaml -chown matrix-synapse:nogroup /etc/matrix-synapse/conf.d/registration_shared_secret.yaml -systemctl restart matrix-synapse -register_new_matrix_user -c /etc/matrix-synapse/conf.d/registration_shared_secret.yaml]]> - - - - - Si quieres ver la lista de usuarios registrados en Matrix Syanpse haz lo siguiente como usuario root: - - - - - - - - Para crear una comunidad en Matrix Synapse se necesita un usuario Matrix con privilegios de admin en el servidor. Para dárselos a miusuario ejecuta los siguientes comandos como usuario root: - - - - - - - -
-
-
- MediaWiki (Wiki) -
- Acerca de MediaWiki - MediaWiki es el software de base de la gama de wikis Wikimedia. - Lee más acerca de MediaWiki en Wikipedia - Disponible desde: versión 0.20.0 -
-
- MediaWiki en FreedomBox - MediaWiki viene configurado en FreedomBox para ser públicamente legible y editable en privado. Sólo los usuarios ingresados pueden editar el wiki. Esta configuración evita publicidad indeseada (spam) y otros vandalismos en tu wiki. -
- Administración de Usuarios - Solo el administrador de MediaWiki (usuario "admin") puede crear los usuarios. El usuario "admin" puede usarse también para restablecer contraseñas de usuarios MediaWiki. Si se olvida la contraseña del administrador se puede restablecer desde la página de MediaWiki del interfaz web de FreedomBox. -
-
- Casos de uso - MediaWiki es muy versátil y se puede emplear para muchos usos creativos. También es áltamente adaptable y viene con un montón de extensiones (plugins) y estilos estéticos. -
- Repositorio Personal de Conocimiento - El MediaWiki de FreedomBox puede ser tu propio repositorio de conocimiento personal. Como MediaWiki tiene buen soporte multimedia puedes escribir notas, almacenar imágenes, crear listas de comprobación, guardar referencias y enlaces, etc. de manera organizada. Puedes almacenar el conocimiento de una vida en tu instancia de MediaWiki. -
-
- Wiki Comunitario - Una comunidad de usuarios podría usar MediaWiki como su repositorio común de conocimiento y material de referencia. Se puede emplear como un tablón de anunciós de universidad, como un servidor de documentación para una pequeña empresa, como un bloc de notas para grupos de estudio o como un wiki de fans al estilo de wikia. -
-
- Sitio Web Personal implementado mediante un Wiki - Varios sitios web de internet son sólo instancias de MediaWiki. El MediaWiki de FreedomBox es de solo lectura para visitantes. Se puede por tanto adaptar para servir como tu sitio web y/o blog personal. El contenido de MediaWiki es fácil de exportar y puede moverse después a otro motor de blogs. -
-
-
- Editar Contenido del Wiki - FreedomBox monta MediaWiki con un editor básico con una barra de herramientas con opciones de uso habitual como negrita, cursiva etc. Haz clic en la sección Avanzadas para acceder a más opciones como cabaceras, listas con viñetas, etc. - - - - - - - mediawiki-toolbar.png - - - -
- Editor Visual - Como su nombre indica, el nuevo Editor Visual de MediaWiki ofrece un interfaz de usuario visual (WYSIWYG) para crear páginas del wiki. Pero esta funcionalidad está todavía en pruebas y MediaWiki no la trae de serie. Una solución temporal posible sería escribir tu contenido con el Editor Visual del borrador de Wikipedia, cambiar el modo de edición a texto y copiarlo a tu wiki. -
-
- Otros Formatos - No es imprescindible que aprendas el lenguaje de formateo de MediaWiki. Puedes escribir en tu formato favorito (Markdown, Org-mode, LaTeX etc.) y convertirlo al formato de MediaWiki usando Pandoc. -
-
- Cargar Imágenes - Se puede habilitar la carga de imágenes desde FreedomBox versión 0.36.0. También puedes usar directamente imágenes de Wikimedia Commons mediante una funcionalidad llamada Instant Commons. -
-
-
- Personalización -
- Temas de estilo - El tema por defecto de MediaWiki suele ser Vector. El de FreedomBox es Timeless. - Vector es un tema optimizado para visualizarlo en pantallas grandes pero no se adecúa bien a los tamaños de pantalla de los móviles. Wikimedia usa otro sitio específico para móviles. Para instalaciones pequeñas como las de FreedomBox no merece la pena un segundo sitio dedicado. Usar un tema de estilo más polivalente como Timeless es una solución más eficiente al problema. - Los administradores pueden elegir el tema por defecto desde la configuración de la app. Los usuarios del sitio tienen también la opción de visualizarlo con temas diferentes. -
-
-
-
-
- Minetest (Sandbox de bloques) - Minetest es un Block Sandbox multijugador para mundos infinitos. Este módulo permite ejecutar el servidor Minetest en esta FreedomBox, en su puerto por defecto (30000). Para conectar al servidor se necesita un cliente de Minetest. -
- Enrutado de Puertos - Si tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos en tu router para los siguientes puertos de Minetest: - - - UDP 30000 - - -
-
-
- MiniDLNA (Servidor multimedia básico) - MiniDLNA es un servidor multimedia que intenta ser compatible con clientes DLNA/UPnP. - Nota: Este servicio solo está disponible en redes configuradas como zona "interna". Tampoco está disponble a través de OpenVPN (es incompatible). -
- ¿Qué es UPnP/DLNA? - UPnP (Universal plug & play) es un conjunto de protocolos de red que permite a los dispositivos de una red, como PCs, TVs, impresoras etc, reconocerse entre sí y establecer comunicación para compartir datos. Es un protocolo con cero configuración y require solo un servidor multimedia y un reproductor multimedia compatibles con el protocolo. - DLNA se deriva de UPnP como una forma de estandarizar interoperabilidad entre medios. Conforma un estándar/certificación que cumplen muchos dispositivos electrónicos de consumo. -
-
- Desplegando MiniDLNA en tu FreedomBox. - Para instalar/habilitar el servidor multimedia necesitas navegar a la página MiniDLNA y habilitarlo. Se intenta que la aplicación esté disponible en la red interna y por ello requiere asignarle un interfaz de red configurado para tráfico interno. - Tras la instalación queda disponible una página web en . Incluye información de cuántos ficheros detecta el servidor, cuántas conexiones existen etc. Esto resulta muy útil cuando conectas discos externos con contenido para para verificar que detecta los nuevos archivos como debe. Si no ocurre así, desconectar y activar el servidor lo arreglará. -
-
- Usar MiniDLNA para reproducir contenidos multimedia en tus dispositivos - Cualquier dispositivo compatible con DLNA debiera ser capaz de detectar, hojear y reproducir automáticamente contenido multimedia de MiniDLNA en FreedomBox. Los siguientes dispositivos y reproductores se han probado: - - - GNOME Videos: Videos es el reproductor multimedia por defecto en el popular entorno de escritorio GNU/Linux GNOME. Abre Videos, cambia a 'Canales'. Deberías ver un canal denominado 'freedombox: minidlna'. Deberías poder hojear y reproducir su contenido. - - - VLC media player: VLC es un reproductor multimedia para GNU/Linux, Android, Windows y macOS muy popular. Abre VLC y haz clic en 'Ver -> Lista de reproducción'. En la barra lateral de la lista de reproducción que aparece selecciona 'Universal Plug'n'Play'. Deberías ver un elemento denominado 'freedombox: minidlna'. Deberías poder hojear y reproducir su contenido. - - - Kodi: Kodi es un software popular de centro multimedia con un interfaz de usuario diseñado para televisores. Abre Kodi, ve a 'Sistema -> Configuración del Servicio -> UPnP/DLNA' y 'Habilitar soporte UPnP'. Visita entonces 'Home -> Videos -> Archivos -> Añadir videos... -> Navegar -> dispositivos UPnP'. Deberías ver 'freedombox: minidlna'. Selecciónalo y elige 'OK'. Entonces, elige 'OK en el diálogo 'Anadir entrada de video'. A partir de ahora , deberías ver 'freedombox: minidlna' en la sección 'Videos -> Archivos'. Deberías poder hojear y reproducir su contenido. Para más información mira la documentación de Kodi. - - - Roku: Roku es un aparato conectado a una TV para reproducir contenido de servicios de retransmisión por Internet. También hay muchas TVs que llevan a Roku integrado. Encuentra en el interfaz de Roku un canal denominado 'Roku Media Player' y ábrelo. Deberías ver un elemento denominado 'freedombox: minidlna'. Deberías poder hojear y reproducir su contenido. - - - Rhythmbox: Rhythmbox es el reproductor de sonido por defecto en el popular entorno de escritorio GNU/Linux GNOME. Abre Rhythmbox y asegura que el panel lateral esté abierto pulsando en 'Menú de Aplicación -> Ver -> Panel Lateral'. En el panel lateral deberías ver 'freedombox:minidlna' bajo la sección 'Compartidos'. Deberías poder hojear y reproducir sus archivos de sonido. Los archivos de video no aparecerán. - - -
-
- Formatos multimedia soportados - MiniDLNA soporta una amplia variedad de formatos de archivo de video y sonido. - - - Video: Archivos terminados en .avi, .mp4, .mkv, .mpg, .mpeg, .wmv, .m4v, .flv, .mov, .3gp, etc. - - - Sonido: Archivos terminados en .mp3, .ogg, .flac, .wav, .pcm, .wma, .fla, .aac, etc. - - - Imágen: Archivos terminados en .jpg, .jpeg - - - Listas de Reproducción: Archivos terminados enh .m3u, .pls - - - Subtítulos: Archivos terminados en .srt, .smi - - - Obsérvese que no soporta archivos con las siguientes extensiones. Parece que renombrar el archivo a una extensión reconocida funciona el la mayoría de casos. - - - Video: Archivos terminados en .webm - - - Además del soporte al formato de archivo por parte de MiniDLNA, tu dispositivo o reproductor de medios necesita soportar el codec de sonido/video con el que se haya codificado tu contenido. MiniDLNA carece de la habilidad de traducir archivos a un codec compatible con el reproductor. Si te topas con problemas en la reproducción de contenido, usa VLC para identificar el codec empleado en el contenido y comprueba en la documentación de tu dispositivo o reproductor de medios si lo soporta. -
-
- Sistemas de archivo para discos externos. - Al usar un disco externo que se usa también desde sistemas Windows el mejor formato para el sistema de archivos es NTFS. NTFS conservará los permisos de acceso de Linux y la codificación UTF-8 para los nombres de fichero. Esto es útil si los nombres de archivos tienen tildes, eñes u otros signos raros. -
-
- Enlaces externos - - - (en) - - - - - - - -
-
-
- MLDonkey (Compartir archivos entre pares) -
- ¿Qué es MLDonkey? - MLDonkey es una aplicación libre y multiprotocolo para compartir archivos entre pares (P2P) que ejecuta un servidor back-end sobre muchas plataformas. Se puede controlar mediante algún interfaz front-end, ya sea web, telnet o cualquier otro de entre una docena de programas cliente nativos. - Originalmente era un cliente Linux para el protocolo eDonkey pero ahora se ejecuta en multiples sabores de Unix y derivados, OS X, Microsoft Windows y MorphOS. Y soporta muchos protocolos P2P, incluyendo ED2K (y Kademlia sobre Overnet), BitTorrent, DC++ y más. - Más información acerca de MLDonkey en el Wiki del Proyecto MLDonkey - Disponible desde: versión 0.48.0 -
-
- Captura de Pantalla - - - - - - - MLDonkey Web Interface - - - -
-
- Usar el Interfaz Web MLDonkey - Tras instalar MLDonkey su interfaz web está accesible a los usuarios de los grupos ed2k y admin en https://<tu_freedombox>/mldonkey. -
-
- Usar el Interfaz para Escritorio/Móvil - Se pueden usar muchas aplicaciones de escritorio y móviles para controlar a MLDonkey. El servidor MLDonkey estará ejecutándose siempre en la FreedomBox y (cargará o) descargará archivos y los mantendrá almacenados incluso cuando tu máquina local esté apagada o desconectada del MLDonkey de FreedomBox. Por restricciones de acceso via SSH a la FreedomBox solo los usuarios del grupo admin pueden acceder a su MLDonkey. - - - Crea un usuario nuevo en el grupo admin o usa uno que ya esté allí. - - - En tu máquina de escritorio abre una terminal y ejecuta el siguiente comando. Para este paso se recomienda que configures y uses claves SSH en vez de contraseñas. - - - - Arranca la aplicación gráfica y conéctala a MLDonkey como si MLDonkey se estuviera ejecutando en la máquina local de escritorio. Cuando hayas terminado mata el proceso SSH pulsando Control-C. - - - Para más información lee acerca de los túneles SSH en la documentación MLDonkey. -
-
-
- Mumble (Chat de voz) -
- ¿Qué es Mumble? - Mumble es un software de conversaciones de voz. Principalmente diseñado para uso con juegos multijugador por red, sirve para hablar con alta calidad de audio, cancelación de ruido, comunicación cifrada, autenticación de interlocutores por defecto mediante par de claves pública/privada, y "asistentes" para configurar tu micrófono, por ejemplo. Se puede marcar a un usuario dentro de un canal como "interlocutor prioritario". -
-
- Usar Mumble - FreedomBox incluye el servidor Mumble. Para conectar con el servidor los usuarios pueden descargar algún cliente de entre los disponibles para plataformas de escritorio y móviles. -
-
- Redirección de Puertos - Si tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos de tu router. Deberías redirigir los siguientes puertos para Mumble: - - - TCP 64738 - - - UDP 64738 - - -
-
- Administrar Permisos - En Mumble un supeusuario puede crear cuentas de administrador que a su vez pueden administrar permisos a grupos y canales. Esto se puede hacer tras ingresar con el usuario "SuperUser" y la contraseña de superusuario. Ver la Guía de Mumble para obtener información respecto a cómo hacer esto. Actualmente FreedomBox no ofrece una interfaz gráfica para obtener o establecer la contraseña de superusuario en Mumble. Se genera una contraseña de superusuario automáticamente durante la instalación de Mumble. Para obtenerla ingresa en el terminal como admin usando Cockpit , la Shell Segura o la consola. Y ejecuta el siguiente comando: - - Deberás ver una salida como esta: - 2019-11-06 02:47:41.313 1 => Password for 'SuperUser' set to 'noo8Dahwiesh']]> - O puedes establecer una contraseña nueva así: - -
-
-
- OpenVPN (Red Privada Virtual) -
- ¿Qué es OpenVPN? - OpenVPN proporciona un servicio de red privada virtual a tu FreedomBox. Puedes usar este software para acceso remoto, VPNs punto-a-punto y seguridad Wi-Fi. OpenVPN incluye soporte para direcciones IP dinámicas y NAT. -
-
- Redirección de puertos - Si tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos en tu router. Debes redirigir los siguientes puertos para OpenVPN: - - - UDP 1194 - - -
-
- Configurar - - - En el menú de apps de FreedomBox selecciona Red Privada Virtual (OpenVPN) y haz clic en Instalar. - - - Tras instalar el módulo todavía queda un paso de configuración que puede llevar largo tiempo completar. Haz clic en "Iniciar configuración" para empezar. - - - - - - - OpenVPN service page - - - - - - Espera a que termine la configuración. Puede tardar un rato. - - - Una vez completada la configuración del servidor OpenVPN puedes descargar tu perfil. Esto descargará un archivo llamado <usuario>.ovpn, siendo <usuario> un usuario de FreedomBox. Todos los usuarios de FreedomBox podrán descargar un perfil propio y diferente. Los usuarios que no sean administradores pueden descargar el perfil desde la portada después de ingresar. - - - El archivo ovpn contiene toda la información que necesita un cliente vpn para conectar con un servidor. - - - El perfil descargado contiene el nombre de dominio de FreedomBox al que debe conectarse el cliente. Este se obtiene del dominio configurado en la sección 'Configuración' de la página de 'Sistema'. En caso de que tu dominio no esté configurado adecuadamente quizá necesites cambiar este valor después de descargar el perfil. Si tu cliente OpenVPN lo permite puedes hacer esto después de importar el perfil OpenVPN. De lo contrario puedes editar el perfil .ovpn con un editor de texto y cambiar la línea 'remote' para que contenga la dirección IP WAN o el hostname de tu FreedomBox como se indica aquí. - - - -
-
- Navegar por Internet tras conectar a una VPN - Tras conectar a la VPN el dispositivo cliente podrá navegar por Internet sin más configuración adicional. No obstante una pre-condición para que esto funcione es que necesitas tener al menos 1 interfaz (tarjeta) de red conectado a Internet en la zona Externa del cortafuegos. Usa la página de configuración de redes para editar la zona del cortafuegos con los interfaces (tarjetas) de red del dispositivo. -
-
- Uso -
- En Android/LineageOS - - - Visita la página principal de FreedomBox. Ingresa con tu cuenta de usuario. Desde la página principal descarga el perfil OpenVPN. El archivo se llamará <usuario>.ovpn. - - - - - - - - - OpenVPN Download Profile - - - - - - - - Descarga un cliente OpenVPN como OpenVPN for Android. Se recomienda el repositorio F-Droid. En la app, selecciona Importar perfil. - - - - - - - - - OpenVPN App - - - - - - - - En el diálogo Seleccionar perfil elige el archivo <usuario>.opvn que acabas de descargar. Pon un nombre a la conexión y graba el perfil. - - - - - - - - - OpenVPN import profile - - - - - - - - El perfil recién creado aparecera. Si hace falta edita el perfil y pon el nombre de dominio de tu FreedomBox como dirección de servidor. - - - - - - - - - OpenVPN profile created - - - - - - - - - - OpenVPN edit domain name - - - - - - - - Conecta haciendo clic sobre el perfil. - - - - - - - - - OpenVPN connect - - - - - - - - - - OpenVPN connected - - - - - - - - Cuando esté desconecta haciendo clic sobre el perfil. - - - - - - - - - OpenVPN disconnect - - - - - - - -
-
- En Debian - Instala un cliente OpenVPN para tu sistema - - Abre el archivo ovpn con el cliente OpenVPN. - .ovpn]]> - Si te sale un error como configuration error: invalid 1th argument to “proto” (line 5) edita el fichero .ovpn y elimina la línea proto udp6. -
-
-
- Comprobar si estás conectado -
- En Debian - - - Trata de hacer ping a tu FreedomBox u otros dispositivos de tu red. - - - El comando ip addr debe mostrar una conexión tun0. - - - El comando traceroute freedombox.org debiera mostrar la dirección IP del servidor VPN como primer salto. - - - Si usas Network Manager puedes crear una conexión nueva importando el fichero: - .ovpn]]> -
-
-
- Enlaces Externos - - - -
-
-
- Privoxy (Proxy Web) - Un proxy web actúa como filtro para tráfico web entrante y saliente. Por tanto, puedes ofrecer a los ordenadores de tu red pasar su tráfico internet a través del proxy para eliminar anuncios y mecanismos de rastreo indeseados. - Privoxy es un software para la seguridad, privacidad, y control certero sobre la web. Proporciona una navegación web mucho más controlada (y anónima) que la que te puede ofrecer tu navegador. Privoxy "es un proxy enfocado principalmente al aumento de la privacidad, eliminación de anuncios y morralla, y a liberar al usuario de las restricciones impuestas sobre sus propias actividades" (fuente: Preguntas frecuentes acerca de Privoxy). -
- Vídeo - Mira el vídeo acerca de como configurar y usar Privoxy en FreedomBox. -
-
- Configurar - - - Instala Proxy Web (Privoxy) desde FreedomBox - - - - - - - Privoxy Installation - - - - - - Adapta las preferencias de proxy de tu navegador al hostname (o dirección IP) de tu FreedomBox con el puerto 8118. Observa por favor que Privoxy sólo puede tratar tráfico HTTP y HTTPS. No funciona con FTP u otros protocolos. - - - - - - - Privoxy Browser Settings - - - - - - Vé a la página o . Si Privoxy está instalado adecuadamente podrás configurarlo en detalle y si no verás un mensaje de fallo. - - - Si usas un portátil que tenga a veces que conectarse con FreedomBox y Privoxy pasando por routers de terceros quizá quieras instalar una extensión proxy switch que te permite activar y desactivar el proxy más fácilmente. - - -
-
- Usuarios Avanzados - - - La instalación de serie debería proporcionar un punto de partida razonable para la mayoría de los usuarios. Indudablemente habrá ocasiones en las que quieras ajustar la configuración. Eso se puede afrontar cuando surja la necesidad. - - - Con Privoxy activado puedes ver su documentación y los detalles de su configuración en http://config.privoxy.org/ o en http://p.p. - - - Para habilitar los cambios en estas configuraciones primero tienes que cambiar el valor de habilitar-acciones-de-edición en /etc/privoxy/config a 1. Antes de hacerlo lee el manual con atención, especialmente: - - - - No se puede controlar por separado el accesso al editor por "ACLs" o authenticación HTTP, así que cualquiera con acceso a Privoxy puede modificar la configuración de todos los usuarios. Esta opción no se recomienda para entornos con usuarios no confiables. Nota que un código de cliente malicioso (p.ej. Java) también puede usar el editor de acciones y no deberías habilitar estas opciones a no ser que entiendas las consecuencias y estés seguro de que los navegadores están correctamente configurados. - - - - - - Ahora encontrarás un botón EDITAR en la pantalla de configuración de http://config.privoxy.org/. - - - La Guía rápida es un buen punto de partida para leer acerca de cómo definir reglas de bloqueo y filtrado propias. - - -
-
-
- Quassel (Cliente IRC) - Quassel es una aplicación IRC separada en 2 partes: un "núcleo" y un "cliente". Esto permite que el núcleo permanezca conectado a los servidores IRC recibiendo mensajes aunque el cliente esté desconectado. Ejecutando el servicio nucleo de Quassel FreedomBox puede mantenerte siempre en línea. Se pueden usar uno o varios clentes Quassel para conectarse intermitentemente desde escritorios o dispositivos móviles. -
- ¿Para qué ejecutar Quassel? - Muchos debates acerca de FreedomBox tienen lugar en el canal IRC irc://irc.debian.org/freedombox. Si tu FreedomBox ejecuta Quassel recolectará todos ellos mientras estás ausente, capturando las respuestas a tus preguntas. Recuerda que el proyecto FreedomBox es mundial y participa gente de casi todos los husos horarios. Usarás tu cliente para conectar al núcleo de Quassel y leer y/o responder cuando tengas tiempo y disponibilidad. -
-
- ¿Cómo activar Quassel? - - - En el interfaz web de FreedomBox - - - selecciona Aplicaciones - - - ve a Cliente IRC (Quassel) e - - - instala la aplicación y asegúrate de que está habilitada - - - - - - - Quassel Installation - - - - - - tu núcleo de Quassel se está ejecutando - - - - -
-
- Redirección de Puertos - Si tu FreedomBox está detras de un router necesitarás configurar la redirección de puertos en tu router. Redirije los siguientes puertos de Quassel: - - - TCP 4242 - - - Ejemplo de configuración en el router: - - - - - - - - - Quassel_PortForwarding_es_v01.png - - - - - - - -
-
- Clientes - Hay disponibles clientes para escritorio y dispositivos móviles para conectar a Quassel. -
- Escritorio - En un sistema Debian puedes, p. ej. usar quassel-client. Los siguientes pasos describen cómo conectar el Cliente Quassel con el Núcleo de Quassel de tu FreedomBox. La primera vez que te conectes el Núcleo de Quassel se inicializará también. - - - Abre el Cliente Quassel. Te guiará paso a paso para Conectarse al núcleo. - - - - - - - - - Connect to Core - - - - - - - - Haz clic en el botón Añadir para abrir el diálogo Añadir cuenta de núcleo. - - - - - - - - - Add Core Account - - - - - - - - Rellena cualquier cosa en el campo Nombre de la cuenta. Introduce el hostname DNS de tu FreedomBox en el campo Servidor. El campo Puerto debe tener el valor 4242. Pon el usuario y la contraseña de la cuenta que quieres crear para conectar con el Núcleo de Quassel en los campos Usuario y Contraseña. Si no quieres que se te pida la contraseña cada vez que arranques el cliente de Quassel marca la opción Recordar. - - - Tras pulsar OK en el diálogo Añadir cuenta de núcleo deberías ver la cuenta en el diálogo Conectarse al núcleo. - - - - - - - - - Connect to Core - - - - - - - - Selecciona la cuenta del núcleo recién creada y dale a OK para conectar con él. - - - Si es la primera vez que te conectas a este núcleo verás un aviso de Certificado de seguridad no confiable y necesitarás aceptar el certificado del servidor. - - - - - - - - - Untrusted Security Certificate - - - - - - - - Selecciona Continuar. Se te preguntará si quieres aceptar el certificado permanentemente. Selecciona Para siempre. - - - - - - - - - Untrusted Security Certificate - - - - - - - - Si nadie se ha conectado nunca antes a este Núcleo Quassel antes verás un diálogo por pasos Asistente de configuración del núcleo. Selecciona Siguiente. - - - {{attachment:quassel-client-6-core-configuration-wizard_es_v01.png|Core Configuration Wizard|width=504}n - - - - - En la página Crear usuario administrador introduce el usuario y la contraseña que has usado antes para crear la conexión al núcleo. Selecciona Recordar la contraseña para que recuerde la contraseña para futuras sesiones. Haz clic en Siguiente. - - - - - - - - - Create Admin User Page - - - - - - - - En la página Seleccionar un motor de almacenamiento selecciona SQLite y haz clic en Enviar. - - - - - - - - - Select Storage Backend - - - - - - - - La configuración del núcleo está completa y verás un asistente Quassel IRC para configurar tus conexiones IRC. Haz clic en Siguiente. - - - - - - - - - Welcome Wizard - - - - - - - - A continuación en la página de Configurar identidad pon un nombre y múltiples pseudónimos. Te presentarás con estos a otros usuarios de IRC. No es necesario dar tu nombre real. Los pseudónimos múltipes son útiles como suplentes cuando el primero no se pueda usar por cualquier motivo. Tras aportar la información haz clic en Siguiente. - - - - - - - - - Setup Identity - - - - - - - - A continuación en la página de Configurar conexión de red pon el nombre de red que quieras y una lista de servidores a los que se deba conectar el Núcleo de Quassel para unirte a esa red IRC (por ejemplo irc.debian.org:6667). - - - - - - - - - Setup Network Connection - - - - - - - - Selecciona un servidor de la lista y dale a Editar. En el diálogo Información del servidor pon el puerto 6697 (consulta la lista real de servidores y sus puertos seguros en la documentación de tu red) y haz clic en Usar conexión cifrada. Clic en OK. Esto es para asegurar que la comunicación entre tu FreedomBox y el servidor de la red IRC va cifrada. - - - - - - - - - Server Info - - - - - - - - Server Info SSL - - - - - - - - Ya de vuelta en el diálogo Configuración de Conexión de Red proporciona una lista de canales IRC (como #freedombox) a los que unirte al conectarte a la red. Dale a Grabar y Conectar. - - - - - - - - - Setup Network Connection - - - - - - - - Deberías conectar con la red y ver la lista de canales a los que te has unido en el panel Todas las conversaciones de la izquierda de la ventana principal del Cliente Quassel. - - - - - - - - - Quassel Main Window - - - - - - - - Selecciona un canal y empieza a recibir mensajes de otros participantes del canal y a enviar los tuyos. - - -
-
- Android - Para dispositivos Android puedes usar p.ej. Quasseldroid obtenido desde F-Droid - - - introduce el núcleo, usuario, etc. - - - - - - - - - Quasseldroid.png - - - - - - - - Por cierto el verbo alemán quasseln significa hablar mucho, rajar. -
-
-
-
- Radicale (Calendario y Contactos) - Con Radicale puedes sincronizar tus calendarios, listas de tareas y agendas de contactos personales entre varios ordendores, tabletas, y/o teléfonos inteligentes y compartirlos con tus amistades. Todo sin tener que permitir a terceros que accedan a tu información privada. -
- ¿Porque debería usar Radicale? - Usando Radicale puedes evitar servicios centralizados como Google Calendar o Apple Calendar (iCloud) que explotan los datos de tus eventos y conexiones sociales. -
-
- ¿Cómo configurar Radicale? - Primero el servidor Radicale necesita estar activado en tu FreedomBox. - - - En el servicio FreedomBox - - - selecciona Apps - - - ve a Radicale (Calendario y Libreta de contactos) e - - - instala la aplicación. Tras completar la instalación asegúrate de que la aplicación está marcada como "habilitada" en el interfaz de FreedomBox. Habilitar la aplicación arranca el servidor CalDAV/CardDAV Radicale. - - - define los permisos de acceso: - - - Solo el dueño de un calendario/libreta de contactos puede ver o hacer cambios - - - Cualquier usuario puede ver cualquier calendario/libreta de contactos pero solo el dueño puede hacer cambios - - - Cualquier usuario puede ver o hacer cambios en cualquier calendario/libreta - - - - - - - Nota: Solo los usuarios dados de alta en FreedomBox pueden acceder a Radicale. - - - - - - - Radicale-Plinth.png - - - - Si quieres compartir un calendario solo con algunos usuarios determinados la manera más simple es crear un nuevo usuario común para ellos y compartir con ellos el nombre del usuario común y su contraseña. - Radicale proporciona un interfaz web básico que solo soporta crear calendarios y libretas nuevos. Para añadir eventos o contactos se necesita una aplicación cliente soportada externa. - - - - - - - radicale_web.png - - - - - - Crear calendarios y/o libretas usando el interfaz web - - - Visita https://<dirección_IP_o_dominio_de_tu_servidor>/radicale/ - - - Ingresa con tu cuenta de FreedomBox - - - Selecciona "Crear nuevo calendario o libreta" - - - Proporciona un título y selecciona el tipo - - - Opcionalmente, proporciona una descripción o selecciona un color - - - Haz clic en "Crear" - - - La página mostrará la URL de tu created nuevo calendario o libreta - - - - - Ahora abre tu aplicación cliente para crear calendarios y/o libretas nuevos que usarán tu FreedomBox y servidor Radicale. El sitio web de Radicale proporciona una lista de clientes soportados pero no uses las URLs que se mencionan allí; sigue este manual porque FreedomBox usa otra configuración. A continuación se muestran los pasos para 2 ejemplos: - - - Ejemplo de configuración con el cliente Evolution: - - - Calendario - - - Crea un calendario nuevo - - - Selecciona el "Tipo" "CalDAV" - - - Con "CalDAV" seleccionado aparecerán más opciones en el cuadro de diálogo. - - - URL: https://<dirección_IP_o_dominio_de_tu_servidor>/radicale/<usuario>/<nombre_del_calendario>.ics/ cambiando los elementos marcados entre <> de acuerdo a tu configuración. - - - nota: la / inicial de la ruta es importante. - - - - - Habilita "Usar una conexión segura." - - - Nombre del calendario - - - - - - - Radicale-Evolution-Docu.png - - - - - - - - Lista de tareas: Añadir una lista de tareas es prácticamente igual que con un calendario. - - - Contactos - - - Sigue los mismos pasos anteriores reemplazando CalDAV por WebDAV y la extensión de la libreta por .vcf. - - - - - - -
-
- Sincronizar via Tor - Configurar un calendario en FreedomBox con Radicale sobre Tor es lo mismo que sobre la red en claro, en resumen: - - - Cuando hayas ingresado al interfaz web de FreedomBox desde Tor haz clic en Radicale e introduce un usuario de tu FreedomBox y su contraseña. - - - Ingresa en el interfaz web de Radicale usando el usuario de tu FreedomBox y su contraseña. - - - Haz clic en "Crear libreta o calendario nuevo", proporciona un título, selecciona un tipo y haz clic en "Crear". - - - Anota la URL, p.ej. https://<direccion_onion_de_tu_servidor>.onion/radicale/<usuario>/<código_del_calendario>/ cambiando los elementos marcados entre <> de acuerdo a tu configuración. - - - Estas instrucciones son para Thunderbird/Lightning. Nota: necesitarás estar conectado a Tor con el Tor Browser Bundle. - - - Abre Thunderbird, la extensión (add-on) Torbirdy y reinicia Thunderbird. (Quizá no haga falta.) - - - En el interfaz Lightning, en el panel izquierdo bajo Calendario haz clic con el botón derecho del ratón y selecciona "Nuevo calendario". - - - Selecciona "En la red" como localización de tu calendario. - - - Selecciona "CalDAV" copia la URL, p.ej., https://<direccion_onion_de_tu_servidor>.onion/radicale/<usuario>/<código_del_calendario>/. como localización cambiando los elementos marcados entre <> de acuerdo a tu configuración. - - - Proporciona un nombre, etc. Haz clic en "Siguiente". Tu calendario está ahora sincronizando con tu FreedomBox a través de Tor. - - - Si no has generado un certificado con "Let's Encrypt" para tu FreedomBox quizá necesites seleccionar "Confirmar Excepción de Seguridad" cuando se te indique. - - -
-
- Sincronizar con tu teléfono Android - Hay varias Apps que admiten integración con el servidor Radicale. Este ejemplo usa DAVx5, que está disponible p.ej. en F-Droid. Si también quieres usar listas de tareas hay que instalar primero la app compatible OpenTasks. - Sigue estos pasos para configurar tu cuanta con el servidor Radicale de tu FreedomBox. - - - Instala DAVx5. - - - Crea una cuenta nueva en DAVx5 haciendo clic en el botón flotante [+]. - - - Selecciona la 2ª opción como se muestra en la primera imagen más abajo e introduce la URL base (no olvides la / del final). DAVx5 averiguará las cuentas CalDAV y WebDAV del usuario. - - - Sigue este video del FAQ de DAVx5 para aprender cómo importar tus contactos existentes a Radicale. - - - - Sincronizar contactos - - - - Haz clic en los menús de hamburguesa de CalDAV y CardDAV y selecciona "Refrescar ..." en caso de cuentas existentes o "Crear ..." en caso de cuentas nuevas (ver la 2ª captura de pantalla más abajo). - - - Marca las cajas de las libretas y/o contactos que quieras sincronizar y haz clic en el botón de sincronización de la cabecera. (ver la 3ª captura de pantalla más abajo) - - - - - - - - - DAVx5 account setup - - - - - - - - DAVx5 refresh - - - - - - - - DAVx5 account sync - - - -
-
- Usuarios Avanzados -
- Compartir recursos - Arriba se mostrá una manera fácil de crear un recurso para un grupo de gente creando una cuenta dedicada común. Aquí de describe un método alternativo con el que se otorga acceso a un calendario a 2 usuarios Usuario1 y Usuario2. Esto requiere acceso por SSH a la FreedomBox. - - - crea un archivo /etc/radicale/rights - - - - - - [calendario_de_mis_amigos] es solo un identificador, puede ser cualquier nombre. - - - La sección [owner-write] asegura que los dueños tengan acceso a sus propios archivos. - - - - - Edita el archivo /etc/radicale/config y haz los siguientes cambios en la sección [rights] - - - - - - - - Reinicia el servidor Radicale o la FreedomBox - - -
-
- Importar archivos - Si estás usando un archivo de contactos exportado desde otro servicio o aplicación hay que copiarlo a: /var/lib/radicale/collections/<usuario>/<nombre_del_archivo_de_contactos>'.vcf. -
-
-
- Migrar desde Radicale versión 1.x a versión 2.x - En Febrero de 2019 se actualizó Radicale en las versiones "en pruebas" (testing) de Debian desde la versión 1.x a la 2.x. La versión 2.x es mejor pero incompatible con los datos y la configuración empleados en la 1.x. El mecanismo automático de actualización de FreedomBox que emplean las actualizaciones desatendidas no actualiza automaticamente la version 2.x de Radicale debido a cambios en los archivos de configuración. No obstante la version 19.1 de FreedomBox, disponible en en las versiones "en pruebas" (testing) desde el 23 de Febrero de 2019, realizará la migración de los datos y la configuración a la versión 2.x de Radicale. No se requiere ninguna acción por parte de los usuarios típicos. Ocurrirá automáticamente. - Si por algún motivo necesitas ejecutar a mano apt dist-upgrade en tu máquina Radicale se actualizará a 2.x y entonces tu FreedomBox no podrá ejecutar esta actualización (ya que el proyecto de origen decidió eliminar las herramientas de migración de la versión 2.x de Radicale). Para evitar esta situación se recomienda el siguiente procedimiento para actualizar. - - En cualquier caso, si ya has actualizado a Radicale 2.x sin ayuda de FreedomBox necesitas realizar la migración de los datos y la configuración por tí mismo. Sigue este procedimiento: - - Notas: - - - python-radicale es un paquete antigüo de la versión 1.x de Radicale que sigue disponible en las versiones "en pruebas" (testing) de Debian. Esto es un hack alternativo para emplear la funcionalidad --export-storage que es responsable de la migración de datos. Por desgracia esta funcionalidad ya no está disponible en Radicale 2.x. - - - Los ficheros que acaban en .dpkg-dist solo existirán si has elegido "Conservar tu versión actualmente instalada" cuando se te preguntó durante la actualización a Radicale 2.x. El procedimiento anterior sobrescribirá la configuración antigüa con una nueva. No se necesitan cambios a los 2 ficheros de configuración salvo que hayas cambiado la preferencia de compartición de calendario. - - - Nota: Durante la migración tus datos permanecen a salvo en el directorio /var/lib/radicale/collections. Los datos nuevos se crearán y usarán en el directorio /var/lib/radicale/collections/collections-root/. - - - El comando tar hace una copia de seguridad de tu configuración y tus datos en /root/radicale_backup.tgz por si haces o algo va mal y quieres deshacer los cambios. - - -
-
- Resolución de Problemas - 1. Si estás usando FreedomBox Pioneer Edition o instalando FreedomBox sobre Debian Buster Radicale podría no estar operativo inmediatamente después de la instalación. Esto se debe a un defecto ya corregido posteriormente. Para superar el problema actualiza FreedomBox haciendo clic en 'Actualización Manual' desde la app 'Actualizaciones'. Otra opción es simplemente esperar un par de días y dejar que FreedomBox se actualice solo. Después instala Radicale. Si Radicale ya está instalado deshabilitalo y rehabilitalo después de que se complete la actualización. Esto arreglará el problema y dejará a Radicale trabajando correctamente. -
-
-
- Repro (Servidor SIP) - - - App eliminada - - Repro ha sido eliminada de Debian 10 (Buster) y por tanto ya no está disponible en FreedomBox. - -
-
- Roundcube (Cliente de Correo Electrónico (Email)) -
- ¿Qué es Roundcube? - Roundcube es un cliente de correo electrónico (email) para navegador con un interfaz de usuario parecido a una aplicación de escritorio. Admite varios lenguajes. Roundcube usa el protocolo de acceso a mensajes de Internet (IMAP = Internet Message Access Protocol) para acceder a los correos en un servidor remoto. Soporta MIME para enviar archivos adjuntos y en particular proporciona libreta de contactos, gestión de carpetas, búsquedas de mensajes y verificación ortográfica. -
-
- Usar Roundcube - Tras instalar Roundcube se puede acceder a él en https://<tu_freedombox>/roundcube. Introduce tu usuario y contraseña. El usuario de muchos servicios de correo electrónico suele ser la propia dirección completa, como usuario_de_ejemplo@servicio_de_ejemplo.org, no solo el usuario usuario_de_ejemplo. Introduce la dirección del servidor IMAP de tu servicio de correo electrónico en el campo Servidor. Puedes probar a poner aquí tu nombre de dominio como servicio_de_ejemplo.org si la dirección es usuario_de_ejemplo@servicio_de_ejemplo.org y si esto no funciona consulta la dirección del servidor IMAP en la documentación de tu proveedor de correo electrónico. Se recomienda encarecidamente usar una conexión cifrada a tu servidor IMAP. Para ello inserta el prefijo "imaps://" al principio de la dirección del servidor IMAP. Por ejemplo, imaps://imap.servicio_de_ejemplo.org. - - - - - - - Logging into your IMAP server - - - -
-
- Usar Gmail con Roundcube - Si quieres usar Roundcube con tu cuenta Gmail necesitas habilitar primero el ingreso con contraseña en las preferencias de tu cuenta Google porque Gmail no va a permitir por defecto que ingresen aplicaciones mediante contraseña. Para hacerlo visita las preferencias de la Cuenta Google y habilita Apps Menos seguras. A continuación ingresa en Roundcube introduciendo tu dirección de Gmail como Usuario y tu contraseña. En el campo servidor pon imaps://imap.gmail.com. - - - - - - - Logging into Gmail - - - -
-
-
- Samba (Almacenamiento de Ficheros en Red) - Samba te permite tener una carpeta compartida en la red local que se puede usar desde multiples ordenadores con sistemas operativos diferentes. De ahora en adelante nos referiremos a estas carpetas como "shares". Puedes tener una carpeta personal compartida por tus propios dispositivos (share casero), una compartida con un grupo de confianza (share de grupo) o una compartida con todo dispositivo de la red (share abierto). - Samba te permite tratar un share como si fueran carpetas locales de tu ordenador. No obstante los shares solo están disponibles en la red local. - Para aprender más acerca de Samba, mira la documentación de usuario de su wiki. - Disponible desde la versión: 19.22 -
- Usar Samba - Tras la instalación, puedes elegir qué discos compartir. Los shares habilitados están accesibles en el administrador de archivos de tu ordenador en la ruta \\freedombox (en Windows) o smb://freedombox.local (en Linux y Mac). Hay 3 tipos de share para elegir: - - - Share abierto - accesible a cualquiera en tu red local. - - - Share de grupo - accesible solo a usuarios FreedomBox que estén en el grupo freedombox-share. - - - Share casero - cada usuario del grupo freedombox-share puede tener su propio espacio privado. - - -
- En Android - Para acceder a shares Samba desde un dispositivo Android instala el "Cliente Samba para Android" desde F-Droid o Google Play. Introduce smb://freedombox.local/<disco> como ruta del share en la app. Tus carpetas compartidas deberían estar visibles en la app de administración de archivos. También VLC para Android puede detectar automáticamente y usar los shares Samba. -
-
-
- Integración con otras apps - La app Transmission de FreedomBox proporciona una configuración para permitir que las descargas se graben directamente en un share Samba. - Si quieres dejar disponibles en Samba ficheros sincronizados con Syncthing tienes que asegurarte de sincronizar en la carpeta compartida de Samba. Además, para dejar las carpetas de Syncthing disponibles en carpetas abiertas o de grupo de Samba necesitas asegurarte de pulsar el botón "Permisos > Ignorar" bajo la pestaña "Avanzado" de la carpeta en el interfaz web de usuario de Syncthing. Esto permitirá escribir los ficheros mediante Samba. -
-
- Comparación con otras apps -
- Syncthing - Syncthing mantiene una copia de la carpeta compartida en cada dispositivo con el que se comparte. Samba mantiene solo una copy en tu dispositivo FreedomBox. - Syncthing puede sincronizar tus carpetas compartidas entre dispositivos por Internet. Los shares Samba solo están disponibles en tu red local. - Como Syncthing es primordialmente una solución de sincronización, tiene funcionalidades como resolución de conflictos y versionado. Samba solo tiene una copia del fichero, así que no necesita tales funcionalidades. Por ejemplo, si dos personas están editando una hoja de cálculo almacenada en un share Samba el último que grabe el fichero gana. -
-
-
-
- Searx (Búsqueda Web) -
- Acerca de Searx - Searx es un metabuscador. Un metabuscador agrega los resultados de varios buscadores y los presenta en un interfaz unificado. - Lee más acerca de Searx en su sitio web oficial. - Disponible desde: versión 0.24.0 -
-
- Captura de pantalla - - - - - - - Searx Screenshot - - - -
-
- Vídeo - Searx installation and first steps (14 MB) -
-
- ¿Por qué usar Searx? -
- Personalización y Burbujas por Filtrado - Los buscadores tienen la capacidad de perfilar a sus usuarios y les sirven los resultados más relevantes para ellos, encerrandoles en burbujas por filtrado y distorsionando la visión que la gente tiene del mundo. Los buscadores tienen un incentivo financiero para servir publicidad interesante a sus usuarios, ya que incrementa la probabilidad de que hagan clic en los anuncios. - Un metabuscador es una solución posible a este problema, ya que agrega resultados de multiples buscadores puenteando así los intentos de personalización de los buscadores. - Searx evita almacenar cookies de buscadores para eludir traceos y perfilados de buscadores. -
-
- Filtrado de publicidad - Searx filtra anuncios de los resultados de búsqueda antes de servirlos al usuario, con lo que mejora la relevancia de tus resultados y te evita distracciones. -
-
- Privacidad - Searx usa por defecto HTTP POST en vez de GET para enviar tus consultas de búsqueda a los buscadores, así que si alguien espía tu tráfico no podrá leerlas. Tampoco se almacenarán las consultas en el histórico de tu navegador. - Nota: Searx usado desde la barra (omnibar) del navegador Chrome hará peticiones GET en vez de POST. -
-
-
- Searx en FreedomBox - - - En FreedomBox Searx usa las credenciales únicas de Single Sign On. Esto implica que tienes que haber ingresado en tu FreedomBox con el navegador en el que estás usando Searx. - - - Se puede acceder fácilmente a SearX a través de Tor. - - - Se puede añadir a Searx a la barra de buscadores del navegador Firefox. Mira la Ayuda de Firefox acerca de este asunto. Una vez esté Searx añadido también podrás establecerlo como tu buscador por defecto. - - - Searx también ofrece resultados de búsqueda en formatos csv, json y rss, que se pueden usar desde scripts para automatizar algunas tareas. - - -
-
-
- Shadowsocks (Proxy SOCKS5) -
- ¿Qué es Shadowsocks? - Shadowsocks es un proxy SOCKS5 ligero y seguro, diseñado para proteger tu tráfico Internet. Se puede usar para eludir la censura y los filtros de Internet. Tu FreedomBox puede ejecutar un cliente Shadowsocks que puede conectar con un servidor Shadowsocks. También ejecutará un proxy SOCKS5. Los dispositivos locales pueden conectar con este proxy y sus datos serán cifrados y retransmitidos a través del sevidor Shadowsocks. - Nota: Shadowsocks está disponible en FreedomBox a partir de la versión 0.18. -
-
- Usar el cliente Shadowsocks - La implementación actual de Shadowsocks en FreedomBox solo soporta configurar FreedomBox como cliente Shadowsocks. Este caso de uso sería así: - - - El client de Shadowsocks (FreedomBox) está en una región en la que partes de Internet están bloqueadas o censuradas. - - - El servidor de Shadowsocks está en una región diferente que no tiene esos bloqueos. - - - FreedomBox proporciona un servicio de proxy SOCKS en la red local para que otros dispositivos hagan uso de la conexión Shadowsocks. - - - En el futuro será posible configurar FreedomBox como servidor Shadowsocks. -
-
- Configurar tu FreedomBox para el cliente Shadowsocks - Para habilitar Shadowsocks primero navega a la página Proxy Socks5 (Shadowsocks) e instalalo. - Servidor: el servidor Shadowsocks no es la IP o la URL de FreedomBox, sino que será otro servidor o VPS configurado como tal (servidor Shadowsocks). También hay algunos servidores Shadowsocks públicos listados en la web, pero sé consciente de que quienquiera que opere el servidor puede ver a dónde van las peticiones y cualquier dato no cifrado que se transmita. - Para usar Shadowsocks una vez instalado configura la URL del proxy SOCKS5 en tu dispositivo, navegador o aplicación como http://<tu_freedombox>:1080/. -
-
-
- Syncthing (Sincronización de Archivos) - Con Syncthing instalado en tu FreedomBox puedes sincronizar contenido desde otros dispositivos a tu FreedomBox y vice-versa. Por ejemplo puedes mantener sincronizadas las fotos tomadas desde tu teléfono móvil con tu FreedomBox. - Disponible desde versión: 0.14. - Syncthing es una solución de sincronización entre pares, no una de tipo cliente-servidor. Esto implica que FreedomBox no es realmente el servidor y tus otros dispositivos no son sus clientes. Desde la perspectiva de Syncthing todos son dispositivos equivalentes. Puedes emplear Syncthing para sincronizar tus archivos entre cualquiera de tus dispositivos. La ventaja que aporta FreedomBox consiste en que como es un servidor está encendida (casi) siempre. Supón que quieres sincronizar las fotos de tu teléfono con tu portátil. Si sincronizas tu teléfono con FreedomBox el portátil podrá obtenerlas desde la FreedomBox cuando vuelva a conectarse. No necesitas preocuparte de cuando se conectan los otros dispositivos. Si tu FreedomBox es uno de los dispositivos configurados con la carpeta compartida de Syncthing puedes estár tranquilo que tus otros dispositivos se sincronizarán en cuanto se conecten. - Tras instalarlo sigue estas instrucciones del proyecto Syncthing: Arrancando. - Syncthing permite compartir selectivamente carpetas individuales. Antes de compartir los dispositivos tienen que estar emparejados leyendo códigos QR o introduciendo manualmente identificadores de dispositivo. Syncthing tiene un servicio de autodescubrimiento para identicar fácilmente a los otros dispositivos de la misma subred que tengan Syncthing instalado. - Para acceder al cliente web de la instancia Syncthing que se ejecuta en tu FreedomBox, usa la ruta /syncthing. Actualmente este cliente web está accesible solo a los usuarios de FreedomBox que tengan privilegios de administrador aunque en alguna futura versión podría estarlo a todos los usuarios de FreedomBox. - - - - - - - Syncthing web interface - - - - Syncthing tiene apps Android disponibles en F-Droid y Google Play. También hay disponibles aplicaciones de escritorio multiplataforma. - Para más información acerca de Syncthing visita su sitio web oficial y su documentación. -
- Sincronizar via Tor - Syncthing debe sincronizar automáticamente con tu FreedomBox incluso cuando esta solo sea accesible como servicio Tor Onion. - Si quieres enrutar tu cliente Syncthing via Tor configura la variable de entorno all_proxy: - - Para más información mira la documentación de Syncthing acerca de el uso de proxies. -
-
- Evitar repetidores de Syncthing - Syncthing emplea por defecto conexiones dinámicas para conectar con otros pares. Esto significa que si estás sincronizando a través de Internet, los datos quizá tengan que atravesar repetidores de Syncthing públicos para alcanzar tus dispositivos. Esto desaprovecha que tu FreedomBox tenga una dirección IP pública. - Al añadir tu FreedomBox como dispositivo en otros clientes de Syncthing establece tu dirección como "tcp://<mi.dominio.freedombox>" en vez de "dinámica". Esto permite a tus pares Syncthing conectarse diréctamente a tu FreedomBox eludiendo la necesidad de repetidores. También permite sincronización rápida bajo demanda si no quieres mantener a Syncthing ejecuándose todo el tiempo en tus dispositivos móviles. -
-
-
- Tiny Tiny RSS (Lector de Feeds de Noticias) - Tiny Tiny RSS es un lector y agregador de feeds de noticias (RSS/Atom) diseñado para leer noticias desde cualquier lugar con una experiencia lo más parecida posible a una aplicación de escritorio. - Cualquier usuario creado mediante el interfaz web de FreedomBox podrá ingresar y usar esta app. Cada usuario tiene sus propios feeds, estado y preferencias. -
- Usar el interfaz web - Cuando esté habilitado Tiny Tiny RSS estará disponible en la ruta /tt-rss del servidor web. Cualquier usuario creado mediante FreedomBox podrá ingresar y usar esta app. - - - - - - - Tiny Tiny RSS - - - -
- Añadir un nuevo feed - 1. Ve a la página cuyo feed quieras y copia su enlace RSS/Atom feed. - - - - - - - Selecting feeds - - - - 2. Selecciona "Subscribirse al feed.." en el desplegable Acciones. - - - - - - - Subscribe to feed - - - - 3. Pega la URL que has copiado en el diálogo que aparece y pulsa el botón Subscribirse. - - - - - - - Subscription dialog box - - - - Dale un minuto a la aplicación para obtener los feeds. - En algunos sitios web el botón de feeds RSS no está claramente visible. En tal caso simplemente pega la URL del sitio web en el diálogo Subscribirse y deja que TT-RSS detecte automáticamente los feeds RSS que haya en la página. - Puedes probarlo ahora con la página principal de WikiNews - Como puedes ver en la imagen seguiente TT-RSS ha detectado y añadido el feed Atom de WikiNews a nuestra lista de feeds. - - - - - - - WikiNews feed added - - - - Si no quieres conservar este feed haz clic con el botón derecho del ratón en el feed de la imagen anterior, selecciona Editar feed y dale a Desubscribir en el diálogo que aparece. - - - - - - - Unsubscribe from a feed - - - -
-
- Importar tus feeds desde otro lector - Encuentra en tu lector de feeds previo una opción para Exportar tus feeds a un fichero. Si tiene que elegir entre varios formatos elige OPML. Pongamos que tu fichero de feeds exportados se llama Subscriptions.opml - Haz click en la esquina superior izquierda el menú Acciones y selecciona Preferencias. Se te llevará a otra página. - En la cabecera superior selecciona la 2ª solapa llamada Feeds. Tiene varias secciones y la 2ª se llama OPML. Selecciónala. - - - - - - - OPML feeds page - - - - Para importar tu fichero Subscriptions.opml a TT-RSS, - - - Haz clic en Examinar... y selecciona el fichero en tu sistema de archivos. - - - Haz clic en Importar mi OPML - - - Tras importar se te llevará a la sección Feeds que está en la página encima de la de OPML. Puedes ver que los feeds del lector previo figuran ahora importados en Tiny Tiny RSS. Ahora puedes empezar a usar Tiny Tiny RSS como tu lector principal. -
-
-
- Usar la app móvil - La app oficial para Android del proyecto Tiny Tiny RSS funciona con el servidor Tiny Tiny RSS de FreedomBox. Se sabe que la aplicación anterior TTRSS-Reader no funciona. - Desafortunadamente la app oficial para Android solo está disponible en la Play Store de Google y no en F-Droid. Todavía puedes obtener el código fuente y compilar el fichero apk por tu cuenta. - Para configurarla, primero instálala y entonces en la página de configuración pon como URL. Pon tu usuario y contraseña en los detalles del Login así como los detalles de Autenticación HTTP. Si tu FreedomBox no tiene un certificado HTTPS válido configuralo para que admita cualquier certificado SSL y cualquier servidor. - - - - - - - Tiny Tiny RSS - - - - - - - - Tiny Tiny RSS - - - - - - - - Tiny Tiny RSS - - - - - - - - Tiny Tiny RSS - - - - - - - - Tiny Tiny RSS - - - -
-
-
- Tor (Red para el anonimato) -
- ¿Qué es Tor? - Tor es una red de servidores operada por voluntarios. Permite a los usuarios de esos servidores mejorar su privacidad y seguridad cuando navegan por Internet. Tu y tus amigos podéis acceder a tu FreedomBox a través de la red Tor sin revelar su dirección IP. Activando la aplicación Tor en tu FreedomBox podrás ofrecer servicios remotos (chat, wiki, file sharing, etc...) sin mostrar tu localización. Esta aplicación te dará una protección mejor que un servidor web público porque estarás menos expuesto a gente intrusiva. -
-
- Usar Tor para navegación anónima - Tor Browser es la manera recomendada para navegar la web a través de Tor. Puedes descargar Tor Browser desde y seguir sus instrucciones para instalarlo y ejecutarlo. -
-
- Usar Servicio Tor Onion para acceder a tu FreedomBox - El Servicio Tor Onion proporciona una manera de acceder a tu FreedomBox incluso aunque esté detrás de un router, cortafuegos, o redirector NAT (p.ej. si tu proveedor de Internet no proporciona una dirección pública IPv4 para tu router). Para habilitar el Servicio Tor Onion primero navega a la página Red para el anónimato (Tor). (Si no la ves haz clic en el logo de FreedomBox de arriba a la izquierda de la página y ve a la página principal de Apps.) En la página Red para el anónimato (Tor), bajo Configuración, habilita la caja Habilitar los Servicios Tor Onion y pulsa el botón de Actualizar configuración. Tor se reconfigurará y se reiniciará. - Transcurrido un rato la página se refrescará bajo Estado verás la tabla que lista la dirección .onion del servicio. Copia toda la dirección (que termina en .onion) y pégala en el campo dirección de Tor Browser. Deberías poder acceder a tu FreedomBox. (Quizá veas un aviso de certificado porque FreedomBox tiene un certificado autofirmado.) - - - - - - - Tor Configuration - FreedomBox - - - - - - Onion - - - Actualmente solo HTTP (puerto 80), HTTPS (puerto 443) y SSH (puerto 22) están accesibles a través del Servicio Tor Onion configurado en la FreedomBox. -
-
- Apps accesibles via Tor - Las siguientes apps se pueden acceder a través de Tor. Esta lista puede ser incompleta. - - - Calendario y Libreta de direcciones (Radicale) - - - Sincronización de ficheros (Syncthing) - - - Búsqueda Web (Searx) - - - Wiki (MediaWiki) - - - Wiki y Blog (Ikiwiki) - - -
-
- Ejecutar un nodo Tor - Cuando se instala Tor se configura por defecto para ejecutarse como puente a la red (bridge relay). Esta opción se puede deshabilitar en la página de configuración de Tor de FreedomBox. - En la parte inferior de página de Tor de FreedomBox hay una lista de puertos que usa el puente a la red Tor. Si tu FreedomBox está detrás de un router necesitarás configurar la redirección de puertos de tu router para que estos puertos sean accesibles desde Internet. - Los requisitos para ejecutar un puente a la red se listan en la Tor Relay Guide. En resúmen, se - - - recomienda que un puente tenga disponibles para Tor al menos 16 Mbit/s (Mbps) de ancho de banda para subida y bajada. Mejor más. - - - requiere que a se le permita al puente usar un mínimo de 100 GByte de tráfico mensual de salida y de entrada. - - - recomienda que un nodo sin salida (mero reenrutador) de <40 Mbit/s tenga al menos 512 MB de RAM disponible; Uno más rápido de 40 Mbit/s debería tener al menos 1 GB de RAM. - - -
-
- Usar el puerto Tor SOCKS (avanzado) - FreedomBox proporciona un puerto Tor SOCKS al que pueden conectar otras aplicaciones para enrutar su tráfico a través de la red Tor. Este puerto es accesible a cualquier interfaz (de red) configurado en la zona interna del cortafuegos. Para configurar la aplicación apunta el Host SOCKS a la dirección IP interna de la conexión y pon el Puerto SOCKS a 9050. -
- Exjemplo con Firefox - Tu navegador web se puede configurar para emplear la red Tor para toda tu actividad de navegación. Esto permite eludir la censura y oculta tu dirección IP a los sitios web durante la navegación normal. Para anonimato se recomienda usar el Navegador Tor. - Configura tu dirección IP local de FreedomBox y el puerto 9050 como un proxy SOCKS en Firefox. Hay extensiones para facilitar la activación y desactivación del proxy. - - - - - - - Configuring Firefox with Tor SOCKS proxy - - - - Con en proxy SOCKS configurado puedes acceder cualquier URL de tipo onion diréctamente desde Firefox. FreedomBox tiene una dirección onion v3 propia a la que puedes conectarte por la red Tor (guárdala en tus favoritos para usarla en situaciones de emergencia). -
-
-
- Eludiendo la censura de Tor - Si tu proveedor de Internet (ISP) está tratando de bloquear el tráfico Tor puedes usar puentes (a la red Tor) para conectar (a la red Tor). - 1. Obtén la configuración de los puentes de Tor BridgeDB - - - - - - - Tor BridgeDB - - - - 2. Añade las líneas a la configuración de Tor de tu FreedomBox como se muestra. - - - - - - - Tor Configuration Page - - - -
-
-
- Transmission (Cliente web de BitTorrent) -
- ¿Qué es Transmission ? - BitTorrent es un protocolo de comunicaciones para compartir ficheros entre pares (P2P = peer-to-peer). No es anónimo; debes asumir que otros puedan ver qué ficheros estás comprtiendo. Hay 2 clientes web para BitTorrent disponibles en FreedomBox: Transmission y Deluge. Tienen funcionalidades similares pero quizá prefieras uno sobre otro. - Transmission es un cliente BitTorrent ligero, famoso por su simplicidad y una configuración por defecto que "símplemente funciona". -
-
- Captura de pantalla - - - - - - - Transmission Web Interface - - - -
-
- Usar Transmission - Tras instalar Transmission está accesible en https://<tu freedombox>/transmission. Transmission emplea el ingreso único de FreedomBox lo que significa que si has ingresado en tu FreedomBox puedes acceder diréctamente a Transmission sin tener que volver a introducir las credenciales. Si no, se te pedirá que ingreses primero y luego se te redirigirá a la app Transmission. -
-
- Consejos -
- Transferir Descargas desde la FreedomBox - - - Se puede añadir el directorio de descargas de Transmission como directorio compartido en la app "Compartir" y así acceder a tus descargas en este directorio compartido empleando un navegador web. - - - (Avanzado) Si tienes acceso SSH a tu FreedomBox puedes usar sftp para ver el directorio de descargas usando un gestor de archivos o un navegador apropiados (p.ej. dolphin o Konqueror). - - -
-
-
-
- Sitios Web de Usuario (User websites) -
- ¿Qué es User websites? - User websites es un módulo del servidor web Apache habilitado para permitir a los usuarios definidos en el sistema FreedomBox exponer un conjunto de archivos del sistema de ficheros de FreedomBox como sitio web a la red local y/o a internet de acuerdo a la configuración de la red y el cortafuegos. - - - - - - - - - Datos básicos de la aplicación - - - - - - Categoría - - - Compartición de archivos - - - - - Disponible desde la versión - - - 0.9.4 - - - - - Sitio web del proyecto original - - - - - - - - - - Documentación original de usuario - - - - - - - - - - -
-
- Captura de pantalla - - Añadir cuando/si se crea un interfaz para FreedomBox - -
-
- Usar User websites - El módulo está siempre activado y el interfaz web de FreedomBox no ofrece configuración ni página de estado para este módulo. Para servir documentos con el módulo solo se necesita poner los documentos en un subdirectorio designado /home/<un_usuario_de_plinth>/public_html. - User websites servirá los archivos que haya en este directorio cuando se reciban peticiones con la URI ~<un_usuario_de_freedombox>. Por tanto para un dominio ejemplo.org con un usuario pepe una petición ejemplo.org/~pepe/index.html transferirá el fichero /home/pepe/public_html/index.html. -
-
- Usar SFTP para crear public_html y subir archivos - - Pendiente de redactar - -
-
-
-
- Sistema -
- Actualizaciones de Software - FreedomBox puede instalar actualizaciones de seguridad automaticamente. Esta funcionalidad viene activada por defecto y no hace falta ninguna acción manual. Puedes activar las actualizaciones automaticas desde el interfaz web de FreedomBox en la página Actualización de la sección Sistema. Se recomienda encarecidamente que tengas esta opción habilitada para mantener tu FreedomBox segura. - Las actualizaciones se efectúan cada noche. Si quieres apagar tu FreedomBox cada día después de usarla, déjala ejecutando una noche a la semana más o menos para permitir que ocurran las actualizaciones automaticas. Otra posibilidad es ejecutar actualizaciones manuales como se describe más adelante. - Nota que una vez comiencen las actualizaciones podría llevarles mucho tiempo completarse. Durante el proceso de actualización (ya sea el automático nocturno o el manual), no podrás instalar aplicaciones desde el interfaz web de FreedomBox. - - - - - - - upgrades_es_v01.png - - - -
- ¿Cuando obtendré las últimas funcionalidades? - Aunque las actualizaciones se efectúan a diario por razones de seguridad, las últimas funcionalidades no se propagan a todos los usuarios. A continuación se explica cómo llegan las novedades a los usuarios de las diferentes versiones de Debian: - - - Usuarios de versiones estables: Esta categoria de usuarios incluye a los usuarios que compraron la FreedomBox Pioneer Edition, a los que instalaron FreedomBox sobre una distribución estable de Debian y a los que descargaron las imágenes estables desde freedombox.org. Como regla general a estos usuarios solo se les proporciona actualizaciones de seguridad de determinados paquetes. Cuando una release obtiene la confianza de los desarrolladores el propio servicio FreedomBox se actualiza, lo que supone una excepción a esta regla. Esto implica que las últimas funcionalidades de FreedomBox estarán disponibles para estos usuarios aunque no tán inmediata- o frecuentemente como para los usuarios de las versiones en pruebas (testing). Si una app sólo está disponible en la distribución en pruebas (testing) pero no en la estable la app aparecerá en el interfaz web pero no será instalable para los usuarios de la distribución estable. Algunas apps se actualizan en excepción a la regla de "solo actualizaciones de seguridad" cuando la app esté seriamente rota por algún motivo. Debian libera cada bienio una entrega (release) con las últimas versiones estables de cada paquete de software y los desarrolladores de FreedomBox intentarán actualizar a estos usuarios a la nueva entrega (release) sin necesidad de intervención manual. - - - Usuarios de versiones en pruebas: Esta categoria de usuarios incluye a los usuarios que instalaron FreedomBox sobre una distribución en pruebas (testing) y a los que descargaron las imágenes en pruebas (testing) desde freedombox.org. Estos usuarios asumen la posibilidad de afrontar disrupciones ocasionales en los servicios e incluso tener que intervenir manualmente para arreglarlas. Como regla general estos usuarios reciben las últimas funcionalidades y actualizaciones de seguridad para todos los paquetes instalados. Cada quincena se libera una nueva versión de FreedomBox con todas las últimas funcionalidades y correcciones. Estas versiones llegan a los usuarios de la distribución en pruebas (testing) aproximadamente 2 o 3 días después de la liberación. - - - Usuarios de versiones inestables: Esta categoria de usuarios incluye a los usuarios que instalaron FreedomBox sobre una distribución inestable y a los que descargaron las imágenes inestables desde freedombox.org. Estos usuarios asumen la probabilidad de afrontar disrupciones en los servicios y tener que intervenir manualmente para arreglarlas. Como regla general estos usuarios reciben las últimas funcionalidades y actualizaciones de seguridad para todos los paquetes instalados. Cada quincena se libera una nueva versión de FreedomBox con todas las últimas funcionalidades y correcciones. Estas versiones llegan a los usuarios de la distribución inestable el mismo día de la liberación. Solo los desarrolladores, probadores y contribuyentes al proyecto FreedomBox debieran emplear la distribution inestable. Se advierte y exhorta a los usuarios finales de que no la usen. - - -
-
- Actualizaciones Manuales desde el Terminal - Algunos paquetes de software podrían requerir intervención manual para actualizarlos, generalmente por razones de configuración. En tales casos FreedomBox se actualiza a sí mismo y solicita información nueva necesaria para la actualización del paquete. Después de autoactualizarse FreedomBox actúa en nombre del usuario y actualiza los paquetes con la información recabada. Estos paquetes no se deben actualizar manualmente hasta que FreedomBox tenga la posibilidad de actualizarlos. La actualización que se dispara manualmente desde el interfaz web ya es consciente de estos paquetes y no los actualiza. - En situaciones muy extrañas, FreedomBox podría fallar o quedar a expensas de una intervención manual desde el terminal. Para esto, entra a FreedomBox por un terminal, ya sea físico, web (empleando Cockpit) o mediante SSH (ver sección Shell Segura) y ejecuta los siguientes comandos: - -# dpkg --configure -a -# apt update -# apt -f install -# unattended-upgrade --debug -# apt install freedombox -# apt update]]> - Si apt-get update te pide confirmación para algo responde que . Si durante la actualización del paquete freedombox te pregunta acerca de los archivos de configuración responde que instale los archivos de configuración nuevos que vienen con la última versión del paquete. Este proceso solo actualizará los paquetes que no necesitan preguntar (excepto el paquete freedombox). Después, deja que FreedomBox se encargue de la actualización de los demás paquetes. Sé paciente mientras se crean nuevas versiones de FreedomBox para tratar los paquetes que necesitan intervención manual. - Si quieres ir más allá de la recomendación e instalar todos los paquetes en tu FreedomBox y realmente estás muy seguro de poder tratar los cambios de configuración de paquetes por tí mismo, ejecuta el siguiente comando: - -
-
-
- Almacenamiento - Almacenamiento te permite ver los dispositivos de almacenamiento conectados a tu FreedomBox y el uso de su espacio. - FreedomBox puede detectar y montar automáticamente medios extraíbles como unidades flash USB. Se muestran listados bajo la sección Dispositivos extraíbles junto con una opción para expulsarlos. - Si queda espacio libre detrás de la partición de root, se mostrará también la opción para expandirla. Normalmente no se muestra ya que en el primer arranque de la FreedomBox se produce automáticamente una expansión total de la partición de root. - - - - - - - Storage.png - - - -
- Operación de almacenamiento avanzada - Cockpit proporciona muchas funcionalidades de almacenamiento más avanzadas que las de FreedomBox. Ambos, FreedomBox y Cockpit, operan sobre el demonio de almacenamiento Udisks2 y son por ello compatibles entre sí. Entre las funciones proporcionadas por Cockpit se incluyen: - - - Formatear un disco o partición con un nuevo sistema de ficheros. - - - Añadir, eliminar particiones o borrar la tabla de particiones. - - - Crear y desbloquear sistemas de ficheros cifrados. - - - Crear y administrar dispositivos RAID. - - - - - - - - - storage-cockpit.png - - - -
-
-
- Almacén de instantáneas - Las Instantáneas te permiten crear instantáneas del sistema de archivos y devolver al sistema a un estado anterior. - - - Nota: Esta funcionalidad requiere un sistema de archivos Btrfs. Todas las imágenes de disco de FreedomBox estables usan Btrfs. - - - - - - - - - Instantáneas - - - -
-
- Apagado - Power proporciona un modo fácil de reiniciar o apagar tu FreedomBox. Después de seleccionar "Reiniciar" o "Apagar", se te pedirá confirmación. Se puede llegar también a las opciones "Reiniciar" y "Apagar" desde el menú desplegable del usuario en la esquina superior derecha. -
-
- BIND (Servidor de Nombre de Dominio) - BIND te permite publicar en Internet tu información de Sistema de Nombre de Dominio (DNS) y resolver consultas DNS de los dispositivos de usuario en tu red. - Actualmente en FreedomBox BIND solo se usa para resolver consultas DNS de otras máquinas en tu red local. También es incompatible con compartir conexiones a Internet de tu FreedomBox. - Nota: Este servicio solo está disponible en redes configuradas como zona "interna". Tampoco está disponble a través de OpenVPN (es incompatible). -
-
- Cliente de DNS Dinamico -
- ¿Qué es DNS Dinamico? - Para que se pueda llegar a un servidor desde Internet este necesita tener una dirección pública permanente, también conocida como dirección IP estática o fija. Muchos proveedores de servicio de Internet no otorgan IP fija a sus usuarios normales o la cobran. En su lugar les otorgan una IP temporal diferente cada vez que el usuario se conecta a internet. O una que cambia de vez en cuando. Si es tu caso los clientes que quieran contactar con tu servidor tendrán dificultades. - Los proveedores de servicio de DNS Dinamico ayudan a solventar este problema. Primero te dan un nombre de dominio, como 'miservidor.ejemplo.org' y te permiten asociar tu dirección IP temporal a este nombre de dominio cada vez que esta cambia. De este modo quien quiera llegar a tu servidor empleará el nombre de dominio 'miservidor.ejemplo.org' que siempre apuntará a la última dirección IP de tu servidor. - Para que esto funcione cada vez que te conectes a Internet tendrás que decirle a tu proveedor de servicio de DNS Dinamico cual es tu dirección IP provisional actual. Por esto necesitas tener un software especial en tu servidor que haga esto. La funcionalidad DNS Dinamico de tu FreedomBox permite a los usuarios sin dirección IP pública fija mantener su dirección IP pública temporal actualizada en el servicio de DNS Dinamico. Esto te permite exponer servicios de tu FreedomBox, como ownCloud, a Internet. -
-
- GnuDIP vs. Update URL - Eisten 2 mecanismos principales para notificar al the servicio de DNS Dinamico cual es tu dirección IP provisional actual: empleando el protocolo GnuDIP o empleando el mecanismo URL de actualización. - Si un servicio expuesto usando URL de actualización no se securiza apropiadamente mediante HTTPS, tus credenciales podrían quedar expuestas. Una vez que un atacante accede a tus credenciales podrá reproducir tus comunicaciones con el servicio de DNS Dinamico y suplantar tu dominio. - Por otra parte el protocolo GnuDIP solo transportará un valor MD5 salpimentado de tu contraseña de tal forma que es seguro contra ataques de este tipo. -
-
- Emplear el protocolo GnuDIP - - - Registra una cuenta en cualquier proveedor de servicio de DNS Dinamico. Hay un servicio gratuito provisto por la comunidad FreedomBox disponible en . - - - Habilita el Servicio de DNS Dinamico en el interfaz de usuario de FreedomBox. - - - Selecciona GnuDIP como tipo de servicio, introduce la dirección de tu proveedor de servicio de DNS Dinamico (por ejemplo, gnudip.datasystems24.net) en el campo Dirección del servidor GnuDIP. - - - - - - - Dynamic DNS Settings - - - - - - Completa la información que te ha dado tu proveedor en los campos correspondientes Nombre de Dominio, Usuario y Contraseña. - - -
-
- Emplear URL de actualización - Se implementa esta funcionalidad porque los proveedores de servicio de DNS Dinamico más populares están empleando el mecanismo URL de actualización. - - - Registra una cuenta en el proveedor de servicio de DNS Dinamico que emplea el mecanismo Update URL. Se listan algunos proveedores de ejemplo en la propia página de configuración. - - - Habilita el Servicio de DNS Dinamico en el interfaz de usuario de FreedomBox. - - - Selecciona URL de actualización como tipo de servicio, introduce la URL de actualización que te ha dado tu proveedor de servicio de DNS Dinamico en el campo URL de actualización. - - - Si vas a la URL de actualización con tu navegador de Internet y te muestra un aviso acerca de un certificado no confiable, activa aceptar todos los certificados SSL. AVISO: ¡Tus credenciales podrían quedar expuestas en este punto a un ataque MIM (man-in-the-middle)! Valora la posibilidad de elegir otro proveedor de servicio mejor. - - - Si vas a la URL de actualización con tu navegador de Internet y te muestra la caja de usuario/contraseña, selecciona usar autenticación HTTP basica e introduce el usuario y la contraseña. - - - Si la URL de actualización contiene tu dirección IP temporal actual reemplaza la dirección IP por la cadena de texto <Ip>. - - -
-
- Comprobar si funciona - - - Asegúrate de que los servicios externos que has habilitado como /jwchat, /roundcube o /ikiwiki están disponibles en tu dirección de dominio. - - - Ve a la página Estado y asegúrate de que el tipo de NAT se detecta correctamente. Si tu FreedomBox está detrás de un dispositivo NAT debería detectarse en este punto (Texto: Detrás de NAT). Si tu FreedomBox tiene una dirección IP pública asignada el texto debería ser "Conexión directa a Internet". - - - Comprueba que el último estado de actualización no sea fallida. - - -
-
- Recap: How to create a DNS name with GnuDIP - - to delete or to replace the old text - - - - Access to GnuIP login page (answer Yes to all pop ups) - - - Click on "Self Register" - - - Fill the registration form (Username and domain will form the public IP address [username.domain]) - - - Take note of the username/hostname and password that will be used on the FreedomBox app. - - - Save and return to the GnuDIP login page to verify your username, domain and password (enter the datas, click login). - - - Login output should display your new domain name along with your current public IP address (this is a unique address provided by your router for all your local devices). - - - Leave the GnuDIP interface and open the Dynamic DNS Client app page in your FreedomBox. - - - Click on "Set Up" in the top menu. - - - Activate Dynamic DNS - - - Choose GnuDIP service. - - - Add server address (gnudip.datasystems24.net) - - - Add your fresh domain name (username.domain, ie [username].freedombox.rocks) - - - Add your fresh username (the one used in your new IP address) and password - - - Add your GnuDIP password - - - Fill the option with (try this url in your browser, you will figure out immediately) - - -
-
-
- Cockpit (Administración de Servidor) - Cockpit es una aplicación que facilita administrar servidores GNU/Linux desde el navegador web. En una FreedomBox, hay disponibles controles para muchas funciones avanzadas que normalmente no se necesitan. También hay disponible un terminal web para operaciones de consola. - Cualquier usuario del grupo de administradores de to FreedomBox puede acceder a Cockpit. Cockpit solo se puede usar si tienes una configuración de nombre de dominio apropiada para tu FreedomBox y usas ese nombre de dominio para acceder a Cockpit. Para más información mira la sección de Resolución de Problemas. - - Usa cockpit sólo si eres un administrador de sistemas GNU/Linux con habilidades avanzadas. FreedomBox intenta coexistir con los cambios al sistema que efectúan los administradores y sus herramientas, como Cockpit. Sin embargo, los cambios al sistema inadecuados pueden causar fallos en las funciones de FreedomBox. - -
- Usar Cockpit - Instala Cockpit como cualquier otra aplicación de FreedomBox. Y a continuación asegúrate de que Cockpit está habilitado. - - - - - - - cockpit-enable.png - - - - Asegúrate de que la cuenta de usuario de FreedomBox que se empleará con Cockpit es parte del grupo de administradores. - - - - - - - cockpit-admin-user.png - - - - Arranca el interfaz web de Cockpit. Ingresa con la cuenta de usuario configurada. - - - - - - - cockpit-login.png - - - - Empieza a usar cockpit. - - - - - - - cockpit-system.png - - - - Cockpit también funciona con interfaces mobiles. - - - - - - - cockpit-mobile.png - - - -
-
- Funcionalidades - Las siguientes funcionalidades de Cockpit pueden ser útiles para usuarios avanzados de FreedomBox. -
- Cuadro de Mando del Sistema - Cockpit tiene un cuadro de mando del sistema que - - - Muestra información detallada del hardware. - - - Muestra métricas básicas de rendimiento del sistema. - - - Permite cambiar la hora y el huso del sistema. - - - Permite cambiar el hostname. Por favor usa el interfaz de usuario de FreedomBox UI para hacer esto. - - - Muestra las huellas del servidor SSH. - - - - - - - - - cockpit-system.png - - - -
-
- Visualización de los Registros de Ejecución (logs) del Sistema - Cockpit permite consultar los registros de ejecución (logs) del sistema y examinarlos a todo detalle. - - - - - - - cockpit-logs.png - - - -
-
- Administración de Almacenamiento - Cockpit permite las siguientes funciones avanzadas de almacenamiento: - - - Visualización de llenado de discos. - - - Edición de particiones de disco. - - - Administración de RAID. - - - - - - - - - cockpit-storage1.png - - - - - - - - - - cockpit-storage2.png - - - -
-
- Redes - Tanto Cockpit como FreedomBox se apoyan en NetworkManager para configurar la red. No obstante, Cockpit ofrece alguna configuración avanzada no disponible en FreedomBox: - - - Configuración de rutas. - - - Configuración de enlaces, puentes y VLANs. - - - - - - - - - cockpit-network1.png - - - - - - - - - - cockpit-network2.png - - - - - - - - - - cockpit-network3.png - - - -
-
- Servicios - Cockpit permite agendar servicios y tareas periódicas (como cron). - - - - - - - cockpit-services1.png - - - - - - - - - - cockpit-services2.png - - - -
-
- Terminal Web - Cockpit ofrece un terminal web que se puede usar para ejecutar tareas manuales de administración del sistema. - - - - - - - cockpit-terminal.png - - - -
-
-
- Resolución de Problemas - Cockpit require un nombre de dominio adecuadamente configurado en tu FreedomBox y solo funcionará cuando accedas a él mediante una URL con ese nombre de dominio. Cockpit no funcionará con una dirección IP en la URL. Tampoco con freedombox.local como nombre de dominio. Por ejemplo, las URLs siguientes no funcionarán: - - A partir de la versión 19.15 funciona el dominio .local. Puedes acceder a Cockpit mediante la URL . El dominio .local se basa en tu hostname. Si tu hostname es mifb tu nombre de dominio .local será mifb.local y la URL de Cockpit será . - Para acceder apropiadamente a Cockpit, usa el nombre de dominio configurado en tu FreedomBox. Cockpit también funcionará cuando se use un Servicio Tor Onion. Las siguientes URLs funcionarán: - - La razón para este comportamiento es que Cockpit emplea WebSockets para conectar con el servidor de backend. Por seguridad se deben evitar las peticiones a WebSockets con servidores cruzados. Para implementar esto Cockpit maintiene una lista de todos los dominios desde los que se admiten peticiones. FreedomBox configura automaticamente esta lista cuando añades o borras un dominio. Sin embargo, como no podemos fiarnos de las direcciones IP, FreedomBox no las añade a esta lista. Puedes mirar la lista actual de dominios aceptados administrada por FreedomBox en /etc/cockpit/cockpit.conf. Puedes editarla pero hazlo solo si comprendes sus consecuencias para la seguridad web. -
-
-
- Configurar - Configurar tiene algunas opciones generales de configuración: -
- Hostname - - - Hostname es el nombre local por el que otros dispositivos pueden alcanzar tu FreedomBox desde la red local. El hostname por defecto es freedombox. - - -
-
- Nombre de Dominio - - - El Nombre de Dominio es el nombre global por el que otros dispositivos pueden alcanzar tu FreedomBox desde la Internet. El valor que se asigne aquí es el que usarán Chat Server (XMPP), Matrix Synapse, Certificates (Let's Encrypt), y Monkeysphere. - - -
-
- Página Principal (home) del Servidor Web - - - Esta es una opción avanzada que te permite establecer como home algo diferente al servicio FreedomBox para que se sirva a quien acceda con el navegador al nombre de dominio de FreedomBox. Por ejemplo, si el nombre de dominio de tu FreedomBox es y estableces a MediaWiki como home, al visitar te llevará a en vez de a . Puedes asignar la home a cualquier aplicación web, los wikis y blogs de Ikiwiki o la página index.html por defecto de Apache. - - - - Una vez asignada como home otra aplicación, ya solo puedes navegar al servicio FreedomBox tecleando en el navegador . - /freedombox también se puede usar como alias para /plinth - - - - Consejo: Guarda la URL del servicio FreedomBox antes de asignar la home a otra app. - - -
-
-
- Copias de respaldo (backups) - FreedomBox incluye la posibilidad de copiar y restaurar datos, preferencias, configuración y secretos de la mayoría de las aplicaciones. La funcionalidad de Backups se resuelve con el software de backup Borg. Borg es un programa de backup con deduplicación y compresión. Está diseñado para hacer backups eficientes y seguros. Esta funcionalidad de backups se puede emplear para respaldar y recuperar datos aplicación por aplicación. Las copias de respaldado se pueden almacenar en la propia máquina FreedomBox o en un servidor remoto. Cualquier servidor remoto con acceso por SSH se puede emplear como almacenamiento para los backups de la FreedomBox. Las copias remotas se pueden cifrar para que el servidor remoto no pueda leer los datos que alberga. -
- Estados de la Funcionalidad de Backups - - - - - - - - - - App/Funcionalidad - - - - - Soporte en Versión - - - - - Notas - - - - - - Avahi - - - - - - - no precisa backup - - - - - Backups - - - - - - - no precisa backup - - - - - Bind - - - 0.41 - - - - - - Cockpit - - - - - - - no precisa backup - - - - - Coquelicot - - - 0.40 - - - incluye ficheros subidos - - - - - Datetime - - - 0.41 - - - - - - Deluge - - - 0.41 - - - no incluye archivos descargados ni semillas - - - - - Diagnostics - - - - - - - no precisa backup - - - - - Dynamic DNS - - - 0.39 - - - - - - ejabberd - - - 0.39 - - - incluye todos los datos y configuración - - - - - Firewall - - - - - - - no precisa backup - - - - - ikiwiki - - - 0.39 - - - incluye todos los wikis/blogs y sus contenidos - - - - - infinoted - - - 0.39 - - - incluye todos los datos y claves - - - - - JSXC - - - - - - - no precisa backup - - - - - Let's Encrypt - - - 0.42 - - - - - - Matrix Synapse - - - 0.39 - - - incluye media y cargas - - - - - MediaWiki - - - 0.39 - - - incluye páginas de wiki y archivos adjuntos - - - - - Minetest - - - 0.39 - - - - - - MLDonkey - - - 19.0 - - - - - - Monkeysphere - - - 0.42 - - - - - - Mumble - - - 0.40 - - - - - - Names - - - - - - - no precisa backup - - - - - Networks - - - No - - - sin planes para implementar backup, de momento - - - - - OpenVPN - - - 0.48 - - - incluye a todos los usuarios y claves de servidor - - - - - Pagekite - - - 0.40 - - - - - - Power - - - - - - - no precisa backup - - - - - Privoxy - - - - - - - no precisa backup - - - - - Quassel - - - 0.40 - - - incluye usuarios y registros de ejeución (logs) - - - - - Radicale - - - 0.39 - - - incluye calendario y datos de tarjetas de todos los usuarios - - - - - repro - - - 0.39 - - - incluye a todos los usuarios, datos y claves - - - - - Roundcube - - - - - - - no precisa backup - - - - - SearX - - - - - - - no precisa backup - - - - - Secure Shell (SSH) Server - - - 0.41 - - - incluye las claves del servidor - - - - - Security - - - 0.41 - - - - - - Shadowsocks - - - 0.40 - - - solo secretos - - - - - Sharing - - - 0.40 - - - no incluye datos de las carpetas compartidas - - - - - Snapshot - - - 0.41 - - - solo configuración, no incluye datos de capturas (snapshots) - - - - - Storage - - - - - - - no precisa backup - - - - - Syncthing - - - 0.48 - - - no incluye datos de las carpetas compartidas - - - - - Tahoe-LAFS - - - 0.42 - - - incluye todos los datos y configuración - - - - - Tiny Tiny RSS - - - 19.2 - - - incluye base de datos con feeds, historias, etc. - - - - - Tor - - - 0.42 - - - includes configuración y secretos como las claves de servicios Tor Onion - - - - - Transmission - - - 0.40 - - - no incluye archivos descargados ni semillas - - - - - Upgrades - - - 0.42 - - - - - - Users - - - No - - - sin planes para implementar backup, de momento - - - - - -
-
- Cómo instalar y usar Backups - - Paso 1: Ir a la página de Copias de Seguridad - - - - - - - - Backups: Paso 1 - - - - - Paso 2: Pulsar el botón Instalar - - - - - - - - Backups: Paso 2 - - - - - Paso 3: Esperar a que se instalen todos los componentes de la aplicación - - - - - - - - Backups: Paso 3 - - - - - Paso 4: Pulsar el botón de Crear Copia de Seguridad - - - - - - - - Backups: Paso 4 - - - - - Paso 5: Seleccionar las aplicaciones a respaldar y pulsar Enviar - - - - - - - - Backups: Paso 5 - - - - - Paso 6: Pulsar en el botón Descargar - - - - - - - - Backups: Paso 6 - - - -
-
-
- Cortafuegos - Un cortafuegos es un sistema de seguridad de red que controla el tráfico de entrada y salida desde/a la red. Mantener un cortafuegos habilitado y apropiadamente configurado reduce el riesgo de amenazas a la seguridad desde Internet. - La operación del cortafuegos desde el interfaz web de FreedomBox es automática. Cuando habilitas un servicio se le abre automáticamente el cortafuegos y cuando lo deshabilitas se le cierra también automáticamente. Para servicios habilitados por defecto en FreedomBox los puertos se abren en el cortafuegos por defecto durante el proceso de la primera ejecución. - - - - - - - Firewall - - - - La administración del cortafuegos en FreedomBox se hace empleando FirewallD. -
- Interfaces - Cada interfaz de red necesita asignarse a 1 (y sólo 1) zona. Si no se le establece zona, automáticamente se le asigna la zona externa. Las reglas que tenga activas la zona se aplicarán al interfaz. Por ejemplo, si se permite el trafico HTTP en una zona en particular las peticiones web se acceptarán en todas las direcciones configuradas para todos los interfaces asignados a esa zona. - Principalmente se emplean 2 zonas de cortafuegos. La zona interna está pensada para servicios ofrecidos a todas las máquinas de la red local. Esto podría incluir servicios como streaming multimedia o compartición simple de archivos. La zona externa está pensada para servicios públicamente expuestos a Internet. Esto podría incluir servicios como blog, sitio web, cliente web de correo electrónico etc. - Para más detalles acerca de como se configuran por defecto los interfaces de red mira la sección Redes. -
-
- Abrir Puertos Propios - Cockpit proporciona administración avanzada de cortafuegos. Ambos, FreedomBox y Cockpit operan sobre firewalld y son por tanto compatibles entre sí. En particular, Cockpit se puede usar en FreedomBox para abrir servicios o puertos. Esto resulta útil si además de los servicios proporcionados por FreedomBox estás ejecutando manualmente tus propios servicios en la misma máquina. - - - - - - - firewalld-cockpit.png - - - -
-
- Puertos/Servicios de FreedomBox - La siguiente tabla trata de documentar los puertos, servicios y sus estados por defecto en FreedomBox. Si encuentras esta página desactualizada mira la página de estado del cortafuegos en el interfaz web de FreedomBox. - - - - - - - - - - - - - Servicio - - - - - Puerto - - - - - Externo - - - - - Habilitado por defecto - - - - - Estado mostrado en FreedomBox - - - - - Administrado por FreedomBox - - - - - - Minetest - - - 30000/udp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - XMPP Client - - - 5222/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - XMPP Server - - - 5269/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - XMPP Bosh - - - 5280/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - NTP - - - 123/udp - - - - - - - - - {o} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - Interfaz web de FreedomBox - - - 443/tcp - - - - - - - - - {*} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - {X} - - - - - - - - Quassel - - - 4242/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - SIP - - - 5060/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - SIP - - - 5060/udp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - SIP-TLS - - - 5061/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - SIP-TLS - - - 5061/udp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - RTP - - - 1024-65535/udp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - SSH - - - 22/tcp - - - - - - - - - {*} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - {X} - - - - - - - - mDNS - - - 5353/udp - - - - - - - - - {o} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - Tor (Socks) - - - 9050/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - Obfsproxy - - - <random>/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - OpenVPN - - - 1194/udp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - Mumble - - - 64378/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - Mumble - - - 64378/udp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - Privoxy - - - 8118/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - JSXC - - - 80/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - JSXC - - - 443/tcp - - - - - - - - - {*} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - DNS - - - 53/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - DNS - - - 53/udp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - DHCP - - - 67/udp - - - - - - - - - {o} - - - - - - - - - - - - (./) - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - Bootp - - - 67/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - Bootp - - - 67/udp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - Bootp - - - 68/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - Bootp - - - 68/udp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - LDAP - - - 389/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - LDAPS - - - 636/tcp - - - - - - - - - {o} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - - - - - {X} - - - - - - - - -
-
- Operación Manual - Para completar información acerca de los conceptos basicos o más allá, mira la documentación de FirewallD. -
- Habilitar/deshabilitar el cortafuegos - Para deshabilitar el cortafuegos - - o con systemd - - Para vover a habilitar el cortafuegos - - o con systemd - -
-
- Modificar servicios/puertos - Puedes añadir o eliminar un servicio de una zona manualmente. - Para ver la lista de servicios habilitados: - --list-services]]> - Ejemplo: - - Para ver la lista de puertos habilitados: - --list-ports]]> - Ejemplo: - - Para eliminar un servicio de una zona: - --remove-service= -firewall-cmd --permanent --zone= --remove-service=]]> - Ejemplo: - - Para eliminar un puerto de una zona: - / -firewall-cmd --permanent --zone=internal --remove-port=/]]> - Ejemplo: - - Para añadir un servicio a una zona: - --add-service= -firewall-cmd --permanent --zone= --add-service=]]> - Ejemplo: - - Para añadir un puerto a una zona: - / -firewall-cmd --permanent --zone=internal --add-port=/]]> - Ejemplo: - -
-
- Modificar la zona de los interfaces - Puedes cambiar la asignación de zona de cada interfaz de red manualmente tras la asignación automática del proceso de primer arranque. - Para ver la asignación actual de interfaces de red a las zonas. - - Para eliminar un interfaz de una zona: - --remove-interface= -firewall-cmd --permanent --zone= --remove-interface=]]> - Ejemplo: - - Para añadir un interfaz a una zona: - --add-interface= -firewall-cmd --permanent --zone= --add-interface=]]> - Ejemplo: - -
-
-
-
- Detección de Servicios - La Detección de Servicios permite a otros dispositivos de la red detectar a tu FreedomBox y a los servicios que expone. Si un cliente de la red local soporta mDNS, puede encontrar tu FreedomBox en <hostname>.local (por ejemplo: freedombox.local). - También permite a FreedomBox detectar otros dispositivos y servicios que están funcionando en tu red local. - La Detección de Servicios no es esencial y solo funciona en redes internas. Se puede deshabilitar para mejorar la seguridad especialmente cuando la conectas a una red local hostil. -
-
- Diagnósticos - La prueba de diagnóstico del sistema ejecutará varias verificaciones sobre tu sistema para confirmar que las aplicaciones y servicios están funcionando como se espera. - Sólo haz clic Ejecutar Diagnósticos. Esto puede llevar varios minutos. -
-
- Fecha y hora - Este servidor de hora de red es un programa que mantiene el tiempo del sistema sincronizado con servidores de Internet. - Puedes seleccionar el huso horario - - - escogiendo una capital cercana (están ordenadas por Continente/Ciudad) o - - - seleccionando directamente el huso en relación a GMT (Greenwich Mean Time). - - - - - - - - - DateTime_es_v01.png - - - -
-
- Let's Encrypt (Certificados) - Un certificado digital permite a los usuarios de un servicio web verificar la identidad del servicio y comunicar con él de modo seguro. FreedomBox puede obtener y configurar automaticamente certificados digitales para cada dominio disponible. Lo hace probando a Let's Encrypt, una authoridad de certificación (CA) ser el dueño de un dominio. - Let's Encrypt es una autoridad de certificación abierta, automatizada, libre y gratuita administrada para beneficio público por el Internet Security Research Group (ISRG). Por favor, lee y acepta los términos del Acuerdo de Suscripción de Let's Encrypt antes de usar este servicio. -
- Por Qué Usar Certificados - La comunicación con tu FreedomBox se puede asegurar de modo que se imposibilite interceptar los contenidos que tus servicios intercambian con sus usuarios. -
-
- Cómo configurar - - - Si tu FreedomBox está detrás de un router, necesitarás configurar la redirección de puertos en tu router. Debes redirigir los siguientes puertos: - - - TCP 80 (http) - - - TCP 443 (https) - - - - - Publica tu nombre de dominio: - - - En Configurar inserta tu nombre de dominio, p.ej. MiWeb.com Let's Encrypt - - - - - Verifica que se aceptó tu nombre de dominio - - - Comprueba que está habilitado en Servicio de Nombres - - - - - - - Let's Encrypt Name Services - - - - - - - - Ve a la página de los Certificados (Let's Encrypt) y completa la instalación del modulo si hace falta. Entonces haz clic en el botón "Obtain" de tu nombre de dominio. - - - Tras algunos minutos estará disponible un certificado válido - - - - - - - Let's Encrypt - - - - - - - - Verifica en tu navegador comprobando https://MiWeb.com - - - - - - - - - Let's Encrypt Certificate - - - - - - - - Screencast: Let's Encrypt -
-
- Usar - El certificado es válido por 3 meses. Se renueva automáticamente y también se puede volcer a obtener o revocar manualmente. - Ejecutando diagnostics se puede también verificar el certificado. -
-
-
- Monkeysphere - Con Monkeysphere se puede generar una clave OpenPGP para cada dominio configurado para servir SSH. La clave pública OpenPGP se puede subir entonces a los servidores de claves OpenPGP. Los usuarios que se conecten mediante SSH podrán verificar que se están conectando a la máquina correcta. Para que los usuarios puedan confiar en la clave alguien (generalmente el dueño de la máquina) tiene que firmarla siguiendo el proceso normal de firmado de claves OpenPGP. Para más detalles, ver la documentación de Monkeysphere SSH. - Monkeysphere también puede generar una clave OpenPGP para cada certificado de servidor web seguro (HTTPS) instalado en esta máquina. La clave pública OpenPGP se puede subir entonces a los servidores de claves OpenPGP. Los usuarios que se conecten mediante HTTPS podrán verificar que se están conectando a la máquina correcta. Para validar el certificado el usuario deberá instalar cierto software disponible en el sitio web de Monkeysphere. -
-
- PageKite (Visibilidad Publica) -
- ¿Qué es PageKite? - PageKite hace inmediata y públicamente accesibles desde internet a los sitios web y servicios locales sin tener que crear tu mismo una dirección IP pública. Lo hace tunelando protocolos como HTTPS o SSH a través de cortafuegos y NAT. Usar PageKite require ana cuenta en un servicio de repetidor de PageKite. es uno de de estos servicios. - Un servicio de repetidor de PageKite te permitirá crear cometas (kites). Las cometas son similares a los nombres de dominio pero con ventajas y desventajas diferentes. Una cometa puede tener varios servicios configurados. Se sabe que PageKite funciona con HTTP, HTTPS, y SSH, y muchas funcionan con otros servicios, pero no todas. -
-
- Usar PageKite - - - Créate una cuenta en un servicio de repetidor de PageKite. - - - Añade una cometa a tu cuenta. Anota el nombre y el sectreo de tu cometa. - - - En FreedomBox, vé a la solapa "Configurar PageKite" de la página Visibilidad Publica (PageKite). - - - Marca la caja "Habilitar PageKite" e introduce el nombre y el secreto de tu cometa. Haz clic en "Grabar propiedades". - - - En la solapa "Servicios Estándar" puedes habilitar HTTP y HTTPS (recomendado) y SSH (opcional). - - - HTTP se necesita para obtener el certificado Let's Encrypt. Puedes deshabilitarlo (HTTPS) más tarde. - - - - - En la página Certificados (Let's Encrypt) puedes obtener un certificado Let's Encrypt para el nombre de tu cometa. - - -
-
-
- Protección - Cuando se habilita esta opción sólo los usuarios del grupo "admin" podrán entrar a la consola o mediante SSH. Los usuarios de consola podrán acceder a algunos servicios sin más autorización. - La sección Usuarios explica cómo definir grupos de usuarios. - Cuando la opción Acceso a consola restringido está habilitada, sólo los usuarios del grupo admin podrán ingresar via consola, shell segura (SSH) o interfaz gráfico. Al desactivar esta funcionalidad cualquier usuario con cuenta en FreedomBox podrá ingresar y quizá tener acceso a ciertos servicios sin más autorización. Esta opción solo debería desactivarse si se confía plenamente en todos los usuarios del sistema. Si quieres usar tu máquina FreedomBox también como escritorio y admitir que usuarios no-admin ingresen mediante interfáz gráfica esta opción debe estar desactivada. Puedes determinar la lista de usuarios admin en la sección Users. - - - - - - - Security_es_v01.png - - - -
-
- Redes - Esta sección describe como se configura por defecto la red en FreedomBox y como se puede adaptar. Ver también la sección Cortafuegos para más información acerca de cómo funciona éste. -
- Configuración por defecto - En una imágen fresca de FreedomBox la red no está configurada. La configuración se realiza cuando la imágen se graba en una tarjeta SD y el dispositivo arranca. Durante el primer arranque el paquete FreedomBox setup detecta los interfaces (tarjetas) de red e intenta configurarlos automáticamente de modo que la FreedomBox quede disponible para seguir configurandola a través del interfaz web desde otra máquina, sin necesidad de conectar un monitor a la FreedomBox. La configuración automática también procura dejar la FreedomBox operativa para sus escenarios de uso más importantes. - Trata 2 escenarios: - - - cuando hay 1 único interfaz (tarjeta) ethernet - - - cuando hay múltiples interfaces (tarjetas) ethernet - - -
- Interfaz (tarjeta) ethernet único - Cuando el dispositivo hardware solo tiene 1 único interfaz (tarjeta) ethernet hay poco margen para que haga de router. En tal caso se asume que el dispositivo es solo una máquina más en la red. En consecuencia el único interfaz (tarjeta) disponible se configura para ser un interfaz interno en modo de configuración automática. Esto significa que se conecta a Internet empleando la configuración provista por un router de la red y que hace todos sus servicios (internos y externos) accesibles a todos los clientes que haya en esta red. - - - - - - - network_single.png - - - -
-
- Múltiples interfaces (tarjetas) ethernet - Cuando el dispositivo hardware tiene múltiples interfaces (tarjetas) ethernet el dispositivo puede actuar como router. Entonces los interfaces se configuran para ejecutar esta función. - - - El primer interfaz (tarjeta) de red se configura para ser una WAN o interfaz externo en modo de configuración automático. Esto significa que se conecta a Internet empleando la configuración provista por el proveedor de servicio de internet (ISP). En este interfaz solo se expondrán los servicios concebidos para consumo desde Internet (servicios externos). Tu conexión a Internet tiene que llegar por el puerto de este interfaz (tarjeta) ethernet. Si quieres que tu router de siempre siga administrando tu conexión por tí conecta un cable desde tu router al puerto de este interfaz. - - - Los demás interfaces de red se configuran como clientes de router, como LAN o interfaces internos en modo de configuración compartido. Esto significa que todos sus servicios (internos y externos) se exponen a todos los clientes que entren desde esta red. Compartido implica además que los clientes podrán recibir detalles para conexión automática a la red. En concreto, la configuración DHCP y los servidores DNS se exponen en este interfaz. La conexión a Internet disponible para el dispositivo a través del primer interfaz se compartirá con los clientes que usen este interfaz. Todo esto implica que puedes conectar tus ordenadores a esta interfaz (tarjeta) de red y se configurarán automáticamente pudiendo acceder a Internet a través de tu FreedomBox. - - - Aunque el proceso de asignación es determinista actualmente no está muy claro qué interfaz será WAN (los demás serán LAN). Así que averiguar cual es cual conllevará un poco de prueba y error. En el futuro esto estará bien documentado para cada dispositivo. -
-
- Configuración de la Wi-Fi - Todos los interfaces Wi-Fi se configuran para ser LAN o interfaces internos en modo de configuración compartido. También se configuran para ser puntos de acceso Wi-Fi con los siguientes datos: - - - El nombre de cada punto de acceso será FreedomBox más el nombre del interfaz (para tratar el caso de que haya varios). - - - La contraseña para conectar a los interfaces será freedombox123. - - -
-
-
- Compartición de la Conexión a Internet - Aunque la principal obligación de FreedomBox es proporcionar servicios descentralizados también puede ejercer como router casero. Por tanto en la mayoría de los casos FreedomBox se conecta a Internet y proporciona a otras máquinas de la red la posibilidad de usar esa conexión a Internet. FreedomBox puede hacer esto de 2 formas: usando un modo de conexión compartido o empleando una conexión interna. - Cuando se configura un interfaz en modo compartido puedes conectarle tu máquina directamente, sea por cable desde este interfaz a tu máquina o conectando a través del punto de acceso Wi-Fi. Este caso es el más facil de usar porque FreedomBox automáticamente proporciona a tu máquina la configuración de red necesaria. Tu máquina conectará automáticamente a la red proporcionada por FreedomBox y podrá conectar a Internet ya que FreedomBox puede a su vez conectarse a Internet. - En ocasiones la configuración anterior podría no ser posible porque el dispositivo hardware tenga un único interfaz de red o por otros motivos. Incluso en este caso tu máquina puede todavía conectarse a Internet a través de la FreedomBox. Para que esto funcione asegúrate de que el interfaz de red al que se está conectando tu máquina esté en modo interno. Entonces conecta tu máquina a la red en la que está la FreedomBox. Después de esto configura la red de tu máquina indicando como puerta de enlace la dirección IP de la FreedomBox. FreedomBox aceptará entonces el tráfico de red de tu maquina y lo enviará a Internet. Esto funciona porque los interfaces de red en modo interno están configurados para enmascarar hacia Internet los paquetes que lleguen desde máquinas locales, así como para recibir paquetes desde Internet y reenviarlos hacia las máquinas locales. -
-
- Adaptaciones - La configuración por defecto anterior podría no servir para tu caso. Puedes adecuar la configuración para ajustarla a tus necesidades desde el área Redes de la sección Configuración del interfaz web de tu FreedomBox. -
- Conexiones PPPoE - Si tu ISP no proporciona configuración de red automática via DHCP y te obliga a conectar por PPPoE, para configurarlo elimina toda conexión de red existente en el interfaz y añade una de tipo PPPoE. Aquí, si procede, indica el usuario y la contraseña que te ha dado tu ISP y activa la conexión. -
-
- Conectar a Internet mediante Wi-Fi - Por defecto durante el primer arranque los dispositivos Wi-Fi se configurarán como puntos de acceso. Sin embargo se pueden reconfigurar como dispositivos Wi-Fi normales para conectar a la red local o a un router WiFi existente. Para hacer esto haz clic en la conexión Wi-Fi para editarla. Cambia el modo a Infraestructura en vez de Punto de Acceso y Método de direccionamiento IPv4 a Automático (DHCP) en vez de Modo compartido. SSID proporcionado significa el nombre de la red Wi-Fi a la que quieres conectar. Rellena la frase clave. -
- Problemas con la Funcionalidad de Privacidad - El gestor de red que emplea FreedomBox para conectar con las redes Wi-Fi tienen una funcionalidad de privacidad que usa una identidad para buscar redes diferente de la que emplea para conectar con el punto de acceso Wi-Fi. Desafortunadamente esto causa problemas con algunos routers que rechazan estas conexiones. Tu conexión no se activará con éxito y se desconectará. Si tienes control sobre el comportamiento del router puedes desactivar esta funcionalidad. Si no la solución es desactivar la funcionalidad de privacidad: - Entra a la FreedomBox por SSH o Cockpit. - Edita el fichero /etc/NetworkManager/NetworkManager.conf: - - Añade la linea wifi.scan-rand-mac-address=no en la sección [device]: - - Luego reinicia la FreedomBox. -
-
-
- Añadir un nuevo dispositivo de red - Al añadir un nuevo dispositivo de red network manager lo configurará automáticamente. En la mayoría de los casos esto no funcionará. Borra la configuración creada automáticamente en el interfaz y crea una conexión de red nueva. Selecciona tu interfaz recién creado en la página "añadir conexión". - - - Configura la zona del cortafuegos como corresponda. - - - Puedes configurar los interfaces para conectar a la red o proporcionar configuración de red a cualquier máquina que se le conecte. - - - De modo similar, si es un interfaz Wi-Fi puedes configurarlo para ser un punto de acceso Wi-FI o para conectarse a puntos de acceso existentes en la red. - - -
-
- Configurar una red Mesh - FreedomBox tiene un soporte rudimentario para participar en redes mesh basadas en BATMAN-Adv. Es posible unirse a una red existe en tu zona o crear una red mesh nueva y compartir tu conexión a Internet con el resto de nodos que se unan a tu red. Tanto para unirte a una red mesh como para crear otra, actualmente hay que crear 2 conexiones y activarlas manualmente. -
- Unirse a una red Mesh - Para unirse a una red mesh existente en tu zona primero consulta a sus organizadores y obtén información acerca de la red. - - - Crea una conexión nueva y selecciona el tipo de conexión Wi-Fi. En el siguiente diálogo rellena los valores como se indica: - - - - - - - - - - Nombre del campo - - - - - Valor de ejemplo - - - - - Explicación - - - - - - - Nombre de la Conexión - - - - Mesh Join - BATMAN - - - El nombre tiene que acabar en BATMAN (con mayúsculas). - - - - - - Interfaz físico - - - - wlan0 - - - El dispositivo Wi-Fi que quieres usar para conectar a la red mesh. - - - - - - Zona del cortafuegos - - - - Externa - - - Ya que no quieres que los participantes en la red mesh usen dispositivos internos de tu FreedomBox. - - - - - - SSID - - - - ch1.freifunk.net - - - Tal como te lo hayan dado los operadores de la red mesh. Esta red debería mostrarse en Redes Wi-Fi accesibles. - - - - - - Modo - - - - Ad-hoc - - - Porque esta red es una red de pares (peer-to-peer). - - - - - - Banda de Frecuencia - - - - 2.4Ghz - - - Tal como te lo hayan dado los operadores de la red mesh. - - - - - - Canal - - - - 1 - - - Tal como te lo hayan dado los operadores de la red mesh. - - - - - - BSSID - - - - 12:CA:FF:EE:BA:BE - - - Tal como te lo hayan dado los operadores de la red mesh. - - - - - - Autenticación - - - - Abierta - - - Déjala abierta salvo que sepas que tu red mesh necesite otro valor. - - - - - - Contraseña - - - - - Déjala en blanco salvo que sepas el valor que necesite tu red mesh. - - - - - - Método de direccionamiento IPv4 - - - - Deshabilitado - - - Todavía no queremos pedir una configuración IP. - - - - - - Graba la conexión y únete a la red mesh activándola. - - - Crea una segunda conexión nueva y selecciona el tipo Genérica. En el siguiente diálogo rellena los valores como se indica: - - - - - - - - - - Nombre del campo - - - - - Valor de ejemplo - - - - - Explicación - - - - - - - Nombre de la Conexión - - - - Mesh Connect - - - Cualquier nombre para identificar ésta conexión. - - - - - - Interfaz físico - - - - bat0 - - - Este interfaz solo aparecerá tras activar con éxito la conexión del paso anterior. - - - - - - Zona del cortafuegos - - - - Externa - - - Ya que no quieres que los participantes en la red mesh usen dispositivos internos de tu FreedomBox. - - - - - - Método de direccionamiento IPv4 - - - - Auto - - - Generalmente las redes mesh tienen un servidor DHCP en algún sitio que le proporciona una configuración IP a tu máquina. Si no, consulta al operador y configura la dirección IP como te diga por el método manual. - - - - - - Graba la conexión. Configura tu maquina para participar en la red activando esta conexión. Actualmente hay que activarla manualmente cada vez que quieras unirte a la red. En el futuro FreedomBox lo hará automáticamente. - - - Ahora debieras poder llegar a otros nodos de la red. También podrás conectar a Internet a través de la red mesh si los operadores han instalado algúna puerta de enlace. -
-
- Crear una red Mesh - Para crear tu propia red mesh y compartir tu conexión a Internet con el resto de los nodos de la red: - - - Sigue las instrucciones del paso 1 de Unirse a una red Mesh empleando los valores válidos para tu red en SSID (un nombre para tu red Mesh), Banda de Frecuencia (generalmente 2.4Ghz), Canal (entre 1 y 11 para la banda de 2.4Ghz) y BSSID (una secuencia hexadecimal como 12:CA:DE:AD:BE:EF). Crea esta conexión y actívala. - - - Sigue las instrucciones del paso 2 de Unirse a una red Mesh seleccionando Compartido para Método de direccionamiento IPv4d. Esto proporcionará automáticamente una configuración IP a otros nodos de la red y compartirá la conexión a Internet de tu maquina (ya sea mediante un segudo interfaz Wi-Fi, Ethernet, etc.) con el otros nodos de la red mesh. - - - Corre la voz entre tus vecinos acerca de tu red mesh y pásales los parámetros que has empleado al crearla. Cuando otros nodos se conecten a esta red mesh tendrán que seguir las instrucciones del paso 1 de Unirse a una red Mesh empleando en SSID, Banda de Frecuencia y Canal los valores que has elegido para tu red mesh al crearla. -
-
-
-
- Operación avanzada de Red - Cockpit proporciona muchas funcionalidades de red más avanzadas que las de FreedomBox. Ambos, FreedomBox y Cockpit, operan sobre Network Manager y son por ello compatibles entre sí. Entre las funciones de Cockpit se incluyen: - - - Establer de la unidad máxima de transmisión (MTU) para una conexión de red. - - - Cambiar de la dirección hardware (MAC) de un interfaz de red. - - - Añadir más servidores DNS y configurar el enrutado de una conexión de red. - - - Crear dispositivos coordinados para interfaces de red de alta disponibilidad. - - - Crear dispositivos en puente para agregar redes diferentes en un mismo interfaz de red. - - - Administrar VLAN para crear particiones virtuales en la red física. - - - - - - - - - networks-cockpit.png - - - -
-
- Operación manual de Red - FreedomBox configura redes automáticamente por defecto y proporciona un interfaz simplificado para personalizar la configuración a necesidades específicas. En la mayoría de los casos la operación manual no es necesaria. Los siguientes pasos describen cómo operar la configuración de red a mano en caso de que el interfaz de FreedomBox le resulte insuficiente a un usuario para realizar una tarea o para diagnosticar un problema que FreedomBox no identifique. - En el interfaz de línea de comandos: - Para acceder a un interfaz de configuración de conexiones de red basado en texto: - - Para ver la lista de dispositivos de red disponibles: - - Para ver la lista de conexiones configuradas: - - Para ver el estado actual de una conexión: - ']]> - Para ver la zona asignada actualmente en el cortafuegos a un interfaz de red: - ' | grep zone]]> - o - - Para crear una conexión nueva: - " ifname "" type ethernet -nmcli con modify "" connection.autoconnect TRUE -nmcli con modify "" connection.zone internal]]> - Para cambiarle la zona a una conexión en el cortafuegos: - " connection.zone ""]]> - Para más información acerca del uso del comando nmcli mira su página man. Para obtener una lista completa de configuraciones y tipos de conexión que acepta Network Manager mira: - - - - Para ver el estado actual del cortafuegos y operarlo manualmente lee la sección Cortafuegos. -
-
-
- Servicios de Nombre - Los Servicios de Nombre proporcionan una vista general a las formas de acceder desde la Internet pública a tu !Freedombox: nombre de dominio, servicio Tor Onion y cometa (Pagekite). Para cada tipo de nombre se indica si los servicios HTTP, HTTPS, y SSH están habilitados o deshabilitados para conexiones entrantes. -
-
- Shell Segura -
- ¿Qué es Shell Segura? - FreedomBox ejecuta el servidor openssh-server por defecto permitiendo así accesos remotos desde todos los interfaces. Si tu dispositivo hardware está conectado a un monitor y un teclado, también puedes ingresar directamente. Para la operación habitual de FreedomBox no necesitas usar la shell. No obstante, algunas tareas o identificación de algún problema podrían requerirlo. -
-
- Configurando una Cuenta de Usuario -
- Primer ingreso a FreedomBox: Cuenta de Admin - Al crear una cuenta en FreedomBox por primera vez, el usuario tendrá automaticamente privilegios de administrador. Los usuarios Admin pueden ingresar mediante ssh (abajo se explica cómo) y escalar sus privilegios a superusuario mediante sudo. -
-
- Cuenta de Usuario por Defecto - - - Nota: Si puedes acceder al interfaz web de FreedomBox es que no necesitas hacer esto. Puedes usar la cuenta de usuario del interfaz web de FreedomBox para conectar por SSH. - - - Las imagenes precompiladas FreedomBox tienen una cuenta de usuario llamada fbx pero no tiene contraseña establecida, así que no se puede ingresar con esta cuenta. - Hay un script incluído en el programa freedom-maker que permite establecer la contraseña de esta cuenta si fuera necesario: - - - Descomprime la imagen. - - - Obtén una copia de freedom-maker en . - - - Ejecuta sudo ./bin/passwd-in-image <archivo_de_imagen> fbx. - - - Copia el archivo de la imagen a la tarjeta SD e inicia el dispositivo. - - - El usuario "fbx" también tiene privilegios de superusuario mediante sudo. -
-
-
- Ingresando -
- Local - Para ingresar mediante SSH a tu FreedomBox: - - Reemplaza fbx por el usuario con el que quieres ingresar. Hay que reemplazar freedombox por el hostname o dirección IP de tu dispositivo FreedomBox como se indica en el proceso de Inicio rápido. - fbx es el usuario de FreedomBox con privilegios de superusuario por defecto. Cualquier otro usuario creado con FreedomBox que pertenezca al grupo admin podrá ingresar. La cuenta root no tiene contraseña configurada y no podrá ingresar. A todos los demás usuarios se les denegará el acceso. - fbx y los otros usuarios del grupo admin podrán ingresar directamente por el terminal. A todos los demás usuarios se les denegará el acceso. - Si fallas repetidamente intentando ingresar se te bloqueará el acceso por algún tiempo. Esto se debe al paquete libpam-abl que FreedomBox instala por defecto. Para controlar este comportamiento consulta la documentación de libpam-abl. -
-
- SSH via Tor - Si tienes habilitados en FreedomBox los servicios Tor Onion puedes acceder a tu FreedomBox mediante ssh sobre Tor. Instala netcat-openbsd. - - Edita ~/.ssh/config para habilitar conexiones sobre Tor. - - Añade lo siguiente: - - Reemplaza USUARIO por un usuario del grupo admin (ver arriba). - En algunos casos podrías necesitar reemplazar 9050 por 9150. - Ahora, para conectar a la FreedomBox abre un terminal y teclea: - - Reemplaza USUARIO por un usuario del grupo admin y DIRECCION por la dirección del servicio Tor Onion para SSH de tu FreedomBox. -
-
-
- Escalar a Superusuario - Si después de ingresar quieres volverte superusuario para realizar actividades administrativas: - - Habitúate a ingresar como root solo cuando sea estrictamente necesario. Si no ingresas como root no puedes romperlo todo accidentalmente. - - - -
-
- Cambiar Contraseñas - Para cambiar la contraseña de un usuario administrado en el interfaz web de FreedomBox usa la página Cambiar clave de acceso. El usuario por debecto fbx no se administra en el interfaz web de FreedomBox y su contraseña no se puede cambiar desde él. - Para cambiar la contraseña en el terminal ingresa a tu FreedomBox con el usuario cuya contraseña quieres cambiar y ejecuta el siguiente comando: - - Esto te preguntará tu contraseña actual antes de darte la oportunidad de establecer la nueva. -
-
-
- Usuarios y Grupos - Puedes otorgar acceso a tu FreedomBox a otros usuarios. Proporciona el nombre del usuario y su contraseña y asignale un grupo. Actualmente se soportan los grupos - - - admin - - - wiki - - - El usuario podrá ingresar a los servicios que soporten ingreso único (single-sign-on) mediante LDAP si figuran en el grupo apropriado. - Los usuarios del grupo admin podrán ingresar en todos los servicios. También pueden ingresar al sistema por SSH y escalar a privilegios administrativos (sudo). - Estas características se pueden cambiar más tarde. - Asimismo es posible establecer una clave pública SSH que permitirá al usuario ingresar al sistema de modo seguro sin emplear su contraseña. Pueder dar de alta varias claves, una en cada línea. Las líneas en blanco o que comiencen por # se ignoran. - Se pueden desactivar temporalmente las cuentas de usuarios. -
- Reparos Conocidos - - - Actualmente Plinth not distingue entre usuarios y administradores. Todo usuario añadido mediante Plinth tendrá accesso completo al interfaz de Plinth. - - -
-
-
-
- Hardware - FreedomBox está diseñado para ser el software de un dispositivo electrónico de consumo que sea fácil de configurar, mantener y usar. El proyecto no pretende crear un dispositivo hardware propio, sino asociarse con fabricantes de hardware para construir dispositivos FreedomBox y también soportar hardware existente. - Además de soportar varios SBC's (single board computers) y otros dispositivos, FreedomBox también contempla ser instalado en una máquina virtual. Y cualquier máquina Debian se puede convertir en FreedomBox instalando el paquete freedombox. Para más detalles acerca de la instalación sobre Debian, ver el manual. -
- Hardware Recomendado - El 22 de Abril de 2019, la FreedomBox Foundation anunció que los kits Pioneer Edition FreedomBox Home Server salían a la venta. Este es el hardware preinstalado recomendado para todos los usuarios que no quieran construirse su propia (máquina) FreedomBox eligiendo los componentes adecuados, descargando la imagen y preparando una tarjeta SD con (el software) FreedomBox. - 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. - - - - - - - - - - - - - - Kits de Servidor Casero FreedomBox Pioneer Edition - - - - - - Kits de Servidor Casero FreedomBox Pioneer Edition - - - - - - -
-
- Hardware Soportado - Usa este hardware si quieres y eres capaz de descargar imágenes FreedomBox y preparar una tarjeta SD siguiendo el manual. Si quieres un proceso más simple de configuración compra por favor los kits FreedomBox con el hardware recomendado. Si usas una placa con tarjetas SD te recomendamos que al grabar la imagen de FreedomBox en tu tarjeta, ésta tenga al menos una capacidad de 8GB. - - - - - - - - - - - - - - - - A20 OLinuXino Lime2 - - - - - - A20 OLinuXino Lime2 - - - - - - - - - - - A20 OLinuXino MICRO - - - - - - A20 OLinuXino MICRO - - - - - - - - - - - PC Engines APU - - - - - - PC Engines APU - - - - - - - - - - - - - Cubietruck - - - - - - Cubietruck - - - - - - - - - - - Cubieboard 2 - - - - - - Cubieboard2 - - - - - - - - - - - BeagleBone Black - - - - - - BeagleBone Black - - - - - - - - - - - - - pcDuino3 - - - - - - pcDuino3 - - - - - - - - - - - Debian - - - - - - Debian - - - - - - - - - - - VirtualBox - - - - - - VirtualBox - - - - - - - - - - - - - Pine A64+ - - - - - - Pine A64+ - - - - - - - - - - - Banana Pro - - - - - - Banana Pro - - - - - - - - - - - Orange Pi Zero - - - - - - Orange Pi Zero - - - - - - -
- Comparativa de Hardware - - - - - - - - - - - - - - - - Nombre - - - - - Velocidad CPU (GHz) - - - - - Arquitectura - - - - - RAM (GB) - - - - - disco (GB) - - - - - batería - - - - - SATA - - - - - Velocidad Ethernet - - - - - - OSHW - - - - - - - APU.1D - - - 1x2 - - - amd64 - - - 2 - - - - - - - - - - - - - - - - - (./) - - - - - - 1000x3 - - - - - - - - - {X} - - - - - - - - APU.1D4 - - - 1x2 - - - amd64 - - - 4 - - - - - - - - - - - - - - - - - (./) - - - - - - 1000x3 - - - - - - - - - {X} - - - - - - - - BeagleBone Black C - - - 1 - - - armhf/omap - - - ½ - - - 4 - - - - - - - - - - - 100 - - - - - - - - - (./) - - - - - - - - Cubieboard2 - - - 1x2 - - - armhf/sunxi - - - 1 - - - 4 - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 100 - - - - - - - - - {X} - - - - - - - - Cubieboard2-Dual - - - 1x2 - - - armhf/sunxi - - - 1 - - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 100 - - - - - - - - - {X} - - - - - - - - Cubieboard3/Cubietruck - - - 1x2 - - - armhf/sunxi - - - 2 - - - 8 - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 1000 - - - - - - - - - {X} - - - - - - - - OLinuXino A20 LIME - - - 1x2 - - - armhf/sunxi - - - ½ - - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 100 - - - - - - - - - (./) - - - - - - - - OLinuXino A20 LIME2 - - - 1x2 - - - armhf/sunxi - - - 1 - - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 1000 - - - - - - - - - (./) - - - - - - - - OLinuXino A20 MICRO - - - 1x2 - - - armhf/sunxi - - - 1 - - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 100 - - - - - - - - - (./) - - - - - - - - pcDunino3 - - - 1x2 - - - armhf/sunxi - - - 1 - - - 4 - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - 100 - - - - - - - - - {X} - - - - - - - - Pine A64+ - - - 1.2x4 - - - arm64/sunxi - - - ½,1,2 - - - - - - - - - - - - - - - 1000 - - - - - - - - - {X} - - - - - - - - Banana Pro - - - 1.2x2 - - - armhf/sunxi - - - 1 - - - - - - - - - - - - - - - - - (./) - - - - - - 1000 - - - - - - - - - {X} - - - - - - - - Orange Pi Zero - - - ?x4 - - - armhf/sunxi - - - ¼,½ - - - - - - - - - - - - - - - 100 - - - - - - - - - {X} - - - - - - - - -
-
-
- Más Hardware Operativo - Freedombox funciona en este hardware. Pero no se recomienda porque (el hardware) no funciona empleando únicamante software libre: - - - - - - - - - - - - - - - - Raspberry Pi 2 - - - - - - Raspberry Pi 2 - - - - - - - - - - - Raspberry Pi 3 Model B - - - - - - Raspberry Pi 3 Model B - - - - - - - - - - - Raspberry Pi 3 Model B+ - - - - - - Raspberry Pi 3 Model B+ - - - - - - -
-
- Hardware Obsoleto - Este hardware estuvo soportado anteriormente pero ya no. Si descargaste una imagen anterior y ejecutas FreedomBox sobre algún hardware de estos, seguirás obteniendo actualizaciones de software. Sin embargo, no se publicarán imagenes nuevas. Se recomienda que migres a hardware nuevo y soportado generando una copia de seguridad y restaurándola. - - - - - - - - - - - - - - - DreamPlug - - - - - - DreamPlug - - - - - - - - - - - Raspberry Pi - - - - - - Raspberry Pi - - - - - - - Note: Como FreedomBox está actualmente en desarrollo, hardware soportado significa que las imágenes de FreedomBox se construyen para este hardware y al menos un desarrollador ha informado que las funciones básicas funcionan. -
-
- Añadir Soporte a más Hardware - Aunque el proyecto se enfoque en soportar determinados dispositivos queremos soportar la mayor cantidad de hardware posible, mientras se adecúe a las necesidades de FreedomBox. Echa un vistazo a la lista de objetivos hardware para más información. - Si eres desarrollador, considera la posibilidad de añadir soporte a hardware para tu dispositivo modificando Freedom Maker. Si tienes acceso a algún dispositivo de hardware objeto y quisieras trabajar con nosotros para hacer que funcione con FreedomBox ¡contactanos, por favor! -
-
- FreedomBox Pioneer Edition - Los servidores caseros FreedomBox Pioneer Edition los fabrica y vende Olimex, una compañía epecializada en hardware de fuentes abiertas. El Kit incluye hardware de servidor tamaño bolsillo, una tarjeta SD con el sistema operativo preinstalado, y una batería de respaldo que puede alimentar el hardware durante 4-5 horas en casos de indisponibilidad de la red eléctrica. Se vende por 82 €. Olimex ofrece una extensión opcional para almacenamiento de alta capacidad en disco duro o de estado sólido. Al comprar este producto contribuyes a los esfuerzos de la FreedomBox Foundation's para crear y promover su software de servidor libre. - - - - - - - Pioneer Edition FreedomBox Home Server Kit - - - -
-
- Características del Producto -
- HW Recomendado - Éste es el hardware recomendado para los usuarios que quieran simplemente una FreedomBox llave en mano, y no quieran construirse una. - (Construir tu propia FreedomBox implica algunos tecnicismos como elegir y comprar los componentes adecuados, descargar la imágen y preparar una tarjeta SD). -
-
- Este Kit - Este producto proporciona la combinación perfecta de hardware de fuentes abiertas y software libre y open source. Comprando este producto, soportas también los edfuerzos de la FreedomBox Foundation para crear y promover su software libre y open source de servidor. - El Kit de Servidor Casero FreedomBox Pioneer Edition incluye todo el hardware necesario para arrancar un servidor FreedomBox casero sobre una placa Olimex A20-OLinuXino-LIME2: - - - la A20-OlinuXino-LIME2, - - - su carcasa de metal con el logo de FreedomBox grabado mediante laser, - - - una tarjeta micro SD de alta velocidad y 32GB con el software FreedomBox preinstalado, - - - una batería de respaldo, - - - un transformador, - - - un cable Ethernet, y - - - una extensión para almacenamiento de alta capacidad en disco duro o de estado sólido. - - -
-
- Disponibilidad - El servidor casero FreedomBox Pioneer Edition es la primera versión comercial disponible de FreedomBox. - - - Precio: 82 EUR - - - - Tienda Olimex - - - -
-
- Especificaciones del Hardware - El servidor casero FreedomBox Pioneer Edition se basa en la A20-OLinuXino-LIME2 Rev.G - - - Hardware de fuentes abiertas (OSHW): - - - CPU: Allwinner A20, ARM Cortex-A7 dual-core a 1GHz - - - RAM: 1 GiB DDR3 - - - Almacenamiento: tarjeta microSD de 32GB de clase 10+ precargada con FreedomBox - - - SATA: 1 puerto SATA compatible 2.6 a 3Gb/s - - - USB: 2 puertos host de alta velocidad USB 2.0 - - - Batería: Li-Po, 3.3V y 1400mAh (4-5 horas de respaldo si no hay dispositivos adicionales conectados al puerto USB) - - - Ethernet: 10/100/1000, RJ45 (cable de 1 m incluído) - - - Transformador: Entrada a 110-220V, salida a 5V, estilo UE (enchufes opcionales para el Reino Unido o EE.UU) - - - Consumo eléctrico: 1.5W o 5W dependiendo de la carga (corriente entre 0.3A 1 1A) - - - Carcasa: Metálica con la marca FreedomBox - - - Los kits ejecutan sólo Software Libre. Funcionan con núcleo (kernel) y u-boot de los repositorios Debian. Incluso el firmware de arranque de la ROM, llamado BROM es software libre (GPLV2+). - Más información: - - - - Guía de inicio rápido. - - - - - Ficheros fuente del hardware - - - - - Esquéma de la A20-OLinuXino-LIME2 rev.G - - - - - Especificaciones técnicas del SoC A20 - - - -
-
- Extensión para Almacenamiento - Junto con tu servidor casero FreedomBox Pioneer Edition puedes encargar una extensión para almacenamiento consistente en una carcasa para disco SATA, opcionalmente con un disco duro o de estado sólido de entre 128 y 2000 GB de capacidad. Si ya has comprado tu servidor casero sin la extensión puedes encargarla aparte. - - - - Tienda Olimex - - - - Precio: 9 EUR (carcasa suelta sin disco duro, para albergar un disco tuyo) - - - Precio: 42 EUR (con disco de estado sólido de 128 GB) - - - Precio: 69 EUR (con disco de estado sólido de 512 GB) - - - Precio: 42 EUR (con disco duro de 320 GB) - - - Precio: 53 EUR (con disco duro de 500 GB) - - - Precio: 64 EUR (con disco duro de 1000 GB) - - - Precio: 86 EUR (con disco duro de 2000 GB) - - -
-
- Descarga - Los kits vienen con una tarjeta SD precargada con FreedomBox. NO hace ninguna falta descargar imágenes. - No obstante, si deseas restablecer tus dispositivos a un estado virginal puedes hacerlo con la imágen provista. Sigue las instrucciones de la página de descargas para crear una tarjeta SD de FreedomBox y arrancar tu dispositivo. Asegúrate de descargar imágenes para la Pioneer Edition. Estas imágenes de tarjeta SD se usan en la ranura SD de la propia placa y no funcionarán si se insertan en un lector SD externo conectado por USB. - Una alternativa a descargar estas imágenes es instalar Debian en el dispositivo y luego instalar FreedomBox sobre él. -
-
- Construcción de una Imágen - Las imágenes de FreedomBox para este hardware se pueden construir usando Freedom Maker. -
-
- Reparos conocidos - - - La imágen distribuída con los kits usa un u-boot ligéramente modificado en vez de el de serie de Debian como el resto de FreedomBox. Así que si quieres obtener su código fuente usa por favor el repositorio de u-boot del equipo de FreedomBox. - - -
-
-
- Obtener el Código Fuente - FreedomBox es 100% software libre y puedes obtener el código fuente para estudiarlo, modificarlo y distribuir mejoras. -
- Desde (dentro de) FreedomBox - FreedomBox se compone de diferentes programas de software y puedes obtener el código fuente de cualquiera de ellos. Estas instrucciones son similares a obtener y construír código fuente de Debian ya que FreedomBox es una variante pura de Debian. Usando este procedimiento puedes obtener el código fuente de la misma versión del paquete que estás usando actualmene en FreedomBox. - - - Para ver la lista de paquetes software instalados en tu FreedomBox, ejecuta lo siguiente en un terminal: - - - - Para obtener el código fuente de cualquiera de esos programas ejecuta: - ]]> - Esto requiere que el archivo /etc/apt/sources.list contenga información acerca de los repositorios de código fuente. Esto es así por defecto en todas las imágenes FreedomBox. Pero si has instalado FreedomBox desde Debian necesitas asegurarte de que los repositorios de código fuente figuren en este archivo. - - - Para construir el paquete desde su código fuente, primero instala sus dependencias - ]]> - Cambia al directorio fuente creado con el comando apt source: - ]]> - Y construye el paquete - - - - Instala el paquete: - .deb]]> - - -
-
- Otras Maneras de Obtener el Código Fuente - - - El código fuente de cualquier paquete se puede ver y buscar usando el interfaz web de sources.debian.org. Por ejemplo, mira el paquete plinth. - - - El código fuente y el binario precompilado de cualquier version de un paquete, incluyendo versiones antigüas, se pueden obtener de snapshot.debian.org. Por ejemplo, mira el paquete plinth. - - - También puedes obtener los enlaces a la web del proyecto original, al control de versiones del proyecto original, al control de versiones de Debian, registro de cambios, etc. desde la página de control Debian para el proyecto en tracker.debian.org. Por ejemplo, mira la página de control para el paquete plinth. - - - Puedes compilar e instalar un paquete desde el control de versiones de Debian. Por ejemplo, - - - -
-
- Construyendo Imágenes de disco - También puedes construír imágenes de disco FreedomBox para varias platformas de hardware usando la herramienta freedom-maker. Esta también está disponible como paquete Debian y su código fuente se puede obtener empleando los métodos anteriores. Hay disponibles Instrucciones de Construcción para generar imágenes de disco incluídas en el código fuente del paquete freedom-maker. - Las imágenes de disco de FreedomBox se construyen y suben a los servidores oficiales empleando la infraestructura de integración contínua automatizada. Esta infraestructura está disponible también como código fuente y proporciona información precisa acerca de como se contruyen las imágenes de FreedomBox. -
- Imágenes U-boot sobre Pioneer Edition - Hay una excepción menor en el paquete u-boot que viene con el hardware que se vende como Kits de Servidor Casero FreedomBox Pioneer Edition. Contiene un parche pequeño pero importante que no está en el código fuente de Debian. Tanto el repositorio fuente de Debian u-boot como el parche de FreedomBox están disponibles como un repositorio aparte. Esperamos que en algún momento este parche esté integrado en u-boot de serie y este repositorio ya no sea necesario. Este paquete se puede compilar en una máquina Debian armhf como sigue (también se puede hacer compilación cruzada, simplemente sigue las instrucciones para compilación cruzada de paquetes Debian): - - El paquete u-boot Debian estará en u-boot-sunxi*.deb. Este paquete contendrá - -dd if=temp/usr/lib/u-boot/A20-OLinuXino-Lime2/u-boot-sunxi-with-spl.bin of= seek=8 bs=1k conv=notrunc]]> - La imagen resultante tendrá el u-boot modificado. -
-
-
-
- Cubietruck -
- FreedomBox Danube Edition - - - - - - - FreedomBox Danube Edition - - - - FreedomBox Danube Edition is a custom casing around Cubietruck and an SSD-hard drive. -
-
- Cubietruck / Cubieboard3 - Cubietruck (Cubieboard3) is a single board computer with very good performance compared to many other boards. FreedomBox images are built for this device. To use this board as FreedomBox, a separate USB WiFi device that does not require non-free firmware is recommended. - Recommendation: 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. -
-
- Download - FreedomBox SD card images are provided for this hardware. These SD card images are meant for use with the on-board SD card slot and do not work when used with a separate SD card reader connected via USB. - An alternative to downloading these images is to install Debian on the Cubietruck and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - Cubietruck / Cubieboard3 - - - Price: 89 USD - - - - List of suppliers - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core - - - RAM: 2 GiB DDR3 @ 480 MHz - - - Storage: 8 GB NAND flash built-in, 1x microSD slot - - - Architecture: armhf - - - Ethernet: 10/100/1000, RJ45 - - - WiFi: Broadcom BCM4329/BCM40181 (no free WiFi drivers + firmware available) - - - SATA: 1x 2.0 port - - -
-
- Non-Free Status - - - Non-free blobs required: ? - - - WiFi: no free WiFi drivers + firmware available - - - Works with stock Debian kernel: yes - - -
-
- Known Issues - - - The on-board WiFi does not work with free software. A separate USB WiFi device is recommended. - - -
-
-
- Beagle Bone Black - - - - - - - Beagle Bone Black - - - - Beagle Bone Black (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 USB WiFi device that does not require non-free firmware is recommended. - Recommendation: 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. -
- Download - FreedomBox SD card images are available for this device. Follow the instructions on the download page to create a FreedomBox SD card and boot the device. - Note: This image is for BeagleBone Black (Revision C.1) only. It will not work on the BeagleBone Green, and also not on the Revisions A&B. If you have such a device and would like to help getting FreedomBox to run on it, contact us! - An alternative to downloading these images is to install Debian on the BeagleBone and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - - - Price: ~ 59 USD (50 EUR) - - - - Mouser Electronics - - - - - Full list of suppliers - - - -
-
- Hardware - - - Open Source Hardware (OSHW): Yes - - - CPU: AM335x 1GHz ARM Cortex-A8 - - - RAM: 512MB DDR3L 800 Mhz - - - Storage: Onboard 4GB, 8bit Embedded MMC and microSD - - - Architecture: armhf - - - Ethernet: 10/100, RJ45 - - - WiFi: None, use a USB WiFi device - - - SATA: None - - -
-
- Non-Free Status - - - Non-free blobs required: No - - - WiFi: Not available - - - Works with stock Debian kernel: Yes - - -
-
- Known Issues - None -
-
-
- A20 OLinuXino Lime2 - - - - - - - A20 OLinuXino Lime2 - - - - Olimex's A20 OLinuXino Lime2 is a fully 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. It uses the Allwinner A20 Dual Core ARM processor. FreedomBox images are built and tested for this device starting with version 0.7. To use this device as a FreedomBox, a separate USB WiFi device that does not require non-free firmware is recommended. - Recommendation: 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. -
- Similar Hardware - The following similar hardware will also work well with FreedomBox. - - - Olimex's A20 OLinuXino Lime2 4GB. This hardware merely has extra 4GB NAND storage that is not used by FreedomBox. - - -
-
- Download - FreedomBox SD card images are available for this device. Follow the instructions on the download page to create a FreedomBox SD card and boot the device. These SD card images are meant for use with the on-board SD card slot and won't work when used with a separate SD card reader connected via USB. - An alternative to downloading these images is to install Debian on the device and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - - - Price: 45 EUR (A20 OLinuXino Lime2) - - - Price: 55 EUR (A20 OLinuXino Lime2 4GB) - - - - Olimex Store - - - -
-
- Hardware - - - Open Source Hardware (OSHW): Yes - - - CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core - - - RAM: 1 GiB DDR3 - - - Storage: 4 GB NAND flash built-in (only on 4GB model), 1x microSD slot - - - Architecture: armhf - - - Ethernet: 10/100/1000, RJ45 - - - WiFi: None, use a USB WiFi device - - - SATA: 1x port - - -
-
- Non-Free Status - - - Non-free blobs required: No - - - WiFi: Not available - - - Works with stock Debian kernel: Yes - - - Boot Firmware: BROM (GPLV2+) - - -
-
- Known Issues - - - Revision C hardware has poor performance when receiving Ethernet data in Gigabit mode. To workaround the problem, you can switch to 100 Mbps mode instead of Gigabit mode. Login to your FreedomBox as root (or plugin the SD card into another computer) and create the file /etc/NetworkManager/dispatcher.d/20-fix-ethernet-problem with the following contents: - - - - Revision G2 hardware has poor performance when transmitting Ethernet data in Gigabit mode. Download and use the Pioneer Edition image to fix the issue. It contains a slightly modified u-boot. The above workaround to put the Ethernet into 100 Mbps mode also fixes this issue. - - - Revision K hardware is not working properly. - - -
-
-
- A20 OLinuXino MICRO - - - - - - - A20 OLinuXino MICRO - - - - Olimex's A20 OLinuXino MICRO is a fully 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. It uses the Allwinner A20 Dual Core ARM processor. FreedomBox images are built and tested for this device starting with version 0.7. To use this device as a FreedomBox, a separate USB WiFi device that does not require non-free firmware is recommended. - Recommendation: 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. -
- Similar Hardware - The following similar hardware will also work well with FreedomBox. - - - Olimex's A20 OLinuXino MICRO 4GB. This hardware merely has extra 4GB NAND storage that is not used by FreedomBox. - - -
-
- Download - FreedomBox MicroSD card images are available for this device. Follow the instructions on the download page to create a FreedomBox MicroSD card and boot the device. These MicroSD card images are meant for use with the on-board MicroSD card slot and won't work on the SD card slot or when using a separate MicroSD card reader connected via USB. - An alternative to downloading these images is to install Debian on the device and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - - - Price: 50 EUR (A20 OLinuXino MICRO) - - - Price: 63 EUR (A20 OLinuXino MICRO 4GB) - - - - Olimex Store - - - -
-
- Hardware - - - Open Source Hardware (OSHW): Yes - - - CPU: Allwinner A20, ARM Cortex-A7 @ 1GHz dual-core - - - RAM: 1 GiB DDR3 - - - Storage: 4 GB NAND flash built-in (only on 4GB model), 1x microSD slot - - - Architecture: armhf - - - Ethernet: 10/100, RJ45 - - - WiFi: None, use a USB WiFi device - - - SATA: 1x port - - -
-
- Non-Free Status - - - Non-free blobs required: No - - - WiFi: Not available - - - Works with stock Debian kernel: Yes - - - Boot Firmware: BROM (GPLV2+) - - -
-
- Known Issues - - - Not visible on local network - - - When booting the 'stable' image (made on 2017-06-18) the board does not automatically get an IP address from the router's DHCP server over ethernet. Booting the 'testing' image (2018-06) the board does get an IP address. Tested on MICRO hardware revision J. see also: - - -
-
-
- APU - - - - - - - PC Engines APU 1D - - - - PC Engines APU 1D is a single board computer with 3 Gigabit ethernet ports, a powerful AMD APU and Coreboot firmware. FreedomBox images built for AMD64 machines are tested to work well for it. For using this board as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended. - Recommendation: 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. -
- Similar Hardware - Although untested, the following similar hardware is also likely to work well with FreedomBox. - - - Using amd64 image: - - - - apu1c - - - - - apu1c4 - - - - - apu1d4 - - - - - apu2b2 - - - - - apu2b4 - - - - - apu2c0 - - - - - apu2c2 - - - - - apu2c4 - - - - - apu3a2 - - - - - apu3a4 - - - - - apu3b2 - - - - - apu3b4 - - - - - - Using i386 image: - - - - alix1d - - - - - alix1e - - - - - alix2d2 - - - - - alix2d3 - - - - - alix2d13 - - - - - alix3d2 - - - - - alix3d3 - - - - - alix6f2 - - - - - -
-
- Download - FreedomBox disk images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card, USB disk, SSD or hard drive and boot into FreedomBox. Pick the image meant for all amd64 machines. - An alternative to downloading these images is to install Debian on the APU and then install FreedomBox on it. -
-
- Networking - The first network port, the left most one in the above picture, is configured by FreedomBox to be an upstream Internet link and the remaining 2 ports are configured for local computers to connect to. -
-
- Build Image - FreedomBox images for this hardware, which is for all amd64 machines, can be built using Freedom Maker. -
-
- Availability - - - Price: 110 - 170 USD (depending on the board and supplier) - - - - PC Engines - - - - - Full list of suppliers - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: AMD G series T40E - - - RAM: 2 GB DDR3-1066 DRAM - - - Storage: SD card, External USB - - - Architecture: amd64 - - - Ethernet: 3 Gigabit Ethernet ports - - - WiFi: None, use a USB WiFi device - - - SATA: 1 m-SATA and 1 SATA - - -
-
- Non-Free Status - - - Non-free blobs required: No - - - WiFi: Not available - - - Works with stock Debian kernel: Yes - - - Boot firmware: Coreboot - - -
-
- Known Issues - None -
-
-
- pcDuino3 - - - - - - - LinkSprite pcDuino3S - - - - LinkSprite pcDuino3S 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 USB WiFi device that does not require non-free firmware is recommended. - Note: The FreedomBox logo is simply a sticker on top of device brought from store. - Recommendation: 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. -
- Similar Hardware - Although untested, the following similar hardware is also likely to work well with FreedomBox. - - - also covers pcDuino3B - - -
-
- Download - FreedomBox disk images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card, USB disk, SSD or hard drive and boot into FreedomBox. Pick the image meant for pcduino3. - An alternative to downloading these images is to install Debian on the APU and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - - - Price: 89 USD - - - - LinkSprite - - - - - Full list of suppliers - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: AllWinner A20 SoC, 1GHz ARM Cortex A7 Dual Core - - - RAM: 1 GB - - - Storage: SD card, 4 GB onboard flash - - - Architecture: armhf - - - Ethernet: 10/100 Mbps - - - WiFi: Built-in WiFi requires non-free firmware, use a USB WiFi device instead - - - SATA: 1 SATA host socket - - -
-
- Non-Free Status - - - Non-free blobs required: No - - - WiFi: Requires non-free firmware - - - Works with stock Debian kernel: Yes - - - Boot Firmware: BROM (GPLV2+) - - -
-
- Known Issues - None -
-
-
- Pine A64+ - - - - - - - Pine 64+ - - - - Pine A64+ is an affordable single board computer with good performance. - Recommendation: Pine A64+ series of boards do not have built-in storage. If installing to a microSD card, it is recommended to choose a microSD card of class 10 or better with at least 8 GB of storage. -
- Similar Hardware - - - Both 1GB and 2GB versions of Pine A64+ are supported with the same FreedomBox image. - - - Pine A64-LTS is not supported yet. - - -
-
- Download - FreedomBox SD card images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. Pick the image meant for Pine A64+. - An alternative to downloading these images is to install Debian on the device and then install FreedomBox on it. -
-
- Build Image - FreedomBox images for this hardware can be built using freedom-maker. -
-
- Availability - - - Price: 29 USD (for the 2 GB variant), 21 USD (for the 1 GB variant) - - - - Pine A64+ with 1 GB RAM at Pine64 Store - - - - - Pine A64+ with 2 GB RAM at Pine64 Store - - - -
-
- Hardware - - - Open Source Hardware (OSHW): No - - - CPU: Allwinner A64, Quad-core ARM Cortex A53 64-bit processor - - - RAM: 3 variants - 512 MB (not recommended), 1 GB and 2 GB (recommended) - - - Storage: SD card, eMMC (module sold separately but not tested with FreedomBox) - - - Architecture: arm64 - - - Ethernet: Gigabit Ethernet port - - - Battery: Supports battery backup using a Li-Po battery - - - WiFi: None, use a USB WiFi device - - - SATA: None - - -
-
- Non-Free Status - - - Non-free blobs required: No - - - WiFi: Not available - - - Works with stock Debian kernel: Yes - - -
-
- Known Issues - None -
-
-
- VirtualBox - - - - - - - VirtualBox - - - - This page will help you get started with using FreedomBox on a virtual machine using VirtualBox. While VirtualBox images are primarily used for testing and development, they can also be used for regular use if you have spare resources on one of your machines. This setup is useful if: - - - You don't own one of the supported hardware devices. - - - You don't use Debian GNU/Linux as your operating system. - - - You don't want to disturb your Debian installation to try out FreedomBox. - - - Prebuilt FreedomBox images for VirtualBox are routinely made available in VirtualBox's own VDI image file format. They contain a Debian GNU/Linux operating system and an installation of FreedomBox with all dependencies ready to run on any OS supported by VirtualBox (Windows, Linux, Macintosh, and Solaris). - A more adventurous alternative to downloading one of these images is to install Debian on VirtualBox and then install FreedomBox on it. - VirtualBox itself is available from (or your distribution's package manager). -
- Download - Follow the instructions on the download page to download and verify a VirtualBox image. The latest images are available on freedombox.org. -
-
- Creating a Virtual Machine - - - Decompress the downloaded VDI image (tool for Windows, Mac). - - - Create a new VM in the VirtualBox UI with OS type Linux and Version Debian (32/64-bit according to the downloaded image). - - - - - - - - - VirtualBox Name and OS dialog - - - - - - In the Hard disk dialog choose Use an existing virtual hard disk file and select the .vdi file you extracted in step 1. - - - - - - - - - VirtualBox Hard disk dialog - - - - - - When created, go to the virtual machine's Settings -> [Network] -> [Adapter 1]->[Attached to:] and choose the network type your want the machine to use according to the explanation in Network Configuration below. The recommended type is the Bridged adapter option, but be aware that this exposes the FreedomBox's services to your entire local network. - - - - - - - - - VirtualBox recommended network setting - - - - Note: It is important to make sure that you have provided the correct network interface in the above step. For example, if the virtual machine is running on a laptop connected to a Wi-Fi network, then the wireless interface (starts with wlp) must be chosen as shown in the screenshot. -
-
- First Boot - When satisfied with the VM settings click the start button in the VirtualBox UI and your new FreedomBox will boot. - The console of the VM will show the textual screen below when finished booting, from here most interaction with FreedomBox will be through the web interface in a browser. - - - - - - - FreedomBox console after booting successfully - - - - If everything went well so far, you should be able to access the web interface of FreedomBox by pointing a browser on the host machine to . - In case freedombox.local cannot be resolved, you need to find out your FreedomBox's IP address as described in Finding out the IP address of the virtual machine. Then access this IP from a web browser which is on the same network as the VM (for example, the host). If all is well, you are now presented with a welcome message and invited to complete the first boot process. - - - - - - - FreedomBox welcomes you to the first boot - - - - This mainly consist of creating an administrative user for the system. -
-
- Using - See the FreedomBox usage page for more details. - You can log in to the Debian GNU/Linux system as the user created during FreedomBox first boot on the VirtualBox console or remotely via ssh. - After logging in, you can become root with the command sudo su. -
-
- Build Image - If you wish to build your own images instead of downloading available images, it can be done using Freedom Maker. -
-
- Tips & Troubleshooting -
- Network Configuration - VirtualBox provides many types of networking options. Each has its advantages and disadvantages. For more information about how various networking types work in VirtualBox, see VirtualBox's networking documentation. - For a simple setup, it is recommended that you use a single network interface in your guest machine. This will make the first boot script automatically configure that interface as an internal network with automatic network configuration. Inside the guest machine, the networking is configured automatically and all the services are made available on this network interface. For more information on how networks are configured by default in FreedomBox, see Networks section. - What remains is to make those services available to the host machine or to other machines in the network. You must then choose one of the following types of networking for the network interface on your guest machine. To set a particular type of network for the guest's network adapter, go to the guest VM's settings then the network options and then select the adapter you wish to configure. There, set the network type from the available list of networks. - - - First and the recommended option is to use the Bridged type of network. This option exposes the guest machine to the same network that host network is connected to. The guest obtains network configuration information from a router or DHCP server on the network. The guest will appear as just another machine in the network. A major advantage of this of setup is that the host and all other machines in the network will be able to access the services provided by guest without requiring any further setup. The only drawback of this approach is that if the host is not connected to any network, the guest's network will remain unconfigured making it inaccessible even from the host. - - - Second method is Host only type of networking. With a guest's network interface configured in this manner, it will only be accessible from the host machine. The guest will not able access any other machine but the host, so you do not have internet access on the guest. All services on the guest are available to the host machine without any configuration such as port forwarding. - - - The third option is to use the NAT type of network. This the networking type that VirtualBox assigns to a freshly created virtual machine. This option works even when host is not connected to any network. The guest is automatically configured and is able to access the internet and local networks that host is able to connect to. However, the services provided by the guest require port forwarding configuration setup to be available outside. - To configure this go to VM settings -> [Network] -> [Adapter] -> [Port Forwarding]. Map a port such as 2222 from host to guest port 22 and you will be able to ssh into FreedomBox from host machine as follows: - - Map 4443 on host to 443 on the guest. This make FreedomBox HTTPS service available on host using the URL You will need to add a mapping for each such services from host to guest. - - - The final option is to create two network interfaces, one host only and one NAT type. This way you can access the guest without any additional configuration, and you have internet access on the guest. The guest will be invisible to any other machines on the network. - - - Summary of various network types: - - - - - - - - - - - - - - - - - Guest accessible from other machines - - - - - Guest accessible from host - - - - - Works without port forwarding - - - - - Works without host connected to network - - - - - Guest has internet access - - - - - - - Bridged - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - Host only - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - {X} - - - - - - - - - NAT - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - NAT and Host - - - - - - - - - - {X} - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - - (./) - - - - - - - - - - - -
-
- Finding out the IP address of the virtual machine - This depends on the network configuration you chose. With a bridged adapter, your virtual machine gets its IP address from the DHCP server of your network, most likely of your Router. You can try the first couple of IP addresses or check your router web interface for a list of connected devices. - If you chose host-only adapter, the IP address is assigned by the DHCP server of your VirtualBox network. In the VirtualBox Manager, go to File -> Preferences -> Network -> Host-only Networks. You can see and edit the DHCP address range there, typically you get assigned addresses close to the Lower Address Bound. - Another possibility of finding the IP address is to login via the VirtualBox Manager (or similar software). The FreedomBox images do not have any default user accounts, so you need to set an initial user and password using the passwd-in-image script. - See also QuickStart for instructions on how to scan your network to discover the IP of the VM. -
-
- Networking Problems with macchanger - The package macchanger can cause network problems with VirtualBox. If you have a valid IP address on your guest's host network adapter (like 192.168.56.101) but are not able to ping or access the host (like 192.168.56.1), try uninstalling macchanger: - - You might have to manually remove the script /etc/network/if-prep-up/macchanger. If Debian complains about unmet dependencies when you use a package manager (apt-get, aptitude, dpkg), try to remove 'macchanger' from the dependencies of 'freedombox-setup' in the file /var/lib/dpkg/status. -
-
- Mounting Images Locally - If you want to mount images locally, use the following to copy built images off the VirtualBox: - -
-
- Fixing the time after suspend and resume - The virtual machine loses the correct time/date after suspending and resuming. One way to fix this is to create a cron-job that restarts the time service ntp. You can add a crontab entry as root to restart ntp every 15 minutes by typing 'crontab -e' and adding this line: - - Do not restart this service too often as this increases the load of publicly and freely available NTP servers. -
-
- UUID collision in VB - Whenever this happens VirtualBox shows following error message: Cannot register the hard disk A with UUID ... because a hard disk B with UUID ... already exists in the media registry - Creating several VMs from the same image causes collisions due to ID's (hostname, IP, UUID, etc) that are expected to be universally unique. Most can be handeled operating the running VM. But VirtualBox complains before that (at the very creation of the VM) about the hard disk's UUID. This is usual stuff when you develop/test e.g. FreedomBox. - You can change a clone's UUID in the terminal as follows: - -
-
-
-
- Debian - FreedomBox is a pure blend of Debian. This means that all the work on FreedomBox is available in Debian as packages. It also means that any machine running Debian can be turned into a FreedomBox. - This page describes the process of installing FreedomBox on a Debian system. Currently, FreedomBox works in Debian Stable (Buster), Testing (Bullseye), and Unstable (Sid). - - - Use a fresh Debian installation - - Installing FreedomBox changes your Debian system in many important ways. This includes installing a firewall and regenerating server certificates. It is hence recommended that you install FreedomBox on a fresh Debian installation instead of an existing setup. - - - - Console/GUI logins for non-admin users will be disabled - - After FreedomBox is fully setup, your system will no longer allow users not belonging to the admin group to log in to the system via console, secure shell (SSH) or graphical login. This behaviour can be disabled from the Security page. Use the administrator account created during FreedomBox first boot for console logins and add further user accounts to admin group, if necessary. - -
- Installing on Debian 10.0 (Buster) or newer - Check the Troubleshooting section below, for any tips or workarounds that might help during the install. - - - Install Debian 10.0 (Buster), or Unstable (Sid) on your hardware. - - - Update your package list. - - - - Install freedombox package. - - - - The "DEBIAN_FRONTEND=noninteractive" will avoid several configuration prompts that would otherwise appear during the install. - - - - - During the installation, you will be provided a secret key that needs to be entered during the initial configuration process. Note this down. The secret can also be read at a later time from the file /var/lib/plinth/firstboot-wizard-secret. - - - You can start using FreedomBox. During initial wizard, you will need to enter the secret noted above. - - -
-
- Installing on Debian 9 (Stretch) - Check the Troubleshooting section below, for any tips or workarounds that might help during the install. - - - Install Debian 9 (Stretch) on your hardware. - - - Update your package list. - - - - Install freedombox-setup package. - - - - The "DEBIAN_FRONTEND=noninteractive" will avoid several configuration prompts that would otherwise appear during the install. - - - - - Run FreedomBox setup program. This installs further packages and sets up basic configuration. - - You may have to clear your existing network configuration. See Troubleshooting note #2 below. - - - Reboot the system. This is necessary to trigger the first-run script. - - - - After the system boots up, wait for it to reboot again. The first-run scripts sets up a few things and initiates a reboot. - - - After the second reboot you can start using FreedomBox. - - -
-
- Tips and Troubleshooting - - - There is a bug in policykit-1 package that causes errors and hangs during installation of freedombox-setup package. This bug is only applicable to Debian 9 (Stretch) and older. A workaround is to first install policykit-1 package and then reboot. After that, follow the above setup procedure. - - - - FreedomBox uses NetworkManager to manage network configuration. If you have configured your network interfaces using Debian installer or by editing /etc/network/interfaces, FreedomBox will not manage those interfaces. (See bug #797614.) To let FreedomBox/NetworkManager manage your network interfaces, edit the /etc/network/interfaces manually and ensure that it contains only the following: - - If you have already completed the setup process without doing this step, you will need to clear out the /etc/network/interfaces file keeping only the above lines. Then perform a reboot. On Debian 9 (Stretch), after this network connections configured by the setup step above will configure your network. Network interfaces will then be in the internal or external firewall zone. This is essential for the FreedomBox's web interface to be reachable from other machines in the network. You can tweak network manager connections with the nmtui command if you wish. - - - FreedomBox will use an automatically configured IP address by default. You can assign a static IP address if necessary. Network configuration changes can be done using FreedomBox web interface or by using the nmtui or nmcli commands. nmcli can be used as follows: - - - - ..with the block capitals and somedomain.com replaced with your actual address, mask description, gateway and dns server details. - - -
-
-
- DreamPlug - - - - - - - DreamPlug - - - - - - Deprecated Hardware - - This hardware was supported earlier but is no longer supported. If you downloaded an earlier image and are running FreedomBox on this hardware, you will keep getting software updates. You can stay secure and up-to-date. However, no new images will be provided for this hardware. It is recommended that you migrate to newer, supported hardware using backup and restore. - - DreamPlug is the hardware for which FreedomBox has been originally targeted. FreedomBox images are built and tested for it. For using this device as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended. - You can find more support and discussion for DreamPlug on the official forum. - Recommendation: 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. -
- Download - FreedomBox SD card images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. See also instructions for using an internal micro-SD with DreamPlug. - An alternative to downloading these images is to install Debian on DreamPlug and then install FreedomBox on it. -
-
- Networking - The network port towards the middle of the box, is configured by FreedomBox to be an upstream Internet link. The remaining port is configured for a local computer to connect to. -
-
- Firmware - Note that the factory firmware configurations may vary between revisions of the hardware, and render some images incompatible. See the DreamPlug firmware page for information on what images are compatible and how to update your DreamPlug firmware. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Testing - Instructions on how to test this hardware are available. -
-
- Availability - - - Price: 159 USD - - - - DreamPlug manufacturer - - - - Reseller Spinifex in Australia - - -
-
- Hardware - - - Open Hardware: No - - - CPU: Marvell Kirkwood 88F6281 @ 1.2GHz - - - RAM: 512MB 16bit DDR2-800 MHz - - - Storage: 4 GB on board micro-SD - - - Architecture: armel - - - Ethernet: 2x 10/100/1000, RJ45 - - - WiFi: SD8787, 802.11 b/g/n - - - SATA: eSATA 2.0 port - - -
-
- Non-Free Status - - - Non-free blobs required: built-in WiFi - - - WiFi: no free WiFi drivers + firmware available - - - Works with stock Debian kernel: yes - - -
-
- Known Issues - - - WiFi does not work with free software. A separate USB WiFi device is recommended. - - -
-
-
- Raspberry Pi Model B+ - - - - - - - Raspberry Pi (Model B+) - - - - - - Deprecated Hardware - - This hardware was supported earlier but is no longer supported. If you downloaded an earlier image and are running FreedomBox on this hardware, you will keep getting software updates. You can stay secure and up-to-date. However, no new images will be provided for this hardware. It is recommended that you migrate to newer, supported hardware using backup and restore. - - Raspberry Pi (Model B+) is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. FreedomBox images are built and tested for it. For using this board as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended. - Note: The Debian architecture used for this device is armel. This means floating point computations are done in software and most operations are slower than what Raspberry Pi is capable of. - Recommendation: 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. -
- Download - FreedomBox SD card images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - - - Price: 35 USD - - - - List of official distributors - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: ARM1176JZF-S (ARMv6k) 700 MHz - - - RAM: 512 MB - - - Storage: MicroSD card slot - - - Architecture: armel - - - Ethernet: 10/100, RJ45 - - - WiFi: None, use a USB WiFi device - - - SATA: None - - -
-
- Non-Free Status - - - Non-free blobs required: boot firmware - - - WiFi: Not available - - - Works with stock Debian kernel: No - - -
-
- Known Issues - - - The Debian architecture used for this device is armel. This means floating point computations are done in software and generally most operations are slower than what Raspberry Pi is capable of. - - -
-
-
- Raspberry Pi 2 Model B - - - - - - - Raspberry Pi 2 - - - - Raspberry Pi 2 (Model B ) is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi Model B+ with much faster processor and more RAM. FreedomBox images are built and tested for it. For using this board as FreedomBox, a USB WiFi device that does not require non-free firmware is recommended. - Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the Quick Start page to access and control your FreedomBox from network. - Recommendation: 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. -
- Download - FreedomBox SD card images for this hardware are available. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. -
-
- Availability - - - Price: 35 USD - - - - List of official distributors - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: 900 MHz quad-core ARM Cortex-A7 - - - RAM: 1 GB - - - Storage: MicroSD card slot - - - Architecture: armhf - - - Ethernet: 10/100, RJ45 - - - WiFi: None, use a USB WiFi device - - - SATA: None - - -
-
- Non-Free Status - - - Non-free blobs required: boot firmware - - - WiFi: Not available - - - Works with stock Debian kernel: Yes - - -
-
-
- Raspberry Pi 3 Model B - - - - - - - Raspberry Pi 3 Model B - - - - Raspberry Pi 3 Model B is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi 2 Model B with a 64-bit processor and on-board Wi-Fi. A FreedomBox "testing" image is available for Raspberry Pi 3 Model B. For using this board as FreedomBox, a USB WiFi device, that does not require non-free firmware, is recommended instead of the on-board Wi-Fi. - Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the Quick Start page to access and control your FreedomBox from network. - Recommendation: 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. -
- Download - FreedomBox SD card images for this hardware are available. Download the "testing" image for Raspberry Pi 3 Model B. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. Use the target 'raspberry3' with distribution 'testing' to build the image for this board. -
-
- Availability - - - Price: 35 USD - - - - List of official distributors - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: 1.2GHz 64-bit quad-core ARMv8 CPU - - - RAM: 1 GB - - - Storage: MicroSD card slot - - - Architecture: armhf - - - Ethernet: 10/100, RJ45 - - - WiFi: 802.11n but requires non-free firmware, instead use a USB WiFi device - - - SATA: None - - -
-
- Non-Free Status - - - Non-free blobs required: boot firmware - - - WiFi: Requires non-free firmware - - - Works with stock Debian kernel: Yes - - -
-
-
- Raspberry Pi 3 Model B+ - - - - - - - Raspberry Pi 3 Model B+ - - - - Raspberry Pi 3 Model B+ is a popular single board computer developed with the intention of promoting teaching of basic computer science in schools. It is a successor to Raspberry Pi 3 Model B with better Ethernet and a 5Ghz Wi-Fi. A FreedomBox "testing" image is available for Raspberry Pi 3 Model B+. For using this board as FreedomBox, a USB WiFi device, that does not require non-free firmware, is recommended instead of the on-board Wi-Fi. - Please do not expect any output on a monitor connected via HDMI to this device as it does not display anything beyond the message 'Starting kernel...'. See the Quick Start page to access and control your FreedomBox from network. - Recommendation: 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. -
- Download - FreedomBox SD card images for this hardware are available. Download the "testing" image for Raspberry Pi 3 Model B+. Follow the instructions on the download page to create a FreedomBox SD card and boot into FreedomBox. -
-
- Build Image - FreedomBox images for this hardware can be built using Freedom Maker. Use the target 'raspberry3-b-plus' with distribution 'testing' to build the image for this board. -
-
- Availability - - - Price: 35 USD - - - - List of official distributors - - - -
-
- Hardware - - - Open Hardware: No - - - CPU: 1.4GHz 64-bit quad-core ARMv8 CPU - - - RAM: 1 GB - - - Storage: MicroSD card slot - - - Architecture: armhf - - - Ethernet: 10/100/1000, RJ45 - - - WiFi: 802.11ac but requires non-free firmware, instead use a USB WiFi device - - - SATA: None - - -
-
- Non-Free Status - - - Non-free blobs required: boot firmware - - - WiFi: Requires non-free firmware - - - Works with stock Debian kernel: Yes - - -
-
-
- USB Wi-Fi - FreedomBox works on many single board computers. However, many of these boards do not have built-in Wi-Fi capabilities. Even when Wi-Fi capability is available, non-free proprietary firmware is required to make them work. - A solution to the problem is to plug-in a USB Wi-Fi device into one of the available USB ports. There are many such devices available which do not require non-free firmware to work. The following is a list of such devices that work with FreedomBox devices. Some devices based on these chips have tested to work well with FreedomBox including functions such as access point mode. - - - - Devices with Atheros AR7010 chip - - - - - Devices with Atheros AR9271 chip - - - -
- Firmware Installation - The free firmware for these devices is not packaged in Debian yet. You can manually download and install the firmware as follows: - -
-
- Resources - - - - Debian Wiki on WiFi drivers - - - - - Wikipedia: Comparison of open-source Linux wireless network drivers - - - - - WikiDevi: database of computer hardware - - - -
-
-
- Release Notes - The following are the release notes for each FreedomBox version. -
- FreedomBox 20.12 (2020-06-29) -
- Highlights - - - apt: Recover from errors before installing apps or updating system - - - apache: Add strict content security policy, sandbox and other security headers - - - storage: Allow ejecting SATA disks - - - configuration: Allow changes using .d drop-in files - - -
-
- Other Changes - - - configuration: Move default configuration into source code - - - configuration: Read from multiple locations in /etc/ and /usr/share/ - - - debian: Add ssl-cert and nscd as proper dependencies - - - frontpage: Allow adding shotcuts using .d drop-in files - - - frontpage: Read shortcuts from multiple locations in /etc/, /usr/share and /var/lib - - - locale: Update translations for Czech, Danish, French, German, Russian, Spanish, Swedish, Telugu, Turkish - - - storage: Automount system disks without partition table but ignore all loopback devices - - - storage: Allow ejecting SATA disks - - - storage: Show only physical disks and not all mount points - - - upgrades: Skip enabling backports on testing and unstable - - - upgrades: Show more logs - - - ui: Show a spinner and disable button on form submit - - -
-
-
- FreedomBox 20.11 (2020-06-15) -
- Top Highlight - - - locale: Add new translation for Arabic (Saudi Arabia) - - -
-
- Other Changes - - - javascript: Remove use of Turbolinks library - - - locale: Update translations for French, Norwegian Bokmål, German, Swedish, Polish, and Spanish - - - matrixsynapse: Handle upgrade to versions 1.15.x - - - upgrades: Avoid manual update interruption when upgrading freedombox package - - - upgrades: Don't enable backports on Debian derivatives - - -
-
-
- FreedomBox 20.10 (2020-06-01) -
- Top Highlights - - - pagekite: Fix expired certificates causing connection failures - - - tor: Fix problems with running a relay - - -
-
- Other Changes - - - backups: Add optional field - Name - - - cockpit: Promote for advanced storage/firewalld/networking ops - - - firewall: Don't show tun interface in internal zone warning - - - firewall: Mention that internal services are available over VPN - - - ikiwiki: Enable 'attachment' plugin by default - - - locale: Update translations for Spanish, French, Russian, Norwegian Bokmål, Czech, Hungarian, and Greek - - - minidlna: Add link to manual page - - - minidlna: Fix internationalization for name of the app - - - mldonkey: Add app to freedombox-share group - - - openvpn: Use app toggle button and common app view - - - radicale: Fix link in description to clients - - - samba: Add clients information - - - templates: Fix setup state check - - - users: Avoid error when user's groups cannot be parsed - - -
-
-
- FreedomBox 20.9 (2020-05-18) -
- Top Highlights - - - performance: Add app for system monitoring - - - upgrades: Restart services and system when needed after upgrades - - - System restart will happen at 02:00 local time - - - - -
-
- Other Changes - - - bind: Add service alias for bind9 -> named - - - firewall: Reload firewalld so it works with newly installed services - - - first_setup: Fix regression with logo not showing - - - locale: Update translations for Norwegian Bokmål, German, Swedish, Spanish, and Russian - - - mediawiki: Stop jobrunner during backup/restore - - - minidlna: Stop service during backup/restore - - - mumble: Stop service during backup/restore - - - package: Fix error log when checking if package manager is busy - - - performance: Launch the Cockpit graphs directly if possible - - - quassel: Fix stopping service during backup/restore - - - quassel: Use systemd sandboxing features - - - samba: Change description to Network File Storage - - - snapshot: Fix issues with restore and delete - - - snapshot: Set as essential module - - - storage: Auto-mount disks, notify of failing disks - - - tor: Fix stopping service during backup/restore - - -
-
-
- FreedomBox 20.8 (2020-05-04) - - - syncthing: Add service to freedombox-share group - - - users: When adding service to sharing group, only restart if already running - - - datetime: Ignore time synchronization service in containers and virtual machines - - - minidlna: Make app installable inside unprivileged container - - - web_server: Suppress warnings that static directories don't exist - - - debian: Remove unused timer - - - static: Use SVG logo during first wizard welcome step - - - static: Reduce the size of the background noise image - - - setup.py: Don't install/ship .po files - - - static: Don't ship visual design file and unused images - - - all: Update links to repository and project page - - - coturn: Add app to manage Coturn TURN/STUN server - - - mediawiki: Partial fix for installing on testing - - - datetime: Disable diagnostics when no tests are available - - - data: Print hostname and IP addresses before console login - - - snapshot: Fix message when not available - - - snapshot: Fix title - - - mumble: Add Mumla to the list of clients - - - locale: Update translations for Spanish, Telugu, Russian, German, French, and Swedish - - -
-
- FreedomBox 20.7 (2020-04-20) - - - matrixsynapse: Fix initial installation and upgrade from backports - - - gitweb: Improve error handling when creating repository - - - locale: Update translations for French, Serbian, and Telugu - - -
-
- FreedomBox 20.6.1 (2020-04-11) - - - users: Restore line of help text that was accidentally dropped - - - debian: Add firmware-ath9k-htc to Recommends - - - gitweb: Use proper ellipsis char when showing clone progress - - - locale: Update translations for Norwegian Bokmål, German, French, Portuguese, Italian, Russian, and Serbian - - -
-
- FreedomBox 20.6 (2020-04-06) - - - app: Ensure toggle buttons work independently of configuration form - - - networks, monkeysphere: Make styling more specific to avoid interference - - - syncthing: Update description to mention 'syncthing' group - - - radicale: Support upgrade up to any 2.x version - - - packages: Hold freedombox package during package installs - - - users: Add component for managing users and groups - - - app: Fix grammar in developer documentation string - - - ikiwiki: Disable public edits of blog pages - - - ikiwiki: Add moderation of blog comments - - - firewalld: Support upgrade up to any 0.8.x version - - - infinoted: Fix permissions of sync directory - - - locale: Added Serbian translation - - - locale: Update translations for Russian, French, German, Czech, Italian, Hindi, Telugu, and Spanish - - -
-
- FreedomBox 20.5.1 (2020-03-26) - - - networks: Update label wording in topology form - - - jsxc: Fix issue with serving static files - - - debian: Separate binary packages for each language manual - - - locale: Update translations for Norwegian Bokmål and German - - -
-
- FreedomBox 20.5 (2020-03-23) - - - app: Fix description block in app header - - - pagekite: Don't signal new domain on init if app is disabled - - - pagekite: Don't attempt to notify about domain if app is disabled - - - pagekite: Remove app enabled checking from getting configuration - - - pagekite: On enable/disable, add/remove domain from names module - - - pagekite: Fix an error message in custom services form - - - matrixsynapse: Handle release of matrix-synapse 1.11 - - - setup: Fix regression to force-upgrade caused by Info changes - - - pagekite: Don't allow non-unique custom services - - - index: Reintroduce clients button in front page - - - upgrades: Don't ship apt backport preferences file - - - upgrades: Use internal scheduler instead of systemd timer - - - shadowsocks: Change default configuration - - - shadowsocks: Fix incorrect setting of state directory - - - shadowsocks: When editing configuration, don't re-enable - - - mediawiki: Don't allow anonymous edits - - - names: Fix Local Network Domain is not shown - - - shadowshocks: Fix setting configuration on Buster - - - locale: Update translations for Swedish, Spanish, and French - - -
-
- FreedomBox 20.4 (2020-03-09) - - - apache: Handle transition to php 7.4 - - - app: Fix showing app name in port forwarding information - - - apps: Do not show status block if service is running - - - i2p: New style app page layout - - - locale: Update translations for French, Telugu, Spanish, and Swedish - - - networks: Add first boot step for network topology wizard - - - networks: Add form for network topology - - - networks: Don't show router wizard if not behind a router - - - networks, firewall: Support newer version of policykit - - - networks: Fixes for networks wizards access and user experience - - - networks: If topology wizard is skipped, skip router wizard too - - - networks: Show router wizard before Internet connection type wizard - - - plinth: Increase sqlite busy timeout from default 5s to 30s - - - quassel: Fix unable to disable application without choosing a domain name - - - shadowsocks: Move user settings to state directory - - - storage: Directory selection form improvements - - - transmission: Allow to submit download directory if it is creatable - - - upgrades: Clean apt cache every week - - - views: Improve template security - - -
-
- FreedomBox 20.3 (2020-02-24) - - - apps: Update style for toggle button - - - apps: Drop border shadow for app icon in mobile view - - - apps: Show short description as secondary title - - - apps: Remove css filters and glow from app icons - - - cards: Remove the transition delay on hover effect - - - system: Implement new style for cards - - - framework: Generate secret key (existing sessions will get logged out) - - - framework: Cleanup expired sessions every week - - - networks: Add setting for internet connection type - - - networks: Ask about internet connection type during setup - - - shadowsocks: Fix shadowsocks not able to start - - - jsxc: Bypass issue with stronghold to get the app working again - - - monkeysphere: Fix regression with reading Apache configuration - - - help: Fix attribute on download manual button - - - firewall: Improve speed of some operations using DBus API - - - css: Add missing license identifier on some CSS files - - - deluge: Use safer method for editing configuration - - - deluge: More reliable initial configuration setup - - - samba: Add link to manual page - - - searx: Update search engines for 0.16.0 - - - openvpn: Fix spelling for Tunnelblick - - - bind: Show served domains - - - Update translations for German, Swedish, Italian, Spanish, Norwegian Bokmål, Hungarian, Polish, and French - - -
-
- FreedomBox 20.2 (2020-02-10) - - - networks: Support virtual Ethernet (veth) devices - - - diagnostics: Show firewall service status - - - storage: Show disks if FreedomBox is running in an unprivileged container - - - service: Stop service not before but after disabling it - - - users: Use more precise username validation - - - sso, users: Turn off autocapitalization on the username field - - - help: Fix anchor hidden under navbar - - - searx: Fix installation issue for 0.16.0 - - - firewall: Show Run Diagnostics button in app - - - glib: Introduce method to schedule an operation at regular intervals - - - notification: Show a drop down from main navbar for notifications - - - storage: Show low disk space warning using notifications API - - - upgrades: Show notification when FreedomBox is updated - - - security: Add Sandbox Coverage to report page - - - matrixsynapse: Enable systemd sandboxing - - - locale: Update translations for Telugu, French, Norwegian Bokmål, German, Spanish, and Swedish - - -
-
- FreedomBox 20.1 (2020-01-27) - - - deluge: Allow to set a download directory - - - deluge: Fix installation failure on slow machine - - - storage: Make external disk mounts accessible to other users - - - gitweb: Add link to the manual page - - - style: Fix incorrect margins for containers in mobile view - - - style: Fix responsiveness for app header - - - network: Fix activating connections that don't have real devices - - - wireguard: Add WireGuard VPN app - - - networks: Add router configuration page - - - networks: Add first boot step for router config helper - - - bind: Enable sandboxing for bind service - - - locale: Updated translations for Dutch, Norwegian Bokmål, German, Spanish, Swedish, French, and Greek - - -
-
- FreedomBox 20.0 (2020-01-13) - - - samba: Improve speed of actions - - - deluge: Manage deluged service and connect automatically from web interface - - - openvpn: Enable support for communication among all clients - - - storage: Ignore errors resizing partition during initial setup - - - storage: Make partition resizing work with parted 3.3 - - - debian: Add powermgmt-base as recommended package - - - openvpn: Enable IPv6 for server and client outside the tunnel - - - networks: Fix crashing when accessing network manager D-Bus API - - - mediawiki: Use a mobile-friendly skin by default - - - mediawiki: Allow admin to set default skin - - - matrixsynapse: Allow upgrade to 1.8.* - - - security: Add explanation of sandboxing - - - Update translations for Greek, German, Swedish, Hungarian, Norwegian Bokmål, and French - - -
-
- FreedomBox 19.24 (2019-12-30) - - - app: Fix JavaScript doesn't run on first visit - - - samba: Add private shares - - - firewall: Support upgrading firewalld to 0.8 - - - deluge: Add systemd sandboxing features - - - infinoted: Add systemd sandboxing features - - - storage: Add systemd sandboxing features to udiskie service - - - upgrades: Add systemd sandboxing features to repository setup service - - - security: List whether each app is sandboxed - - - mediawiki: Avoid delay in update script - - - diagnostics: Use new component based API for all diagnostic tests - - - minidlna: Fix showing clients information - - - mediawiki: Fix problem with session cache failing logins - - - locale: Update translations for French, German, Swedish, Greek, Hungarian, Norwegian Bokmål, and Dutch - - -
-
- FreedomBox 19.23 (2019-12-16) - - - minidlna: New app for MiniDLNA (Simple Media Server) - - - apps: Show app icons in app pages - - - apps: Implement responsive layout for app pages - - - samba: Recursively set open share directory permissions - - - transmission: Add directory selection form - - - mumble: Add option to set SuperUser password - - - cockpit: Extend apps description with access info - - - cockpit: Add list of valid urls to access the app - - - Update translations for French, German, Spanish, Portuguese, and Swedish - - -
-
- FreedomBox 19.22 (2019-12-02) - - - samba: Add new app for Samba file sharing - - - pagekite: Remove tabs in the configuration page - - - openvpn: Fix text with manual link - - - pagekite: Show existing services only if there are any - - - pagekite: Move Custom Services under Configuration - - - pagekite: Use the new app toggle button - - - openvpn: Add client apps - - - backups: Fix title not appearing - - - diagnostics: Don't run on disabled modules - - - apps: Remove link to webapps in app descriptions - - - interface: Fix error with app toggle input - - - templates: Add toolbar for apps - - - toolbar: Move diagnostics button into dropdown menu - - - ssh: Fix Avahi SFTP service file - - - diagnostics: Fix IPv6 failures - - - matrix-synapse: Fix installation of 1.5 from buster-backports - - - app: Fix javascript constant redeclaration error - - - ikiwiki: Move the create button to manage section - - - gitweb: Move create button into manage section - - - networks: Move actions button into connection section - - - users: Move create button into users section - - - locale: Update translations for French, German, and Swedish - - -
-
- FreedomBox 19.21 (2019-11-18) - - - gitweb: Allow to import from a remote repository - - - interface: Disable turbolinks on links that don't point to /plinth/... - - - backups: Show proper error when SSH server is not reachable - - - tor: Rename "Hidden Service" to "Onion Service" - - - ejabberd: Handle case where domain name is not set - - - tahoe: Mark Tahoe-LAFS as an advanced app - - - searx: Set safe_search to Moderate by default - - - backups: Make verify ssh host page string translatable - - - backups: Simplify SSH fingerprint verification command - - - doc: Fix unavailability of manual images - - - tor: Fix port diagnostics by correcting port data type - - - tor: Expect obfs service to be also available on IPv6 - - - tor: Listen on IPv6 for OrPort - - - clients: implement launch button feature - - - apps: Implement toggle button in apps pages - - - Update translations for German, Hungarian, Swedish, Norwegian Bokmål, French, Polish - - -
-
- FreedomBox 19.20 (2019-11-04) - - - doc: Add Spanish manual - - - ssh: Add option to disable password authentication - - - sharing: Fix wrong links on Apache2 directory index page - - - gitweb: Set correct access rights after enabling application - - - gitweb: Fix links leading to blank page - - - gitweb: Set proper access after restoration of a backup - - - snapshot: Sort snapshot list from newest to oldest - - - infinoted: Add missing manual page link - - - backups: Fix typo - - - Update translations for German, Spanish, Swedish, Czech, French, Norwegian Bokmål, Hungarian - - -
-
- FreedomBox 19.19 (2019-10-21) - - - gitweb: New app for simple git hosting - - - ikiwiki: Allow full Unicode text in wiki/blog title names - - - users: reload Apache2 to flush LDAP cache after user operations - - - ssh: Show server fingerprints in SSH page - - - frontpage: Show public shortcuts to all users regardless of group - - - ikiwiki: Remove extra create button when no wiki/blog is present - - - quassel: Add Let's Encrypt component for certificates - - - Update translations for Czech, French, Bulgarian, Dutch, German, and Norwegian Bokmål - - -
-
- FreedomBox 19.18 (2019-10-07) - - - diagnostics: Ensure that exceptions are reported as failures - - - users: Rearrange UI to match with other apps - - - upgrades, ikiwiki, networks, backups: Replace page tabs with buttons - - - dynamicdns, i2p, pagekite, snapshot: Cleanup page templates - - - deluge: Support deluge 2 by starting it properly - - - minetest: Remove mod-torches no longer available in testing/unstable - - - security: Add past vulnerabilities count, move report to new page - - - Update translations for Spanish, Norwegian Bokmål, German - - -
-
- FreedomBox 19.17 (2019-09-23) - - - firstboot: Add new help menu to firstboot navbar - - - firstboot: Hide left menu during first boot as intended - - - Update translations for Chinese (Simplified) and Czech - - - Fix tests for letsencrypt and tor - - -
-
- FreedomBox 19.16 (2019-09-09) - - - backups: Allow adding backup repositories on multiple disks - - - help: Add buttons for contribute, support, and feedback - - - action_utils: Workaround problem with setting debconf answers - - - views: Fix failure in redirecting from language selection page - - - manual: Move PDF download link to HTML manual page - - - help: Convert help icon in the navbar to dropdown - - - ejabberd: Fix listen port configuration for ejabberd 19.x - - - cockpit, ejabberd: Prevent restart on freedombox startup - - - ejabberd: Perform host/domain name operations only when installed - - - logging: Improve formatting and reduce noise - - - translations: Update Hungarian, German, Italian, French, and Norwegian Bokmål - - -
-
- FreedomBox 19.15 (2019-08-26) - - - security: Hide vulnerability table by default - - - names: Perform better layout of domain names table on small screens - - - cockpit: Apply domain name changes immediately - - - ejabberd: Prevent processing empty domain name - - - config: Send hostname change signal only after fully processing it - - - letsencrypt: Don't try to obtain certificates for .local domains - - - avahi: Expose .local domain as a proper domain - - - cockpit: Make essential and install by default - - - tt-rss: Force upgrade to 18.12-1.1 and beyond - - - updates: Allow matrix-synapse 1.3 to be installed for buster users - - - javascript: Don't resubmit when refreshing the page - - - storage: Fix regression with restoring backups with storage - - - matrix-synapse: Use recommended reverse proxy configuration - - - Update translations for German, Hungarian, and Norwegian Bokmål - - -
-
- FreedomBox 19.14 (2019-08-12) - - - storage: Handle all device paths during eject - - - storage: Fix incorrect internationalization when throwing an error - - - upgrades: Use collapsible-button style for logs - - - firewall: Allow automatic upgrade to 0.7.x - - - upgrades: Handle release info change - - - frontpage: Fix regression with loading custom shortcuts - - - names: Add dynamic domain name - - - names: Add button to configure each type of name - - - names: Update page layout for clearer presentation - - - names: Introduce new API for domain name handling - - - api: Fix regression with listing only enabled apps in mobile app - - - Update translations for Czech, Hungarian, French, Chinese (Simplified), Turkish, Polish, and Norwegian Bokmål - - -
-
- FreedomBox 19.13 (2019-07-29) - - - backups: Make UI more consistent with other apps - - - backups: Make backup location tables collapsible - - - Updated translations for Chinese (Simplified), German, and Norwegian Bokmål - - - help: Show security notice when backports are in use - - - security: Show vulnerability counts - - -
-
- FreedomBox 19.12 (2019-07-22) - - - sharing: Allow directories to be publicly shared - - - backups: Add option to select/deselect all apps for backup or restore - - - dbus: Allow plinth user to own FreedomBox DBus service - - - letsencrypt: Simplify renewal hooks implementation - - - cockpit: Don't handle domains if app is not installed - - - dynamicdns: Send domain added signal properly during init - - - ejabberd: Backup and restore TLS certificates - - - Started new Galician translation on Weblate - - - Updated translations for Czech, Norwegian Bokmål, Hungarian, Spanish, Telugu, Chinese (Simplified), German, Turkish, and Russian - - -
-
- FreedomBox 19.2.2 (2019-07-17) - This release does not contain any functional changes, but fixes test failures when building the package. -
-
- FreedomBox 19.2.1 (2019-07-09) - This is a bugfix release for 19.2. - - - dbus: Allow plinth user to own FreedomBox DBus service - - -
-
- FreedomBox 19.11 (2019-07-08) - - - backups: Fixes to issues while adding SSH remotes: - - - Improve UX of adding ssh remote - - - Avoid creating duplicate SSH remotes - - - Fix issue with repository not being initialized - - - Verify SSH hostkey before mounting - - - Allow SSH directory paths with : in them - - - Require passphrase for encryption in add repository form - - - Don't send passphrase on the command line - - - Un-mount SSH repositories before deleting them - - - - - matrixsynapse: Fix missing translation mark - - - Started new Greek translation on Weblate - - - Updated translations for Chinese (Simplified), Hungarian, Spanish, and Russian - - -
-
- FreedomBox 19.10 (2019-06-24) - - - syncthing: Open firewall ports for listening and discovery - - - radicale: Workaround issue with creating log directory - - - Update translations for Turkish, German, Czech, Norwegian Bokmål, and Portuguese - - - Introduce components for firewall, webserver, uwsgi, and daemons - - -
-
- FreedomBox 19.9 (2019-06-10) - - - config: Add option to show advanced apps, which are hidden by default - - - monkeysphere: Hide by default - - - searx: Add option to allow public access to the application - - - Introduce component architecture for apps, with components for menus and shortcuts - - - Start new translation for Bulgarian - - - Update translations for Turkish and Norwegian Bokmål - - -
-
- FreedomBox 19.8 (2019-05-27) - - - Switch to using SVG icons for all apps. - - - Updated translations for Czech, Norwegian Bokmål, Hungarian, German, Turkish, and Spanish. - - -
-
- FreedomBox 19.7 (2019-05-13) - - - i2p: Include default favorites. - - - Separate enabled and disabled apps. - - - Display port forwarding info for apps. - - - Added Slovenian translation. - - - Updated translations for Dutch, German, Hungarian, Norwegian Bokmål, Polish, Portuguese, Telugu. - - -
-
- FreedomBox 19.6 (2019-04-29) - - - i2p: Enable new application for I2P Anonymity Network. - - - Updated translations for Czech, German, Norwegian Bokmål, and Turkish. - - - letsencrypt: Provide link to configure domain if not configured. - - - firewall: Show port numbers and types. - - -
-
- FreedomBox 19.5 (2019-04-15) - - - storage: Use more reliable method to list disks and disk space usage. - - - Updated translations for Russian and German. - - -
-
- FreedomBox 19.4 (2019-04-01) - - - clients: Open web app in a new browser tab - - - matrix-synapse: Change client diagnostics url - - - minetest: Fix duplicate domain names being displayed in UI - - - storage: Do not show an eject button on /boot partitions - - - letsencrypt: Call letsencrypt manage_hooks with correct arguments - - - dynamicdns: Install module by default - - - storage: Don't check type of the disk for / and /boot - - - storage: Don't log error when checking if partition is expandable - - - Updated translations for Norwegian Bokmål, Czech, German, Hungarian, Spanish, German, and Russian. - - -
-
- FreedomBox 19.3 (2019-03-18) - - - UI: Move tabs below descriptions. - - - firewall: Style heading - - - names: Add description - - - pagekite: Change heading text - - - ikiwiki: Consistent styling for delete warning page - - - main: Show service version in logs - - - setup: Organize data files into various apps - - - Updated translations for Czech, Hungarian, Norwegian Bokmål, Spanish, German, French, Italian, and Turkish. - - -
-
- FreedomBox 19.2 (2019-03-02) - - - config: Fix Ikiwiki entries not showing up as default apps - - - config: Migrate default app configuration to new conf file - - - config: Rename Default App to Webserver Home Page - - - config: Add option to use Apache's default home page as home page - - - config: Fix error when setting JSXC as the home page - - - Disable Coquelicot for Buster release - - - matrix-synapse: Fix LDAP login issue - - - config: Revert changes in freedombox.conf to avoid conffile prompt - - - openvpn: Migration from easy-rsa 2 to 3 for existing installations - - - tor: Use fixed 9001 port for relaying - - - package: Implement identifying packages that need conffile prompts - - - setup: Trigger force upgrade for app that implement it - - - bind: Handle conffile prompt during upgrade - - - apache: Pre-enable necessary apache modules - - - apache: Use cgid module instead of cgi - - - openvpn: Make frontpage shortcut appear after an upgrade - - - openvpn: Work around firewalld bug 919517 - - - firewalld: Implement upgrading from 0.4.x to 0.6.x - - - ttrss: Implement upgrade from 17.4 to 18.12 - - - radicale: Add description of web interface - - - ttrss: Add backup support - - - security: Migrate access config to new file - - - Updated translations for Czech, Hungarian, Norwegian Bokmål, Spanish, German, Telugu. - - -
-
- FreedomBox 19.1 (2019-02-14) - - - radicale: Increment module version to trigger upgrade handling - - - radicale: Remove obsolete diagnostics - - - radicale: Fix server URLs in client info - - - Updated translations for Czech, Norwegian Bokmål, and Spanish. - - - setup: Add option to handle configuration prompts during install - - - radicale: Simplify upgrading to newer packages - - - matrixsynapse: Use Let's Encrypt certificates - - -
-
- FreedomBox 19.0 (2019-02-09) - - - mldonkey: Add some more clients to the module page - - - mldonkey: Add to the description the three available front-ends - - - monkeysphere: Fix handling of multiple domains and keys - - - monkeysphere: Fix regression with reading new apache domain config - - - apache: Switch to mod_ssl from mod_gnutls - - - mldonkey: Enable app - - - upgrades: Fix priority for buster-backports version - - - upgrades: Fix premature adding of buster-backports sources - - - Updated translations for Czech, German, and Spanish - - - Switched to a new version number scheme: YY.N - - - YY is the year of release. - - - N is the release number within that year. - - - - -
-
- Version 0.49.1 (2019-02-07) - - - ui: Fix regression with configure button in home page. - - - backups: Rename 'Abort' buttons to 'Cancel'. - - - backups: Use icon for add repository button. - - - backups: Move subsubmenu below description. - - - backups: Add title and description to other pages. - - - backups: Add link to manual page. - - - backups: Fix styling for upload size warning. - - - backups: Increase timeout for SSH operations to 30 seconds. - - - letsencrypt: UI: Fix checkbox disabling. - - - datetime: Switch from chrony to systemd-timesyncd. - - - Updated translations for Czech, Norwegian Bokmål, and Spanish. - - -
-
- Version 0.49.0 (2019-02-05) - - - security: Update javascript for Content Security Policy. - - - help: Use correct package to determine available version. - - - repro: Disable app due to issues with Debian package. - - - ui: Fix regression with card icon style in front page. - - - js: Support full librejs compatibility. - - - js: Remove javascript license link from footer. - - - backups: Remove incorrectly set buffer size during download. - - - backups: Fix incomplete download archives. - - - backups: Improve performance of backup download. - - - radicale: Handle migration from 1.x to 2.x. - - - datetime: Switch from ntp to chrony. - - - backports: Add buster-backports to apt sources list. - - - Updated translations for Czech, Norwegian Bokmål, and Hungarian. - - -
-
- Version 0.48.0 (2019-01-28) - - - Updated translations for Czech, Hungarian, German, and Norwegian Bokmål. - - - UI improvements: - - - Fix top margin for content containers. - - - Fix setting width of card-list at various page sizes. - - - Show help nav item text when navbar is collapsed. - - - Hide restart/shutdown items when navbar is collapsed. - - - Compact pages on extra small screen sizes. - - - - - Backups improvements: - - - Add backup/restore support for syncthing and openvpn. - - - Upgrade apps before restoring them - - - Fix showing not-installed apps in create backup page - - - Automatically install required apps before restore. - - - Add a loader to the restore button to indicate progress. - - - - - Serve default favicon for apps that don't provide one. - - - radicale: Fix issue with configuration changes not applying. - - - storage: Fix false error message in log when visiting home page. - - - infinoted: Handle timeout issue when stopping daemon during setup. - - - matrix-synapse: Fix startup error caused by bind_address setting. - - - radicale: Avoid changes to conffile for radicale 2.x. - - - help: Fix showing status logs when an error occurs. - - - fail2ban: Enable bans for apache auth failures. - - - mldonkey: Initial work on new module for the eDonkey network. - - - Not available yet, due to bug in package. - - - - -
-
- Version 0.47.0 (2019-01-14) - - - Show Gujarati in the list of languages. - - - Replace glyphicons with forkawesome icons. - - - Snapshots: - - - Change configuration to avoid filling up disk. - - - Handle "Config in use" error. - - - Update descriptions and configuration options. - - - - - Firewall: Fix issue with transition from iptables. - - - Security: Switch to Argon2 password hash. - - - Cockpit: Add link to manual page and update description. - - - Radicale: Add initial support for radicale 2.x. - - - Setup: - - - Handle showing setup page after app completes installation. - - - Optimize installation in-progress checks and refresh time. - - - - -
-
- Version 0.46.0 (2018-12-31) - - - Updated translations for Czech, German, Spanish, Ukrainian, and Norwegian Bokmål. - - - Use systemd journal for logging. - - - Rename plinth binary package to "freedombox", and merge freedombox-setup package into it. - - -
-
- Version 0.45.0 (2018-12-17) - - - Storage: Merge list of removable media into existing table. - - - Backups: Allow remote backups to SSH servers using sshfs. - - - Backups: Removed asking for backup archive name. - - - Automatically handle future versions of PHP. - - - Updated translations for Hungarian, Czech, Spanish, Chinese (Simplified), Italian, Norwegian Bokmål, French, and German. - - -
-
- Version 0.44.0 (2018-12-03) - - - UI: Add card style and gray noise background to apps pages. - - - UI: Fix distortion of the client apps buttons. - - - ejabberd: Handle BOSH port change from TCP 5280 to 5443. - - - Minetest: Update mods list to available Debian packages. - - - Firewall: Use nftables instead of iptables. - - - Snapshots: Fix default snapshot listing. - - - Snapshots: Show description above either tab. - - - Snapshots: Allow snapshots to be selected for deletion. - - - Translations: Updated Czech, Norwegian Bokmål, Spanish, German, and Portuguese. - - -
-
- Version 0.43.0 (2018-11-19) - - - Backups improvements: - - - Allow backups to be downloaded directly, without export step. - - - Restore directly from uploaded backup. - - - Avoid error for apps with no data to backup. - - - Show free disk space on upload and restore page. - - - Do not limit maximum upload size. - - - - - openvpn: Migrate to easy-rsa 3 and fix setup issues. - - - Make single sign-on tickets valid for 12 hours. - - - Use consistent terminology for updates. - - - Updated translations for Czech and Portuguese. - - -
-
- Version 0.42.0 (2018-11-05) - - - Fix wrong color in mobile menu - - - snapshot: Fix broken snapshot management after snapper update - - - Enable backup/restore for tor, upgrades, monkeysphere, letsencrypt, tahoe - - - monkeysphere: Handle importing new OpenSSH format keys - - - udiskie: unmount drive as superuser - - - Updated translations for Telugu, Indonesian, and Italian - - -
-
- Version 0.41.0 (2018-10-22) - - - Enable backup/restore for datetime, deluge, avahi, backups, bind, security, snapshot, ssh, firewall, diagnostics, names, power, and storage. - - - snapshot: Fix issue with setting configuration. - - - backups: Fix backup archives ownership issue. - - - backups: Fix issue with showing exports from disks without labels. - - - backups: Don't rely on disk labels during export/restore. - - - backups: Fix downloading extracted archive files. - - - Updated translations for Norwegian Bokmål, French, Russian, and Spanish. - - -
-
- Version 0.40.0 (2018-10-08) - - - Backups - - - Enable backup/restore for mumble, privoxy, roundcube, searx, jsxc, coquelicot, transmission, quassel, shadowsocks, sharing, pagekite, and cockpit. - - - Allow backup archives to be downloaded/uploaded through browser. - - - mediawiki: Backup/restore settings as well as data. - - - - - User Interface - - - Change card text style and position. - - - Change maximum cards per row. - - - Add tint effect on card icons under "Apps". - - - - - mediawiki: Run update script for 1.31 upgrade. - - - customization: Show custom shortcuts on frontpage. - - - Updated translations for Norwegian Bokmål, Portuguese, Spanish, Czech, German, French, and Italian. - - -
-
- Version 0.39.0 (2018-09-24) - - - Updated translations for Hungarian and Norwegian Bokmål. - - - Merge Removable Media (udiskie) into Storage module. - - - Add Backups module for backing up apps data. - - -
-
- Version 0.38.0 (2018-09-10) - - - mediawiki: Enable SVG support for MediaWiki - - - upgrades: Clean up old kernel packages during automatic upgrades - - - Make the progress bar at the top of the page more visible. - - - Updated translations for Norwegian Bokmål, Czech, Russian, German, Hungarian, and Spanish. - - -
-
- Version 0.37.0 (2018-08-27) - - - Updated translations for Czech, Norwegian Bokmål, Russian, Spanish, Hungarian, and Dutch. - - - install: Use Post/Response/Get pattern for reloads. - - -
-
- Version 0.36.0 (2018-08-13) - - - Updated translations for Hindi, Spanish, Russian, Telugu, German, Hungarian, Czech, and French - - - ejabberd: Remove deprecated settings from already existing config files - - - mediawiki: Fix issue with re-installation - - - mediawiki: Enable Instant Commons - - - mediawiki: Fix images throwing 403s - - - turbolinks: Reload page using JavaScript - - - Add Lato woff2 fonts - - - Disable launch button for web client when not installed - - -
-
- Version 0.35.0 (2018-07-30) - - - configuration: Add an option to set a default app for FreedomBox. The root URL path (https://domainname/) will redirect to the selected app. - - - ejabberd: Remove deprecated iqdisc setting. To apply this fix, disable and then re-enable the Message Archive Management setting. - - - ejabberd: Replace logo with original version. - - - mediawiki: Enable short URLs, which look like https://domainname/mediawiki/ArticleName. - - - radicale: Clarify description for shared calendar/addressbook. - - - storage: Handle mount points with spaces. - - - udiskie: Add button to eject drives. - - - udiskie: Also show read-only filesystems. - - - udiskie: Remove internal networks warning. - - - udiskie: Show special message when no storage device available. - - - Add turbolinks library for smoother navigation. - - - Removed extra text from icons for mediawiki, radicale, and tahoe-lafs. - - - Updated translations for Russian, Spanish, Dutch, Hungarian, Hindi, Italian, Telugu, German, and Norwegian Bokmål. - - -
-
- Version 0.34.0 (2018-07-16) - - - Prompt for secret during firstboot welcome - - - (Does not apply to downloadable FreedomBox images, but only when installed using freedombox-setup package.) - - - - - Updated translations for Italian, Dutch, Hindi, Hungarian - - -
-
- Version 0.33.1 (2018-07-04) - - - Fix issue where editing a user would remove them from admin group - - - Updated translations for Hungarian, Czech, Spanish, Russian, Hindi - - -
-
- Version 0.33.0 (2018-07-02) - - - Updated translations for Hungarian, Norwegian Bokmål, Spanish, Russian, Czech, Hindi, Dutch, Italian - - - firewall: Display information that a service is internal only - - - users: Don't show Create User link to non-admin users - - - users: Redirect to users list on successful user creation - - - packages: Show button to refresh package lists when a package is not available for install - - - Only show front page shortcuts that a user is allowed to access - - - Restrict removal of last admin user - - - Use logos instead of icons in the apps page - - - udiskie: New module for automatic mounting of removable media - - -
-
- Version 0.32.0 (2018-06-18) - - - Apply new card based design - - - Fix client info table size and flickering - - - first-setup: Automatically expand root partition - - - mediawiki: Enable image uploads - - - mediawiki: Make private mode and public registrations mutually exclusive - - - mediawiki: Hide frontpage shortcut when private mode is enabled - - - Updated translations for Norwegian Bokmål, Czech, Spanish, Russian, Hindi, Telugu, Italian, Dutch, German, and Hungarian - - -
-
- Version 0.31.0 (2018-06-04) - - - Updated translations for Czech, Spanish, Russian, German, Italian, Hindi, Telugu, and Norwegian Bokmål - - - mediawiki: Added private mode option - - - users: Fix user permissions not being saved - - - users: internationalize a string - - - mediawiki: Run update script for 1.30 upgrade - - - shortcuts: Fix urls for ikiwiki shortcuts - - -
-
- Version 0.30.0 (2018-05-21) - - - Updated translations for Russian, Italian, Norwegian Bokmål, Hungarian, and Hindi - - - setup: Remove unavailable as a state in setup_helper - - -
-
- Version 0.29.1 (2018-05-08) - - - security: Fix issue with Plinth locked out from sudo - - - Updated translations for Czech and Spanish - - -
-
- Version 0.29.0 (2018-05-07) - - - security: Allow console login access to user plinth - - - Add an option to enable/disable public registrations in mediawiki - - - tt-rss: Skip the check for SELF_URL_PATH - - - searx: Fix issue with uwsgi crashing - - - Updated translations for Czech, Spanish, German, Norwegian Bokmål, and Italian - - -
-
- Version 0.28.0 (2018-04-23) - - - setup: disable install button for currently unavailable apps - - - Add locale for Lithuanian (lt) - - - Translation updates for Italian, Czech, Russian, Spanish, German, Norwegian Bokmål, Telugu, and Dutch - - -
-
- Version 0.27.0 (2018-04-09) - - - middleware: Skip 'installed' message for essential apps - - - users: Fix admin group appearing twice in permissions - - - apps: Fix app names and short descriptions not being translated - - - snapshots: Move manual page link to the index page - - - UI: Fix progress bar not appearing - - - snapshots: Fix for permissions issue when updating configuration - - - snapshots: Add option to enable/disable software installation snapshots - - - Translation updates for Italian, Czech, Russian, Spanish, Dutch, German, Norwegian Bokmål, and Ukrainian - - -
-
- Version 0.26.0 (2018-03-26) - - - snapshots: Update description - - - searx: Rewrite url from /searx to /searx/ - - - manual: Link to manual from each service - - - Workaround security issues in django-axes - - - apache: Only regenerate snake oil cert when needed - - - apache: Explicitly enable the latest version of PHP module - - - apache: Increase module version number to fix php7.2 - - - Update translations for Chinese (Simplified), Russian, Czech, German, Norwegian Bokmål, Hungarian, Spanish, and Italian - - -
-
- Version 0.25.0 (2018-03-12) - - - sharing: Add app for sharing disk folders. - - - ttrss: Update list of client apps. - - - infinoted: Allow setup to recover after timeout issue. - - - snapshots: Add configuration tab with settings for time-based snapshots. - - -
-
- Plinth v0.24.0 (2018-02-26) - - - Add file-sharing application Coquelicot. - - - Add metasearch engine application Searx. - - - Add locale for Hungarian (hu). - - - mediawiki: Allow shortcut to be publicly visible on front page. - - - clients: Add and correct Client Apps. - - - locale: Preferred language can be set in each user's profile. - - - locale: Anonymous users can select preferred language. - - - config: Remove language selection from config page. - - - matrixsynapse: Fix mail attribute for ldap login. - - -
-
- Plinth v0.23.0 (2018-02-12) - - - snapshots: Modify configurations to reduce disk usage. - - - snapshots: Skip currently active snapshot when deleting all snapshots. - - - jsxc: Use consistent url format. - - - sso: Increase timeout to 60 minutes. - - - theme: Change font from Helvetica to Lato. - - - Translation updates for Czech, German, Gujarati, and Telugu. - - -
-
- Plinth v0.22.0 (2018-01-30) - - - matrix-synapse: Make sure configuration file does not get corrupted. - - - tor: Show enabled status properly. - - - first_setup: Fix not showing admin user creation step. - - - Migrate from GitHub to Salsa - - - Migrate from CirceCI to GitLab CI on Salsa. - - - Translation updates for Czech, Dutch, Gujarati, Hindi, Russian and Telugu. - - - Started new translation for Ukrainian. - - -
-
- Plinth v0.21.0 (2018-01-15) - - - navigation bar: Change label from 'Configuration' to 'System'. - - - storage: Removed beta warning for expanding partition. - - - groups: Consistently show available user groups, even before applications are installed. - - - syncthing: Restrict administration to users in "syncthing" group. - - - help: Show menu on smaller screens also. - - - diagnostics: Enable the "Run Diagnostics" button when applications are enabled but not running. - - -
-
- Plinth v0.20.0 (2018-01-01) - - - bind: Don't use forwarders by default - - - ejabberd: Remove redundant button Client Apps - - - mediawiki: Add wiki application - - - users: Make sure first run actually works - - - bind: Add information about current utility - - -
-
- Plinth v0.19.0 (2017-12-18) - - - ejabberd: Use dynamic reload instead of restart when changing configuration. - - - manual: Make manual available as a PDF download. - - - minetest: Show domain information for users to connect to minetest. - - - snapshots: Add button to delete all snapshots. - - - snapshots: Add option to enable/disable automatic timeline snapshots. - - - users: Add groups for bit-torrent and feed-reader, available when these applications are installed. - - -
-
- Plinth v0.18.0 (2017-12-04) - - - Add Shadowsocks client with socks5 proxy. - - - Fix SSO regressions and conflict with captcha. - - - transmission: Fix sso not being enabled on upgrade. - - - avahi: Add service for FreedomBox discovery. - - - Add client information for modules. - - -
-
- Plinth v0.17.0 (2017-11-20) - - - transmission: Enable Single Sign On. - - - cockpit: Add short description to frontpage shortcut. - - - fail2ban: Fix spelling and sentence structure. - - -
-
- Plinth v0.16.0 (2017-11-06) -
- Added - - - Add mobile, web and desktop client info for modules. - - - Enable django SecurityMiddleware to improve security ratings. - - - cockpit: New module for server administration and web terminal. - - -
-
- Fixed - - - letsencrypt: Fix internal server error when obtaining a certificate. - - - ejabberd: Fix LDAP server entry in config file during setup. - - - jsxc: Fix outdated URLs for connecting to local ejabberd server. - - -
-
-
- Plinth v0.15.3 (2017-10-20) -
- Changed - - - Rename Disks to Storage. - - - Rename Snapshot to Storage Snapshots. - - - tt-rss: Enable API access by default. - - - Allow access to Plinth from outside the LAN. - - - matrix-synapse: Disable public registration by default. - - - power: Merge actions into the user dropdown. - - -
-
- Added - - - Add locales for Kannada (kn) and for Bengali (bn). - - - ejabberd: Use Let's Encrypt certificate, also across renewals. - - - matrix-synapse: Add enable/disable public registrations. - - - Add captcha validation on 3 failed attempts. - - - matrix-synapse: Enable LDAP integration. - - - letsencrypt: Automatically obtain and revoke SSL certificates. - - -
-
- Fixed - - - Fix front page label names. - - - Fix vertical alignment of shortcut icons. - - - storage: Fix issue with locales that use other decimal separators. - - - Make tt-rss api accessible using Apache basic auth. - - - letsencrypt: Handle case where current domain is empty. - - - Handle both admin and non-admin user names in update user template. - - -
-
-
- Plinth v0.15.2 (2017-09-24) -
- Added - - - letsencrypt: Show more info on cert validity status. - - - letsencrypt: Add option to delete certificates. - - - letsencrypt: Add option to let Plinth manage certbot's renewal hooks. - - - power: Warn if a package manager is running before shutdown/restart. - - - security: Install and manage fail2ban. - - - names: Include domain and services from dynamicdns. - - - disks: Add low disk space warning to system and disks page. - - - ssh: New application to manage SSH server. - - - Add api module to get enabled services and access info. - - - Add Django password validators. - - - ejabberd, ikiwiki, ttrss: Add user login descriptions. - - -
-
- Removed - - - diaspora: Disable for this release due to issues affecting package. - - - Remove help from navbar before firstboot complete. - - -
-
- Fixed - - - i18n: Don't use backslash-newline for wrapping long lines. - - - radicale: Update link to documentation. - - - sso: Upgrade crypto to 4096-bit RSA and SHA-512. - - - Users: Allow non-admin users to log out. - - -
-
- Changed - - - letsencrypt: Make Let's Encrypt an essential module. - - - UI: Make apps and configure pages responsive on small screens. - - - Make help accessible for logged-in non-admin users. - - -
-
-
- Plinth v0.15.0 (2017-07-01) - - - Added Tahoe-LAFS module for distributed file storage. - - - Added Diaspora* module for federated social networking. - - - Currently only available in "contrib" repository. - - - - - New Locales for Czech (cs) and Tamil (ta). - - - Added SSO using auth_pubtkt for Syncthing, TT-RSS, and the Repro admin panel. - - - If you are logged in to Plinth, you will be automatically logged in to these web apps. - - - - - ejabberd: Added option to enable/disable Message Archive Management. - - - help: Added Debian release name to about page. - - - firstboot: De-bloat first welcome screen. - - - Pinned footer to the bottom of the viewport. - - - disks: Restrict precision of reported available space on root partition. - - - diagnostics: Disable button if app/service is not running. - - - help: Only show help pages if user is logged in. - - - navbar: Moved logout to user drop-down and added a new power drop-down. - - - disks: Show disabled partition resize option if no space is available. - - - Added line break to titles to fix frontpage layout. - - - syncthing: Fixed typos and clarity in description. - - - firewall: Fix 500 error when firewalld is not running. - - - setup: Disable install/upgrade when dpkg/apt is running. - - - disks: Use information from lsblk for more accuracy. - - - datetime: Show timezone properly when it not in expected list. - - -
-
- Plinth v0.14.0 (2017-04) - - - tor: Added option to use upstream bridges. - - - openvpn: Added shortcut to front page, shown only when logged-in. - - - openvpn: Non-admin users can download their own profiles. - - - Added new locales for Hindi (hi) and Gujarati (gu). - - - Added Syncthing module for file synchronization. - - - Added Matrix Synapse as chat server with groups, audio and video. - - - Require admin access for all system configuration pages. - - - Changed appearance of topbar and footer. - - - openvpn: Regenerate user key or certificate if empty. - - - disks: Workaround issue in parted during resize. - - -
-
- Plinth v0.13.1 (2017-01-22) - - - Two new apps were added: - - - Gobby Server (infinoted) for collaborative editing of text documents - - - Domain Name Server (BIND), in system menu - - - - - Added JavaScript license web labels to provide partial support for LibreJS. - - - Added basic configuration form for Minetest server. - - - Added indicator to Help->About page if new Plinth version is available. - - - Show app logos on front page instead of generic icons. - - - Prevent anonymous users from accessing setup pages. - - - Split Chat Server (XMPP) app into Chat Server (ejabberd) and Chat Client (jsxc). - - -
-
- Plinth v0.12.0 (2016-12-08) - - - Open up RTP ports in the firewall for repro (SIP server). - - - Front page shortcuts for services show a Configure button in the details box for logged-in users. - - - Add mods packages to be installed with Minetest server. - - - Fix issue with reading Dynamic DNS status as non-root user. - - - After the hostname is changed, ensure the domain name is still set correctly. - - - Allow the domain name to be cleared, and properly set the configuration in this case. - - - On the Certificates (Let's Encrypt) page, show a more informative message when no domains are configured. - - - On the Chat Server (XMPP) page, show more clearly if domain is not set. - - - Apps that require login will not be shown on the front page, unless the user is logged in. - - - Show status block for News Feed Reader (Tiny Tiny RSS). - - - Change appearance of front page with larger icons and repositioned text. - - - Firewall page only lists services that have been setup. The port lists are collapsible under each service. - - - Support configuring IPv6 networks. - - - Make it less likely to accidentally delete the only Plinth user. - - - Updated to work with JSXC 3.0.0 (XMPP web client). - - -
-
- Plinth v0.11.0 (2016-09-29) - - - Added loading icon for additional busy operations. - - - Added basic front page with shortcuts to web apps, and information about enabled services. - - - networks: Add batctl as dependency, required for batman-adv mesh networking. - - - users: - - - Fixed checking restricted usernames. - - - Display error message if unable to set SSH keys. - - - Flush nscd cache after user operations to avoid some types of errors. - - - - - monkeysphere: - - - Adopted to using SHA256 fingerprints. - - - Sort items for consistent display. - - - Handle new uid format of gpg2. - - - Fixed handling of unavailable imported domains. - - - - - minetest: Fixed showing status block and diagnostics. - - - Fixed stretched favicon. - - - Switched base template from container-fluid to container. This will narrow the content area for larger displays. - - - Plinth is now able to run as "plinth" user instead of root user. - - - xmpp: Replaced jwchat with jsxc. - - - ikiwiki: Allow only alphanumerics in wiki/blog name to avoid invalid paths. - - -
-
- Plinth v0.10.0 (2016-08-21) - - - Updated Plinth to support Django 1.10. - - - Added a page to display recent status log from Plinth. It is accessible from the 500 error page. - - - Tor: Added options to toggle relay and bridge relay modes. - - - Radicale: Added access rights control. - - - Ikiwiki: Updated suggested packages. - - - Users and Groups: Fixed editing users without SSH keys. - - - Networks: Added basic support for configuring batman-adv mesh networking. - - - Networks: Fixed incorrect access for retrieving DNS entries. - - - New languages: - - - Persian (50% translated) - - - Indonesian (not started, contributions needed) - - - - - New modules added to Plinth: - - - Disks: Shows free space of mounted partitions, and allows expanding the root partition. - - - Security: Controls login restrictions. - - - Snapshots: Manages Btrfs snapshots. - - - - -
-
- Version 0.9.4 (2016-06-24) - - - Added Polish translation. - - - Fixed issue preventing access to Plinth on a non-standard port. - - - Dealt with ownCloud removal from Debian. The ownCloud page in Plinth will be hidden if it has not been setup. Otherwise, a warning is shown. - - - Fixed issue in Privoxy configuration. Two overlapping listen-addresses were configured, which prevented privoxy service from starting. - - - Fixed issue that could allow someone to start a module setup process without being logged in to Plinth. - - - Fixed issues with some diagnostic tests that would show false positive results. - - - Added check to Diagnostics to skip tests for modules that have not been setup. - - - Fixed some username checks that could cause errors when editing the user. - - - Added sorting of menu items per locale. - - - Moved Dynamic DNS and Pagekite from Applications to System Configuration. - - - Allowed setting IP for shared network connections. - - - Switched Dreamplug image from "non-free" to "free". This means that we no longer include the non-free firmware for the built-in wifi on Dreamplug. - - - Added the "userdir" module for the Apache web server. This allows users in the "admin" group to create a folder called "public_html" under their home folder, and to publicly share files placed in this folder. - - - New wiki and manual content licence: Creative Commons Attribution-ShareAlike 4.0 International (from June 13rd 2016). - - - Switched to using apt-get for module setup in Plinth. This fixes several issues that were seen during package installs. - - -
-
- Version 0.9 (2016-04-24) - - - Fixed Wi-Fi AP setup. - - - Prevent lockout of users in 'sudo' group after setup is complete. - - - Improved setup mechanism for Plinth modules. Allows users to see what a module is useful for, before doing the setup and package install. Also allows essential modules to be setup by default during FreedomBox install. - - - Added HTTPS certificates to Monkeysphere page. Reorganized so that multiple domains can be added to a key. - - - Added Radicale, a CalDAV and CardDAV server. - - - Added Minetest Server, a multiplayer infinite-world block sandbox. - - - Added Tiny Tiny RSS, a news feed reader. - - -
-
- Version 0.8 (2016-02-20) - - - Added Quassel, an IRC client that stays connected to IRC networks and can synchronize multiple frontends. - - - Improved first boot user interface. - - - Fixed Transmission RPC whitelist issue. - - - Added translations for Turkish, Chinese, and Russian. Fixed and updated translations in other languages. - - - Added Monkeysphere, which uses PGP web of trust for SSH host key verification. - - - Added Let's Encrypt, to obtain certificates for domains, so that browser certificate warnings can be avoided. - - - Added repro, a SIP server for audio and video calls. - - - Allow users to set their SSH public keys, so they can login over SSH without a password. - - -
-
- Version 0.7 (2015-12-13) - - - Translations! Full translations of the interface in Danish, Dutch, French, German and Norwegian Bokmål, and partial Telugu. - - - Support for OLinuXino A20 MICRO and LIME2 - - - New Plinth applications: OpenVPN, reStore - - - Improved first-boot experience - - - Many bugfixes and cleanups - - -
-
- Version 0.6 (2015-10-31) - - - New supported hardware target: Raspberry Pi 2 - - - New modules in Plinth: - - - Shaarli: Web application to manage and share bookmarks - - - Date & Time: Configure time zone and NTP service - - - Service Discovery: Configure Avahi service - - - - - Documentation revamp including new user manual and developer guide - - - Improved diagnostic tests, available in Plinth - - - Avoid unnecessary changes when installing on existing Debian system - - - Network configuration supports PPPoE connections - - - Debian packages can be download over Tor - - -
-
- Version 0.5 (2015-08-07) - - - New targets: CubieTruck, i386, amd64 - - - New apps in Plinth: Transmission, Dynamic DNS, Mumble, ikiwiki, Deluge, Roundcube, Privoxy - - - NetworkManager handles network configuration and can be manipulated through Plinth. - - - Software Upgrades (unattended-upgrades) module can upgrade the system, and enable automatic upgrades. - - - Plinth is now capable of installing ejabberd, jwchat, and privoxy, so they are not included in image but can be installed when needed. - - - User authentication through LDAP for SSH, XMPP (ejabberd), and ikiwiki. - - - Unit test suite is automatically run on Plinth upstream. This helps us catch at least some code errors before they are discovered by users! - - - New, simpler look for Plinth. - - - Performance improvements for Plinth. - - -
-
- Version 0.3 (2015-01-20) - - - Tor Bridges: All boxes now act as non-exit Tor bridges, routing traffic for the Tor network. - - - Firewall: firewall is on by default and is automatically managed. - - - Add BeagleBone support. We now have images for BeagleBone, RaspberryPi, VirtualBox i386/amd64, and DreamPlug. - - - Ability to enable and use Tor Hidden Services. Works with Ejabberd/JWChat and ownCloud services. - - - Enable Tor obfsproxy with scramblesuit. - - - Drop well-known root password (an account with sudo capabilities still exists for now but will be removed soon). - - - Switch to unstable as suite of choice for easier development. - - - Newer images are built with systemd by default (due to Debian change). - - - Install and operate firewall automatically (uses firewalld). - - - Major restructuring of Plinth UI using Python3, Django web development framework and Bootstrap3. Code quality is much better and UI is more polished. - - - Introduced packaging framework in Plinth UI for on-demand application installation. - - -
-
- Version 0.2 (2014-03-16) - - - Support for Raspberry Pi and VirtualBox (x86) in addition to the DreamPlug. - - - New Services: - - - Configuration Management UI. - - - Instant Messaging. - - - OwnCloud. - - - dnsmasq. - - - Low-Level Configuration Management. - - - Service Announcement. - - - LDAP Server. - - - LXC Support. - - - Source Packages. - - - - - The privoxy setup is now the default from Debian. - - -
-
- Version 0.1 (2013-02-26) - - - First FreedomBox software release (0.1 image, developer release). - - - Full hardware support in Debian - - - Support for DreamPlug. - - - Basic software tools selected as common working environment: - - - User interface system "plinth" - - - Cryptography tools: gpg or "monkeysphere" - - - Box-to-box communication design: Freedom-buddy (uses TOR network) - - - Web cleaning: "privoxy-freedombox". - - - - -
-
-
-
- Contribuir - Desde la codificación, el diseño y la traducción hasta la divulgación y las donaciones he aquí varias formas de contribuir a FreedomBox. -
- Enlaces Rápidos - - Manual del Desarrollador de FreedomBox - - - Reuniones de revisión de avance - - - Página de trabajos pendientes - - - Página de Donaciones - -
-
- Bienvenida a los recién llegados - Como nuevo contribuyente, eres más que bienvenido a presentarte a otros en el foro de debate, la lista de correo o el canal de IRC de FreedomBox. Además de hacer contactos útiles, puedes empezar a informar fallos y traducir (ver abajo) el wiki y el interfaz de FreedomBox. -
-
- Prioridades de Desarrollo - Las prioridades se discuten regularmente. Encontrarás el avance del Servicio FreedomBox con sus prioridades aquí: panel de tareas e hitos. - Por favor, asiste a las próximas reuniones de avance para mantenerte al día y tratar con los miembros del equipo de publicación (release). La Página de trabajos pendientes recopila la lista completa de los elementos en los que trabajar para FreedomBox. -
-
- Se necesitan Contribuciones -
- Añadir una Aplicación - Si eres desarrollador y quieres ver disponible en FreedomBox alguna aplicación, puedes contribuir añadiéndola a FreedomBox. Mira el Manual del Desarrollador de FreedomBox. -
-
- Defectos - Las listas de defectos, peticiones de funcionalidad y mejoras se controlan en el gestor de tiquets de FreedomBox. Mira también la lista de defectos para ayudar al paquete Debian del que dependemos y el cuadro de mando del equipo de paquetizado de FreedomBox para ver el estado los paquetes que usamos. -
-
- Codificar - Si eres desarrollador puedes contribuir código a algún sub-proyecto de FreedomBox. Éste es el procedimiento paso a paso para contribuir código. - - - Servicio FreedomBox: un interfaz web para administrar las funciones de FreedomBox. - - - Freedom Maker: un script para construir imágenes de disco de FreedomBox para usarlas en dispositivos de hardware variados o en máquinas virtuales. - - - Puedes tomar una tarea de la Página de trabajos pendientes. Las páginas de cada proyecto contienen información acerca de acceso al código, cómo construir y listas de trabajos pendientes. -
-
- Diseño -
- Diseño de Experiencia de Usuario (UX) - Si eres diseñador de UX, puedes ayudar a FreedomBox con esto: - - - Experiencia de interacción para el interfaz web del Servicio FreedomBox. - - - Diseño web para los sitios freedombox.org, freedomboxfoundation.org y el wiki. - - - Logo y marca (actualmente tenemos un manual de identidad y logos). - - - Propuestas de diseño para casos de uso de FreedomBox sobre SBCs personalizados. - - - - Diseño de UX - - - -
-
- Diseño Técnico - FreedomBox necesita tu conocimiento técnico para elaborar planes de implementación de nuevas funcionalidades. Puedes contribuir a los debates acerca de varios aspectos de diseño técnico e implementación de FreedomBox. Mira la sección de desarrollo de los foros de discusión. -
-
-
- Donar - La FreedomBox Foundation es una corporación federal 501(c)(3) reconocida por el IRS. El proyecto FreedomBox lo llevan voluntarios. Puedes ayudar a su financiación donando mediante PayPal, Bitcoin o enviando un cheque. Mira por favor la página de donación para más detalles acerca de cómo donar. -
-
- Documentar: Manual de Usuario, Sitio Web y Wiki - FreedomBox necesita mejor documentación para usuarios y contribuyentes. El manual de FreedomBox se prepara agregando diferentes páginas del wiki y exportando a various formatos. El manual se usa en el Servicio FreedomBox y en otros sitios. - Si quieres contribuir al wiki (y por extensión al manual) de FreedomBox, puedes crear una cuenta en el wiki y empezar a editar. - Para contribuir al sitio web por favor inicia un debate en la sección de desarrollo del foro de FreedomBox. -
-
- Asegurar la Calidad - - - FreedomBox ya funciona sobre muchas plataformas y a los desarrolladores les resulta imposible probar en todas. Si tienes algún hardware soportado puedes ayudar probando FreedomBox en tu platforma. - - - Cuando se integra una nueva aplicación en FreedomBox, el desarrollador que hace el trabajo no prueba toda la functionalidad en el mundo real. Desplegar la aplicación y probarla ayudará a tener aplicaciones de alta calidad en FreedomBox. - - - Mira en la página de aseguramiento de la calidad la lista de casos de prueba que hay que verificar y la información acerca de cómo informar defectos. -
-
- Localizar (l10n) - Todo texto visible por los usuarios de FreedomBox necesita ser localizado a varios idiomas. Este trabajo de traducción incluye: - - - El Interfaz web de FreedomBox - - - La documentación de FreedomBox - - - El wiki y los sitios web de FreedomBox y la Freedombox Foundation. - - - El framework Django que emplea FreedomBox. - - - Cada aplicación que FreedomBox expone a sus usuarios. - - - Puedes contribuir al esfuerzo de localización usando la herramienta web Weblate o directamente en el repositorio de código mediante Salsa. - Si quieres ver a FreedomBox disponible en alguno de tus idiomas, por favor abre un debate en la sección de desarrollo del foro de FreedomBox para trabajar con otros traduciendo para ese idioma. - Para más información, por favor visita la página de traductores. -
-
- Correr la Voz - Cuenta a tu familia, amistades, comunidad local o en conferencias globales la importancia de FreedomBox. Para ser un proyecto exitoso necesitamos muchos más participantes, ya sean usuarios o contribuyentes. Comenta tus esfuerzos de divulgación en la página de charlas y en el wiki. -
-
-
-
- Guía del Desarrollador - El Manual del Desarrollador de FreedomBox proporciona un tutorial paso a paso para escribir apps para FreedomBox y una referencia para la API. Está disponible en docs.freedombox.org. -
-
- Cacharreo - FreedomBox consiste de 2 sub-proyectos principales: - - - El Servicio FreedomBox (Plinth), el interfaz web - - - Freedom Maker, un script para generar imágenes de disco para hardware variado - - -
- Servicio FreedomBox (Plinth) - El servicio FreedomBox (Plinth) es un interfaz web para administrar las funciones de FreedomBox. - El servicio FreedomBox es Software Libre bajo la versión 3 o posterior (a tu elección) de la Licencia Pública General GNU Affero. -
- Uso - - - El servicio FreedomBox viene instalado en todas las imágenes de FreedomBox. Puedes descargar imágenes de FreedomBox y ejecutarlas en cualquier hardware soportado. El servicio FreedomBox (Plinth) estará accesible visitando la URL o . - - - Si estás en una máquina Debian puedes instalar el servicio FreedomBox desde el archivo de paquetes de Debian. Actualmente solo se soportan Buster (estable), Bullseye (en pruebas) y Sid (inestable). Para instalar el servicio FreedomBox ejecuta: - - - - - - También puedes obtener el servicio FreedomBox en su repositorio Git o instalarlo desde el código fuente. - - -
-
- Capturas de pantalla - - - - - - - - Página Principal - - - - - - - - - - Página de Apps - - - - - - - - - - Página del Sistema - - - - - - - - - - - - Habilitar Servicios or Onion - - - - - - - - - - Newsfeed desde cualquier lugar - - - - - - - - - - Cliente Email - - - - - - - - - - - - Páginas Man - - - - - - - - - - Página Acerca de - - - - -
-
- Soporte - Puedes solicitar soporte en - - - - El foro de debate - - - - - La lista de correo - - - - - El canal IRC #freedombox - - - - - El canal Matrix FreedomBox - - - -
-
- Contribuir - Buscamos ayuda para mejorar el servicio FreedomBox. Puedes contribuir al servicio FreedomBox no solo codificando sino también traduciendo, documentando, diseñando, empaquetando o dando soporte. - - - Hay disponibles instrucciones para contribuir código. - - - El repositorio Git principal se aloja en la página de FreedomBox en Salsa. - - - Hay disponibles instrucciones para instalar desde el código fuente y modificarlo. - - - Las listas de defectos, tareas pendientes y solicitudes de funcionalidad están en el gestor de incidencias. - - - Antes de contribuir al código fuente del servicio FreedomBox necesitas entender Python y Django porque se basa en ellos. - - - Puedes solicitar asistencia al desarrollo en el foro de debate, la lista de correo o el canal de IRC #freedombox. - - -
- Paquete Debian - - - El servicio FreedomBox está empaquetado para Debian como paquete nativo y el código fuente de empaquetado es parte del código fuente del paquete principal. - - - Las incidencias relacionadas con el empaquetado se listan en el BTS de Debian. - - -
-
-
-
- Freedom Maker - Freedom Maker es un script para generar imágenes de disco FreedomBox adaptadas a diferentes dispositivos hardware o máquinas virtuales. - Actualmente Freedom Maker puede generar imágenes de disco FreedomBox para el siguiente hardware: - - - - A20-OlinuXino-LIME - - - - - A20-OlinuXino-LIME2 - - - - - A20-OLinuXino-MICRO - - - - - Banana Pro - - - - - BeagleBone - - - - - Cubieboard2 - - - - - Cubietruck - - - - - pcDuino3 - - - - - Raspberry Pi 2 - - - - - Raspberry Pi 3 Modelo B - - - - - Raspberry Pi 3 Modelo B+ - - - - - VirtualBox - - - - - QEMU - - - - Máquinas AMD64 (x86-64), máquinas X86 y otras máquinas virtuales (usando imágenes de disco en crudo (raw)) - - - Si una platforma de hardware puede ejecutar Debian no debería llevar mucho esfuerzo adaptar Freedom Maker para que le genere imágenes FreedomBox. - Freedom Maker es Software Libre licenciado bajo la versión 3 o posterior (a tu elección) de la Licencia Pública General GNU. -
- Generar Imágenes FreedomBox - - - Puedes obtener Freedom Maker desde su repositorio Git y seguir las instrucciones del fichero README para generar una imágen FreedomBox. - - -
-
- Soporte - Puedes solicitar soporte en - - - - El foro de debate - - - - La lista de correo - - - El canal IRC #freedombox - - - El canal Matrix FreedomBox - - -
-
- Contribuir - Buscamos ayuda para mejorar Freedom Maker. - - - Hay instrucciones disponibles para contribuir código fuente. - - - Freedom Maker se aloja en el Proyecto Salsa de FreedomBox. El repositorio Git principal está alojado allí. - - - Puedes contribuir a FreedomBox añadiendo soporte para más platformas de hardware. Freedom Maker se puede adaptar fácilmente a más platformas si ya soportan ejecutar Debian. - - - Puedes crear y probar imágenes con Freedom Maker regularmente para probar las funcionalidades nuevas y comprobar que no hay regresiones. - - - Las listas de defectos, tareas pendientes y solicitudes de funcionalidad están en el gestor de incidencias. - - - Puedes solicitar asistencia al desarrollo en el foro de debate, la lista de correo o el canal IRC #freedombox. - - -
-
-
-
- Cuéntaselo a tu gente - - - - FreedomBox - - - - FreedomBox en la Prensa (en) - - - Conferencias (en) - - - Cahrlas y presentaciones (en) - - - Material Disponible. Presentaciones y otros materiales en bruto. - - - - Facebook - - - - - Twitter - - - - - Mastodon - - - - - Videos de la Debconf11 - - - -
-
diff --git a/doc/manual/es/images/Backups_Step1.es.v02.png b/doc/manual/es/images/Backups_Step1.es.v02.png deleted file mode 100644 index f3073c391..000000000 Binary files a/doc/manual/es/images/Backups_Step1.es.v02.png and /dev/null differ diff --git a/doc/manual/es/images/Backups_Step1_v49.png b/doc/manual/es/images/Backups_Step1_v49.png deleted file mode 100644 index 0d3ea5c8f..000000000 Binary files a/doc/manual/es/images/Backups_Step1_v49.png and /dev/null differ diff --git a/doc/manual/es/images/Backups_Step3.es.v01.png b/doc/manual/es/images/Backups_Step3.es.v01.png deleted file mode 100644 index 955625ff3..000000000 Binary files a/doc/manual/es/images/Backups_Step3.es.v01.png and /dev/null differ diff --git a/doc/manual/es/images/Backups_Step3_v49.png b/doc/manual/es/images/Backups_Step3_v49.png deleted file mode 100644 index fbd862844..000000000 Binary files a/doc/manual/es/images/Backups_Step3_v49.png and /dev/null differ diff --git a/doc/manual/es/images/Backups_Step4.es.v02.png b/doc/manual/es/images/Backups_Step4.es.v02.png deleted file mode 100644 index 496f6d044..000000000 Binary files a/doc/manual/es/images/Backups_Step4.es.v02.png and /dev/null differ diff --git a/doc/manual/es/images/Backups_Step4_v49.png b/doc/manual/es/images/Backups_Step4_v49.png deleted file mode 100644 index a20cc3047..000000000 Binary files a/doc/manual/es/images/Backups_Step4_v49.png and /dev/null differ diff --git a/doc/manual/es/images/Backups_Step5.es.v02.png b/doc/manual/es/images/Backups_Step5.es.v02.png deleted file mode 100644 index 7e3a6d407..000000000 Binary files a/doc/manual/es/images/Backups_Step5.es.v02.png and /dev/null differ diff --git a/doc/manual/es/images/Backups_Step5_v49.png b/doc/manual/es/images/Backups_Step5_v49.png deleted file mode 100644 index 6c2b95718..000000000 Binary files a/doc/manual/es/images/Backups_Step5_v49.png and /dev/null differ diff --git a/doc/manual/es/images/Backups_Step6.es.v02.png b/doc/manual/es/images/Backups_Step6.es.v02.png deleted file mode 100644 index a543bdd77..000000000 Binary files a/doc/manual/es/images/Backups_Step6.es.v02.png and /dev/null differ diff --git a/doc/manual/es/images/Backups_Step6_v49.png b/doc/manual/es/images/Backups_Step6_v49.png deleted file mode 100644 index 841efc1a2..000000000 Binary files a/doc/manual/es/images/Backups_Step6_v49.png and /dev/null differ diff --git a/doc/manual/es/images/Backups_Step7_v49.png b/doc/manual/es/images/Backups_Step7_v49.png deleted file mode 100644 index 62b7f8019..000000000 Binary files a/doc/manual/es/images/Backups_Step7_v49.png and /dev/null differ diff --git a/doc/manual/es/images/Coturn-icon_en_V01.png b/doc/manual/es/images/Coturn-icon_en_V01.png new file mode 100644 index 000000000..1b45b6761 Binary files /dev/null and b/doc/manual/es/images/Coturn-icon_en_V01.png differ diff --git a/doc/manual/es/images/DateTime.es.png b/doc/manual/es/images/DateTime.es.png deleted file mode 100644 index dcccbea49..000000000 Binary files a/doc/manual/es/images/DateTime.es.png and /dev/null differ diff --git a/doc/manual/es/images/DateTime.png b/doc/manual/es/images/DateTime.png deleted file mode 100644 index 78958e5c2..000000000 Binary files a/doc/manual/es/images/DateTime.png and /dev/null differ diff --git a/doc/manual/es/images/Deluge-icon_en_V01.png b/doc/manual/es/images/Deluge-icon_en_V01.png new file mode 100644 index 000000000..dfad91f02 Binary files /dev/null and b/doc/manual/es/images/Deluge-icon_en_V01.png differ diff --git a/doc/manual/es/images/Firewall.es.v01.png b/doc/manual/es/images/Firewall.es.v01.png deleted file mode 100644 index 487a62cda..000000000 Binary files a/doc/manual/es/images/Firewall.es.v01.png and /dev/null differ diff --git a/doc/manual/es/images/Firewall.png b/doc/manual/es/images/Firewall.png deleted file mode 100644 index 0b3fd68e0..000000000 Binary files a/doc/manual/es/images/Firewall.png and /dev/null differ diff --git a/doc/manual/es/images/Gitweb-icon_en_V01.png b/doc/manual/es/images/Gitweb-icon_en_V01.png new file mode 100644 index 000000000..b0c00abbe Binary files /dev/null and b/doc/manual/es/images/Gitweb-icon_en_V01.png differ diff --git a/doc/manual/es/images/I2P-icon_en_V01.png b/doc/manual/es/images/I2P-icon_en_V01.png new file mode 100644 index 000000000..ef23a9d93 Binary files /dev/null and b/doc/manual/es/images/I2P-icon_en_V01.png differ diff --git a/doc/manual/es/images/Ikiwiki-icon_en_V01.png b/doc/manual/es/images/Ikiwiki-icon_en_V01.png new file mode 100644 index 000000000..c8dfe0ae5 Binary files /dev/null and b/doc/manual/es/images/Ikiwiki-icon_en_V01.png differ diff --git a/doc/manual/es/images/Infinoted-icon_en_V01.png b/doc/manual/es/images/Infinoted-icon_en_V01.png new file mode 100644 index 000000000..317f73162 Binary files /dev/null and b/doc/manual/es/images/Infinoted-icon_en_V01.png differ diff --git a/doc/manual/es/images/JSXC-KO_en_V01.png b/doc/manual/es/images/JSXC-KO_en_V01.png new file mode 100644 index 000000000..dffa7646c Binary files /dev/null and b/doc/manual/es/images/JSXC-KO_en_V01.png differ diff --git a/doc/manual/es/images/JSXC-icon_en_V01.png b/doc/manual/es/images/JSXC-icon_en_V01.png new file mode 100644 index 000000000..62b32439e Binary files /dev/null and b/doc/manual/es/images/JSXC-icon_en_V01.png differ diff --git a/doc/manual/es/images/JSXC-ok_en_V01.png b/doc/manual/es/images/JSXC-ok_en_V01.png new file mode 100644 index 000000000..cb1365110 Binary files /dev/null and b/doc/manual/es/images/JSXC-ok_en_V01.png differ diff --git a/doc/manual/es/images/MLDonkey-icon_en_V01.png b/doc/manual/es/images/MLDonkey-icon_en_V01.png new file mode 100644 index 000000000..0d2a77245 Binary files /dev/null and b/doc/manual/es/images/MLDonkey-icon_en_V01.png differ diff --git a/doc/manual/es/images/Matrix-icon_en_V01.png b/doc/manual/es/images/Matrix-icon_en_V01.png new file mode 100644 index 000000000..56fc7bc2e Binary files /dev/null and b/doc/manual/es/images/Matrix-icon_en_V01.png differ diff --git a/doc/manual/es/images/MediaWiki-icon_en_V01.png b/doc/manual/es/images/MediaWiki-icon_en_V01.png new file mode 100644 index 000000000..bae1cca6d Binary files /dev/null and b/doc/manual/es/images/MediaWiki-icon_en_V01.png differ diff --git a/doc/manual/es/images/Minetest-icon_en_V01.png b/doc/manual/es/images/Minetest-icon_en_V01.png new file mode 100644 index 000000000..85ae3cc9d Binary files /dev/null and b/doc/manual/es/images/Minetest-icon_en_V01.png differ diff --git a/doc/manual/es/images/MiniDLNA-icon_en_V01.png b/doc/manual/es/images/MiniDLNA-icon_en_V01.png new file mode 100644 index 000000000..3af61ea2a Binary files /dev/null and b/doc/manual/es/images/MiniDLNA-icon_en_V01.png differ diff --git a/doc/manual/es/images/Mumble-icon_en_V01.png b/doc/manual/es/images/Mumble-icon_en_V01.png new file mode 100644 index 000000000..c1eff5f88 Binary files /dev/null and b/doc/manual/es/images/Mumble-icon_en_V01.png differ diff --git a/doc/manual/es/images/OpenVPN-icon_en_V01.png b/doc/manual/es/images/OpenVPN-icon_en_V01.png new file mode 100644 index 000000000..26f76b652 Binary files /dev/null and b/doc/manual/es/images/OpenVPN-icon_en_V01.png differ diff --git a/doc/manual/es/images/Privoxy-icon_en_V01.png b/doc/manual/es/images/Privoxy-icon_en_V01.png new file mode 100644 index 000000000..86d6eaa40 Binary files /dev/null and b/doc/manual/es/images/Privoxy-icon_en_V01.png differ diff --git a/doc/manual/es/images/Quassel-icon_en_V02.png b/doc/manual/es/images/Quassel-icon_en_V02.png new file mode 100644 index 000000000..4bd208102 Binary files /dev/null and b/doc/manual/es/images/Quassel-icon_en_V02.png differ diff --git a/doc/manual/es/images/Quassel_Installation.png b/doc/manual/es/images/Quassel_Installation.png deleted file mode 100644 index 927ddcbc7..000000000 Binary files a/doc/manual/es/images/Quassel_Installation.png and /dev/null differ diff --git a/doc/manual/es/images/Quassel_PortForwarding.png b/doc/manual/es/images/Quassel_PortForwarding.png deleted file mode 100644 index 0559fa8f4..000000000 Binary files a/doc/manual/es/images/Quassel_PortForwarding.png and /dev/null differ diff --git a/doc/manual/es/images/Radicale-icon_en_V01.png b/doc/manual/es/images/Radicale-icon_en_V01.png new file mode 100644 index 000000000..49c1bed3b Binary files /dev/null and b/doc/manual/es/images/Radicale-icon_en_V01.png differ diff --git a/doc/manual/es/images/Roundcube-icon_en_V01.png b/doc/manual/es/images/Roundcube-icon_en_V01.png new file mode 100644 index 000000000..66a47a271 Binary files /dev/null and b/doc/manual/es/images/Roundcube-icon_en_V01.png differ diff --git a/doc/manual/es/images/Samba-icon_en_V01.png b/doc/manual/es/images/Samba-icon_en_V01.png new file mode 100644 index 000000000..6094fda41 Binary files /dev/null and b/doc/manual/es/images/Samba-icon_en_V01.png differ diff --git a/doc/manual/es/images/Searx-icon_en_V01.png b/doc/manual/es/images/Searx-icon_en_V01.png new file mode 100644 index 000000000..c4e65a667 Binary files /dev/null and b/doc/manual/es/images/Searx-icon_en_V01.png differ diff --git a/doc/manual/es/images/Security.es.png b/doc/manual/es/images/Security.es.png deleted file mode 100644 index 55cd26f94..000000000 Binary files a/doc/manual/es/images/Security.es.png and /dev/null differ diff --git a/doc/manual/es/images/Security.png b/doc/manual/es/images/Security.png deleted file mode 100644 index d59a2c091..000000000 Binary files a/doc/manual/es/images/Security.png and /dev/null differ diff --git a/doc/manual/es/images/Shadowsocks-icon_en_V01.png b/doc/manual/es/images/Shadowsocks-icon_en_V01.png new file mode 100644 index 000000000..1d0eaa067 Binary files /dev/null and b/doc/manual/es/images/Shadowsocks-icon_en_V01.png differ diff --git a/doc/manual/es/images/Sharing-icon_en_V01.png b/doc/manual/es/images/Sharing-icon_en_V01.png new file mode 100644 index 000000000..ccb5a3530 Binary files /dev/null and b/doc/manual/es/images/Sharing-icon_en_V01.png differ diff --git a/doc/manual/es/images/Syncthing-icon_en_V01.png b/doc/manual/es/images/Syncthing-icon_en_V01.png new file mode 100644 index 000000000..42c0c9fba Binary files /dev/null and b/doc/manual/es/images/Syncthing-icon_en_V01.png differ diff --git a/doc/manual/es/images/TinyTinyRSS-icon_en_V01.png b/doc/manual/es/images/TinyTinyRSS-icon_en_V01.png new file mode 100644 index 000000000..b65d03938 Binary files /dev/null and b/doc/manual/es/images/TinyTinyRSS-icon_en_V01.png differ diff --git a/doc/manual/es/images/Tor-icon_en_V01.png b/doc/manual/es/images/Tor-icon_en_V01.png new file mode 100644 index 000000000..2e42348aa Binary files /dev/null and b/doc/manual/es/images/Tor-icon_en_V01.png differ diff --git a/doc/manual/es/images/Transmission-icon_en_V01.png b/doc/manual/es/images/Transmission-icon_en_V01.png new file mode 100644 index 000000000..f09930d5c Binary files /dev/null and b/doc/manual/es/images/Transmission-icon_en_V01.png differ diff --git a/doc/manual/es/images/WireGuard-icon_en_V01.png b/doc/manual/es/images/WireGuard-icon_en_V01.png new file mode 100644 index 000000000..b68834818 Binary files /dev/null and b/doc/manual/es/images/WireGuard-icon_en_V01.png differ diff --git a/doc/manual/es/images/banana-pro.jpg b/doc/manual/es/images/banana-pro.jpg new file mode 100644 index 000000000..44746826b Binary files /dev/null and b/doc/manual/es/images/banana-pro.jpg differ diff --git a/doc/manual/es/images/bepasty-icon_en_V01.png b/doc/manual/es/images/bepasty-icon_en_V01.png new file mode 100644 index 000000000..ff37d49ef Binary files /dev/null and b/doc/manual/es/images/bepasty-icon_en_V01.png differ diff --git a/doc/manual/es/images/bepasty_logged_in_page.png b/doc/manual/es/images/bepasty_logged_in_page.png new file mode 100644 index 000000000..d7812e080 Binary files /dev/null and b/doc/manual/es/images/bepasty_logged_in_page.png differ diff --git a/doc/manual/es/images/cubieboard2.jpg b/doc/manual/es/images/cubieboard2.jpg new file mode 100644 index 000000000..69f023563 Binary files /dev/null and b/doc/manual/es/images/cubieboard2.jpg differ diff --git a/doc/manual/es/images/dreamplug.jpg b/doc/manual/es/images/dreamplug.jpg deleted file mode 100644 index f24f7d78a..000000000 Binary files a/doc/manual/es/images/dreamplug.jpg and /dev/null differ diff --git a/doc/manual/es/images/dreamplug_thumb.jpg b/doc/manual/es/images/dreamplug_thumb.jpg deleted file mode 100644 index 5c81fbd47..000000000 Binary files a/doc/manual/es/images/dreamplug_thumb.jpg and /dev/null differ diff --git a/doc/manual/es/images/ejabberd-icon_es_V01.png b/doc/manual/es/images/ejabberd-icon_es_V01.png new file mode 100644 index 000000000..4ca6156f7 Binary files /dev/null and b/doc/manual/es/images/ejabberd-icon_es_V01.png differ diff --git a/doc/manual/es/images/icons b/doc/manual/es/images/icons new file mode 120000 index 000000000..fe642783f --- /dev/null +++ b/doc/manual/es/images/icons @@ -0,0 +1 @@ +../../en/images/icons/ \ No newline at end of file diff --git a/doc/manual/es/images/orange-pi-zero.jpg b/doc/manual/es/images/orange-pi-zero.jpg new file mode 100644 index 000000000..79382ce7d Binary files /dev/null and b/doc/manual/es/images/orange-pi-zero.jpg differ diff --git a/doc/manual/es/images/performance-one-week.png b/doc/manual/es/images/performance-one-week.png new file mode 100644 index 000000000..5f5f5b8f0 Binary files /dev/null and b/doc/manual/es/images/performance-one-week.png differ diff --git a/doc/manual/es/images/quassel-client-1-connect-to-core.png b/doc/manual/es/images/quassel-client-1-connect-to-core.png deleted file mode 100644 index 6f749ccac..000000000 Binary files a/doc/manual/es/images/quassel-client-1-connect-to-core.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-10-setup-identity.png b/doc/manual/es/images/quassel-client-10-setup-identity.png deleted file mode 100644 index 172a9abe1..000000000 Binary files a/doc/manual/es/images/quassel-client-10-setup-identity.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-11-setup-network-connection.png b/doc/manual/es/images/quassel-client-11-setup-network-connection.png deleted file mode 100644 index 62e855e30..000000000 Binary files a/doc/manual/es/images/quassel-client-11-setup-network-connection.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-12-server-info.png b/doc/manual/es/images/quassel-client-12-server-info.png deleted file mode 100644 index a69a43dac..000000000 Binary files a/doc/manual/es/images/quassel-client-12-server-info.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-13-server-info-ssl.png b/doc/manual/es/images/quassel-client-13-server-info-ssl.png deleted file mode 100644 index c05043775..000000000 Binary files a/doc/manual/es/images/quassel-client-13-server-info-ssl.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-14-setup-network-connection.png b/doc/manual/es/images/quassel-client-14-setup-network-connection.png deleted file mode 100644 index ec7933f1d..000000000 Binary files a/doc/manual/es/images/quassel-client-14-setup-network-connection.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-15-quassel-main.png b/doc/manual/es/images/quassel-client-15-quassel-main.png deleted file mode 100644 index e37885b71..000000000 Binary files a/doc/manual/es/images/quassel-client-15-quassel-main.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-2-add-core-account.png b/doc/manual/es/images/quassel-client-2-add-core-account.png deleted file mode 100644 index a095d22ae..000000000 Binary files a/doc/manual/es/images/quassel-client-2-add-core-account.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-3-connect-to-core.png b/doc/manual/es/images/quassel-client-3-connect-to-core.png deleted file mode 100644 index 8853c756d..000000000 Binary files a/doc/manual/es/images/quassel-client-3-connect-to-core.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-4-untrusted-security-certficate.png b/doc/manual/es/images/quassel-client-4-untrusted-security-certficate.png deleted file mode 100644 index db86866d0..000000000 Binary files a/doc/manual/es/images/quassel-client-4-untrusted-security-certficate.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-5-untrusted-security-certificate.png b/doc/manual/es/images/quassel-client-5-untrusted-security-certificate.png deleted file mode 100644 index 2c0061bdf..000000000 Binary files a/doc/manual/es/images/quassel-client-5-untrusted-security-certificate.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-6-core-configuration-wizard.png b/doc/manual/es/images/quassel-client-6-core-configuration-wizard.png deleted file mode 100644 index e80c8aa8f..000000000 Binary files a/doc/manual/es/images/quassel-client-6-core-configuration-wizard.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-6-core-configuration-wizard_es_v01.png b/doc/manual/es/images/quassel-client-6-core-configuration-wizard_es_v01.png new file mode 100644 index 000000000..35047ec64 Binary files /dev/null and b/doc/manual/es/images/quassel-client-6-core-configuration-wizard_es_v01.png differ diff --git a/doc/manual/es/images/quassel-client-7-create-admin-user.png b/doc/manual/es/images/quassel-client-7-create-admin-user.png deleted file mode 100644 index 217db06b2..000000000 Binary files a/doc/manual/es/images/quassel-client-7-create-admin-user.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-8-select-storage-backend.png b/doc/manual/es/images/quassel-client-8-select-storage-backend.png deleted file mode 100644 index 9d20e6ac3..000000000 Binary files a/doc/manual/es/images/quassel-client-8-select-storage-backend.png and /dev/null differ diff --git a/doc/manual/es/images/quassel-client-9-welcome-wizard.png b/doc/manual/es/images/quassel-client-9-welcome-wizard.png deleted file mode 100644 index bef2a53af..000000000 Binary files a/doc/manual/es/images/quassel-client-9-welcome-wizard.png and /dev/null differ diff --git a/doc/manual/es/images/raspberry_thumb.jpg b/doc/manual/es/images/raspberry_thumb.jpg deleted file mode 100644 index 376c21550..000000000 Binary files a/doc/manual/es/images/raspberry_thumb.jpg and /dev/null differ diff --git a/doc/manual/es/images/raspberrypi.jpg b/doc/manual/es/images/raspberrypi.jpg deleted file mode 100644 index 7aeff254d..000000000 Binary files a/doc/manual/es/images/raspberrypi.jpg and /dev/null differ diff --git a/doc/manual/es/images/raspberrypi3bplus.jpg b/doc/manual/es/images/raspberrypi3bplus.jpg index 95e191050..0bc4ff9dd 100644 Binary files a/doc/manual/es/images/raspberrypi3bplus.jpg and b/doc/manual/es/images/raspberrypi3bplus.jpg differ diff --git a/doc/manual/es/images/raspberrypi3bplus_thumb.jpg b/doc/manual/es/images/raspberrypi3bplus_thumb.jpg index 7a7b504df..f5e9a73be 100644 Binary files a/doc/manual/es/images/raspberrypi3bplus_thumb.jpg and b/doc/manual/es/images/raspberrypi3bplus_thumb.jpg differ diff --git a/doc/manual/es/images/raspberrypi4b.jpg b/doc/manual/es/images/raspberrypi4b.jpg new file mode 100644 index 000000000..0763131d9 Binary files /dev/null and b/doc/manual/es/images/raspberrypi4b.jpg differ diff --git a/doc/manual/es/images/raspberrypi4b_thumb.jpg b/doc/manual/es/images/raspberrypi4b_thumb.jpg new file mode 100644 index 000000000..5896e39d6 Binary files /dev/null and b/doc/manual/es/images/raspberrypi4b_thumb.jpg differ diff --git a/doc/manual/es/images/rock64.jpg b/doc/manual/es/images/rock64.jpg new file mode 100644 index 000000000..b54537b86 Binary files /dev/null and b/doc/manual/es/images/rock64.jpg differ diff --git a/doc/manual/es/images/rock64_thumb.jpg b/doc/manual/es/images/rock64_thumb.jpg new file mode 100644 index 000000000..fa72d8b68 Binary files /dev/null and b/doc/manual/es/images/rock64_thumb.jpg differ diff --git a/doc/manual/es/images/rockpro64.jpg b/doc/manual/es/images/rockpro64.jpg new file mode 100644 index 000000000..4d757adc7 Binary files /dev/null and b/doc/manual/es/images/rockpro64.jpg differ diff --git a/doc/manual/es/images/rockpro64_thumb.jpg b/doc/manual/es/images/rockpro64_thumb.jpg new file mode 100644 index 000000000..b6a01aa6c Binary files /dev/null and b/doc/manual/es/images/rockpro64_thumb.jpg differ diff --git a/doc/manual/es/images/snapshots.png b/doc/manual/es/images/snapshots.png deleted file mode 100644 index 21e97959b..000000000 Binary files a/doc/manual/es/images/snapshots.png and /dev/null differ diff --git a/doc/manual/es/images/snapshots_v2.png b/doc/manual/es/images/snapshots_v2.png new file mode 100644 index 000000000..170d29039 Binary files /dev/null and b/doc/manual/es/images/snapshots_v2.png differ diff --git a/doc/manual/es/images/upgrades.es.v01.png b/doc/manual/es/images/upgrades.es.v01.png deleted file mode 100644 index fb77728cf..000000000 Binary files a/doc/manual/es/images/upgrades.es.v01.png and /dev/null differ diff --git a/doc/manual/es/images/upgrades.png b/doc/manual/es/images/upgrades.png deleted file mode 100644 index 73db78022..000000000 Binary files a/doc/manual/es/images/upgrades.png and /dev/null differ diff --git a/doc/manual/es/pcDuino3.raw.wiki b/doc/manual/es/pcDuino3.raw.wiki new file mode 100644 index 000000000..a5eea2965 --- /dev/null +++ b/doc/manual/es/pcDuino3.raw.wiki @@ -0,0 +1,52 @@ +== pcDuino3 == + +{{attachment:pcduino3s.jpg|LinkSprite pcDuino3S|width=682,height=310}} + +[[https://www.linksprite.com/linksprite-pcduino3s/|LinkSprite pcDuino3S]] is a single board computer running on Allwinner A20 and sold with a good case. !FreedomBox images are built and tested for this device. + +Note: The !FreedomBox logo is simply a sticker on top of device brought from store. + +'''Important:''' Read [[FreedomBox/Hardware|general advice]] about hardware before building a !FreedomBox with this single board computer. + + +=== Similar Hardware === + +Although untested, the following similar hardware is also likely to work well with !FreedomBox. + + * [[https://www.linksprite.com/linksprite-pcduino3/]] also covers pcDuino3B + +=== Download === + +!FreedomBox disk [[FreedomBox/Download|images]] for this hardware are available. Follow the instructions on the [[FreedomBox/Download|download]] page to create a !FreedomBox SD card, USB disk, SSD or hard drive and boot into !FreedomBox. Pick the image meant for pcduino3. + +An alternative to downloading these images is to [[InstallingDebianOn/Allwinner|install Debian]] on the APU and then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it. + +=== Availability === + + * Price: 89 USD + * [[http://store.linksprite.com/pcduino3s-a20-single-board-computer-no-power-supply-or-hdmi-cable/|LinkSprite]] + * [[http://www.linksprite.com/buy-2/|Full list of suppliers]] + +=== Hardware === + + * Open Hardware: No + * CPU: !AllWinner A20 SoC, 1GHz ARM Cortex A7 Dual Core + * RAM: 1 GB + * Storage: SD card, 4 GB onboard flash + * Architecture: armhf + * Ethernet: 10/100 Mbps + * !WiFi: Built-in WiFi requires non-free firmware, use a [[FreedomBox/Hardware/USBWiFi|USB WiFi device]] instead + * SATA: 1 SATA host socket + +=== Non-Free Status === + + * Non-free blobs required: No + * !WiFi: Requires non-free firmware + * Boot Firmware: [[https://linux-sunxi.org/BROM|BROM]] (GPLV2+) + +## END_INCLUDE + +<> + +---- +CategoryFreedomBox diff --git a/doc/scripts/fixes.xslt b/doc/scripts/fixes.xslt deleted file mode 100644 index e0206ba54..000000000 --- a/doc/scripts/fixes.xslt +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pt - - - - - - - images/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/scripts/manual-page-fixes.xslt b/doc/scripts/manual-page-fixes.xslt deleted file mode 100644 index a9c713bb4..000000000 --- a/doc/scripts/manual-page-fixes.xslt +++ /dev/null @@ -1,84 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - pt - - - - - - - images/ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/scripts/post-processor b/doc/scripts/post-processor deleted file mode 100755 index a97be25d5..000000000 --- a/doc/scripts/post-processor +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/python3 -# SPDX-License-Identifier: AGPL-3.0-or-later - -import argparse -import xml.etree.ElementTree as etree - - -def parse_arguments(): - """Return parsed command line arguments as dictionary.""" - parser = argparse.ArgumentParser() - subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') - - subparser = subparsers.add_parser( - 'remove-footer', help='Remove footer from the XML document') - subparser.add_argument('filename', help='Name of the XML file') - - subparser = subparsers.add_parser('fix-wiki-urls', - help='Fix wrongly formatted wiki urls') - subparser.add_argument('filename', help='Name of the Docbook file') - - subparsers.required = True - return parser.parse_args() - - -def subcommand_fix_wiki_urls(arguments): - file_name = arguments.filename - page_name = file_name.split('.')[0] - - with open(file_name, 'r') as xml_file: - lines = xml_file.readlines() - - pattern = f'FreedomBox/Manual/{page_name}/FreedomBox' - lines = list(map(lambda s: s.replace(pattern, 'FreedomBox'), lines)) - - with open(file_name, 'w') as xml_file: - xml_file.writelines(lines) - - -def subcommand_remove_footer(arguments): - """Remove the footer template from the given wiki page.""" - filename = arguments.filename - tree = etree.parse(filename) - root = tree.getroot() - - # The footer will always be in the last
- def find_last_section(elem): - if len(elem): - last_element = elem[-1] - if last_element.tag == 'section': - return find_last_section(last_element) - return elem - - last_section = find_last_section(root) - - if len(last_section): - # Remove all elements till is reached - while last_section[-1].tag != 'informaltable': - last_section.remove(last_section[-1]) - # remove itself - last_section.remove(last_section[-1]) - - # Remove the line "Back to Features introduction or manual pages." - if last_section[-1].text.startswith('Back to'): - last_section.remove(last_section[-1]) - - processed_xml = etree.tostring(root, encoding='utf-8').decode() - - with open(filename, 'r') as xml_file: - # and elements which etree skips - header = xml_file.readlines()[:2] - - with open(filename, 'w') as xml_file: - xml_file.writelines(header) - xml_file.write(processed_xml) - - -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() diff --git a/doc/scripts/test-wikiparser b/doc/scripts/test-wikiparser new file mode 100755 index 000000000..e5793a749 --- /dev/null +++ b/doc/scripts/test-wikiparser @@ -0,0 +1,9 @@ +#!/bin/bash +# SPDX-License-Identifier: AGPL-3.0-or-later + +for var in "$@" +do + gen=$(python3 scripts/wikiparser.py "$var" --begin-marker='## BEGIN_INCLUDE' --end-marker='## END_INCLUDE' | xmllint --format -) + orig=$(xmllint --format "${var//.raw.wiki/.xml}" ) + diff --ignore-all-space <(echo "$gen") <(echo "$orig") +done diff --git a/doc/scripts/wikiparser.py b/doc/scripts/wikiparser.py new file mode 100755 index 000000000..d723264a5 --- /dev/null +++ b/doc/scripts/wikiparser.py @@ -0,0 +1,2078 @@ +#!/usr/bin/python3 +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +MoinMoin wiki parser +""" + +import logging +import re +import urllib +from enum import Enum +from pathlib import Path +from xml.sax.saxutils import escape + +BASE_URL = 'https://wiki.debian.org/' +LOCAL_BASE = '/plinth/help/manual/{lang}/' +ICONS_DIR = 'icons' + +DEFAULT_LANGUAGE = 'en' +# List of language codes for provided translations +LANGUAGES = ('en', 'es') + +WIKI_ICONS = { + '/!\\': 'alert', + '(./)': 'checkmark', + '{X}': 'icon-error', + '{i}': 'icon-info', + '{o}': 'star_off', + '{*}': 'star_on', +} + + +class Element: + """Represents an element of a MoinMoin wiki page.""" + + def __repr__(self, *args): + rep = self.__class__.__name__ + '(' + if args: + rep += repr(args[0]) + + for arg in args[1:]: + rep += ', ' + repr(arg) + + rep += ')' + return rep + + def to_docbook(self, context=None): + return '<' + self.__class__.__name__ + '/>' + + +class Heading(Element): + + def __init__(self, level, content): + self.level = min(level, 5) + self.content = content + + def __repr__(self): + return super().__repr__(self.level, self.content) + + def to_docbook(self, context=None): + return f'{escape(self.content)}' + + +class TableOfContents(Element): + + def __init__(self, max_level=None): + self.max_level = max_level + + def __repr__(self): + if self.max_level: + return super().__repr__(self.max_level) + else: + return super().__repr__() + + def to_docbook(self, context=None): + return '' + + +class Text(Element): + + def __init__(self, content): + self.content = content + + def __repr__(self): + return super().__repr__(self.content) + + def to_docbook(self, context=None): + return escape(self.content) + + +class PlainText(Text): + pass + + +class Url(Text): + + def to_docbook(self, context=None): + return f'' + + +class ItalicText(Text): + + def to_docbook(self, context=None): + xml = ''.join([item.to_docbook() for item in self.content]) + return f'{xml}' + + +class BoldText(Text): + + def to_docbook(self, context=None): + xml = ''.join([item.to_docbook() for item in self.content]) + return f'{xml}' + + +class MonospaceText(Text): + + def to_docbook(self, context=None): + return f'{escape(self.content)}' + + +class CodeText(Text): + + def to_docbook(self, context=None): + if context and 'in_paragraph' in context and context['in_paragraph']: + return f'{escape(self.content)}' + else: + return f'' + + +class UnderlineText(Text): + + def to_docbook(self, context=None): + return f'{escape(self.content)}' + + +class SmallerTextWarning(Element): + + def to_docbook(self, context=None): + return '' + + +class Paragraph(Element): + + def __init__(self, content, indent=0): + self.content = content + self.indent = indent + + def __repr__(self): + if self.indent: + rep = super().__repr__(self.content, self.indent) + else: + rep = super().__repr__(self.content) + return rep + + def add_content(self, content): + self.content += content + + def to_docbook(self, context=None): + if context is not None: + context['in_paragraph'] = True + + items_xml = [item.to_docbook(context) for item in self.content] + if context is not None: + context['in_paragraph'] = False + + try: + xml = items_xml.pop(0) + except IndexError: + xml = '' + + for item_xml in items_xml: + xml += item_xml + + return f'{xml}' + + +class Link(Element): + + def __init__(self, target, text=None, params=None): + self.target = target + self.text = text + self.params = params + + def __repr__(self): + if self.text and self.params: + rep = super().__repr__(self.target, self.text, self.params) + elif self.text: + rep = super().__repr__(self.target, self.text) + else: + rep = super().__repr__(self.target) + return rep + + def to_docbook(self, context=None): + target = escape(resolve_url(self.target, context)) + link_text = '' + if self.text: + for element in self.text: + link_text += element.to_docbook(context) + + if target.startswith('#'): + xml = f'{link_text}' + else: + xml = f'{link_text}' + + return xml + + +class EmbeddedLink(Link): + pass + + +class EmbeddedAttachment(EmbeddedLink): + + def __init__(self, target, text=None, params=None, context=None): + self.page_title = context.get('title', None) if context else None + if not text: + text = [PlainText(target)] + + super().__init__(target, text, params) + + def to_docbook(self, context=None): + if self.page_title: + target = BASE_URL + self.page_title \ + + '?action=AttachFile&do=get&target=' \ + + escape(self.target) + else: + target = escape(self.target) + + xml = '' + xml += '' + return xml + + +class ListType(Enum): + PLAIN = 1 + BULLETED = 2 + NUMBERED = 3 + SPACED = 4 + + +class List(Element): + + def __init__(self, list_type=ListType.PLAIN, items=None): + if isinstance(list_type, str): + if list_type == 'plain': + self.list_type = ListType.PLAIN + elif list_type == 'bulleted': + self.list_type = ListType.BULLETED + elif list_type == 'numbered': + self.list_type = ListType.NUMBERED + else: + self.list_type = ListType.SPACED + else: + self.list_type = list_type + + self.items = items or [] + + def __repr__(self): + if self.list_type == ListType.PLAIN: + list_type = 'plain' + elif self.list_type == ListType.BULLETED: + list_type = 'bulleted' + elif self.list_type == ListType.NUMBERED: + list_type = 'numbered' + else: + list_type = 'spaced' + + return super().__repr__(list_type, self.items) + + def add_item(self, item): + self.items.append(item) + + def to_docbook(self, context=None): + if self.list_type == ListType.PLAIN: + xml = '' + elif self.list_type == ListType.BULLETED: + xml = '' + elif self.list_type == ListType.NUMBERED: + xml = '' + else: + xml = '' + + for item in self.items: + xml += item.to_docbook(context) + + if self.list_type == ListType.PLAIN: + xml += '' + elif self.list_type == ListType.BULLETED: + xml += '' + elif self.list_type == ListType.NUMBERED: + xml += '' + else: + xml += '' + + return xml + + +class HorizontalRule(Element): + + def __init__(self, dashes): + self.dashes = dashes + + def __repr__(self): + return super().__repr__(self.dashes) + + def to_docbook(self, context=None): + return '' + + +class TableItem(Element): + + def __init__(self, content=None, align=None): + self.content = content + self.align = align + + def __repr__(self): + if self.content and self.align: + rep = super().__repr__(self.content, self.align) + elif self.content: + rep = super().__repr__(self.content) + else: + rep = super().__repr__() + + return rep + + def to_docbook(self, context=None): + if self.align: + align = f'align="{self.align}" ' + else: + align = '' + + if self.content: + xml = f'' + for item in self.content: + xml += item.to_docbook(context) + xml += '' + + else: + xml = f'' + + return xml + + +class TableRow(Element): + + def __init__(self, items): + self.items = items + + def __len__(self): + return len(self.items) + + def __repr__(self): + return super().__repr__(self.items) + + def to_docbook(self, context=None): + xml = '' + for item in self.items: + xml += item.to_docbook(context) + xml += '' + return xml + + +class Table(Element): + + def __init__(self, rows, style=None): + self.rows = rows + self.style = style + + def __repr__(self): + if self.style: + rep = super().__repr__(self.rows, self.style) + else: + rep = super().__repr__(self.rows) + return rep + + def to_docbook(self, context=None): + cols = len(self.rows[0]) if self.rows else 0 + xml = f'' + for number in range(cols): + xml += f'' + xml += '' + for row in self.rows: + xml += row.to_docbook(context) + xml += '' + return xml + + +class Include(Element): + + def __init__(self, page, from_marker=None, to_marker=None): + self.page = page + self.from_marker = from_marker + self.to_marker = to_marker + + def __repr__(self): + if self.from_marker and self.to_marker: + rep = super().__repr__(self.page, self.from_marker, self.to_marker) + elif self.to_marker: + rep = super().__repr__(self.page, self.to_marker) + else: + rep = super().__repr__(self.page) + return rep + + def to_docbook(self, context=None): + if context and 'path' in context: + include_folder = context['path'].parent + else: + include_folder = Path('.') + + include_file = include_folder / Path( + self.page.split('/')[-1] + '.raw.wiki') + if not include_file.exists(): + logging.warning('Included page not found:' + str(include_file)) + return '' + + with include_file.open() as wiki_file: + wiki_text = wiki_file.read() + + context = get_context(include_file, self.page) + parsed_wiki = parse_wiki(wiki_text, context, self.from_marker, + self.to_marker) + return generate_inner_docbook(parsed_wiki, context) + + +class Admonition(Element): + + def __init__(self, style, content): + self.style = style + self.content = content + + def __repr__(self): + return super().__repr__(self.style, self.content) + + def to_docbook(self, context=None): + if self.style == 'comment': + return '' + + xml = '<' + self.style + '>' + item_xml = [item.to_docbook(context) for item in self.content] + xml += ' '.join(item_xml) + '' + return xml + + +class Comment(Text): + + def to_docbook(self, context=None): + item_xml = [item.to_docbook(context) for item in self.content] + xml = ' '.join(item_xml) + return f'{xml}' + + +class BeginInclude(Element): + + def to_docbook(self, context=None): + return '' + + +class EndInclude(Element): + + def to_docbook(self, context=None): + return '' + + +class Category(Element): + + def __init__(self, name): + self.name = name + + def __repr__(self): + return super().__repr__(self.name) + + def to_docbook(self, context=None): + return '' + + +class Anchor(Element): + + def __init__(self, name): + self.name = name + + def __repr__(self): + return super().__repr__(self.name) + + def to_docbook(self, context=None): + return f'' + + +def get_url_text(url): + """Return text to assign to URLs if not provided.""" + if re.match(r'[A-Za-z]+://', url) or url.startswith('#'): + return None + + if re.match(r'[A-Za-z]+:', url): + return url.partition(':')[2] + + return url + + +def convert_image_units(value): + """Covert wiki image units to docbook image units.""" + value = int(value) + value = value / 2.0 if value % 2 else int(value / 2) + return str(value) + 'pt' + + +def map_local_files(path): + """Map files to locally existing paths.""" + if 'target=' in path: + path = path.partition('target=')[2] + + if path.startswith('icons/'): + pass + elif '/' in path: + path = path.rsplit('/', maxsplit=1)[1] + + return f'images/{path}' + + +def resolve_url(url, context): + """Expand a URL into a full path. + + XXX: Links inside the included pages are resolved properly. However, + without the original path of a page, links in page can't always be resolved + correctly. Preserve the original path information. + + + Return these urls unmodified: + ----------------------------- + + >>> resolve_url('http://tst.me', {'language': '', 'title': ''}) + 'http://tst.me' + + >>> resolve_url('https://tst.me', {'language': '', 'title': ''}) + 'https://tst.me' + + >>> resolve_url('mailto:tst.me', {'language': '', 'title': ''}) + 'mailto:tst.me' + + >>> resolve_url('irc://etc', {'language': '', 'title': ''}) + 'irc://etc' + + >>> resolve_url('#tst', {'language': '', 'title': ''}) + '#tst' + + Detect and resolve Keyword-protocolled urls: + -------------------------------------------- + + >>> resolve_url('attachment:tst', {'language': '', 'title': ''}) + 'tst' + + >>> resolve_url('attachment:tst', {'language': '', 'title': 'here'}) + 'https://wiki.debian.org/here?action=AttachFile&do=get&target=tst' + + >>> resolve_url('DebianBug:tst', {'language': '', 'title': ''}) + 'https://bugs.debian.org/tst#' + + >>> resolve_url('DebianPkg:tst', {'language': '', 'title': ''}) + 'https://packages.debian.org/tst#' + + >>> resolve_url('AliothList:tst', {'language': '', 'title': ''}) + 'https://lists.alioth.debian.org/mailman/listinfo/tst#' + + Relative links: + --------------- + + >>> resolve_url('../../back', {'language': '', 'title': 'here/skip_me/A'}) + 'https://wiki.debian.org/here/back#' + + >>> resolve_url('/sub', {'language': '', 'title': 'A'}) + 'https://wiki.debian.org/A/sub#' + + FreedomBox urls: + ---------------- + + Locally unavailable => send to online help (wiki): + >>> resolve_url('FreedomBox/unavailable', {'language': '', 'title': ''}) + 'https://wiki.debian.org/FreedomBox/unavailable#' + + Locally available page in default language => shortcut to local copy: + >>> resolve_url('FreedomBox/Contribute', {'language': '', 'title': ''}) + '/plinth/help/manual/en/Contribute#' + + Translated available page => shortcut to local copy: + >>> resolve_url('es/FreedomBox/Contribute', {'language': '', 'title': ''}) + '/plinth/help/manual/es/Contribute#' + + Available page in default language refferred as translated => shortcut to + local copy: + >>> resolve_url('en/FreedomBox/Contribute', {'language': '', 'title': ''}) + '/plinth/help/manual/en/Contribute#' + + Unrecognized language => handle considering it as default language: + >>> resolve_url('missing/FreedomBox/Contribute', {'language': '', \ + 'title': ''}) + '/plinth/help/manual/en/Contribute#' + """ + + # Process first all easy, straight forward cases: + + if re.match(r'https?://', url) or url.startswith('mailto:') or \ + url.startswith('irc://'): + return url + + if url.startswith('#'): + return url + + if url.startswith('attachment:'): + target = url[len('attachment:'):] + page_title = context.get('title') if context else None + if page_title: + target = f'{BASE_URL}{page_title}?action=AttachFile&do=get&' + \ + urllib.parse.urlencode({'target': target}) + return target + + if url.startswith('DebianBug:'): + target = url[len('DebianBug:'):] + return f'https://bugs.debian.org/{target}#' + + if url.startswith('DebianPkg:'): + target = url[len('DebianPkg:'):] + return f'https://packages.debian.org/{target}#' + + if url.startswith('AliothList:'): + target = url[len('AliothList:'):] + return f'https://lists.alioth.debian.org/mailman/listinfo/{target}#' + + # Intermediate step(s) for relative links: + if url.startswith('../'): + page_title = context.get('title', '') if context else '' + while url.startswith('../'): + url = url[3:] + page_title = page_title.rpartition('/')[0] + url = f'{page_title}/{url}' + elif url.startswith('/'): + page_title = context.get('title', '') if context else '' + url = url.lstrip('/') + url = f'{page_title}/{url}' + + # Shortcut url to local copy if available: + if re.match(r'(?:[a-zA-Z_-]+/)?FreedomBox/', url): + # Digest URL + link_parts = url.split('/') + link_page = link_parts[-1] + + # Identify language of link target + link_language = link_parts[0] + if link_language not in LANGUAGES: + link_language = DEFAULT_LANGUAGE + + # Check for local file and use local path + file_ = Path(f'manual/{link_language}') / (link_page + '.raw.wiki') + if file_.exists(): + help_base = LOCAL_BASE.format(lang=link_language) + url = f'{help_base}{link_page}' + else: + url = f'{BASE_URL}{url}' + else: + url = f'{BASE_URL}{url}' + + # Match the behavior of DocBook exporter that appends # at the end of a URL + # that does not have it. + if '#' not in url: + url = url + '#' + + return url + + +def split_formatted(text, delimiter, end_delimiter=None): + """ + Split formatted text marked by delimiter, if it is found at beginning. + A distinct end delmiter can be specified, or it is same as delimiter. + Return (formatted_text, remaining_text) if it is found. + Return (None, text) otherwise. + """ + end_delimiter = end_delimiter or delimiter + content = None + if text.startswith(delimiter): + text = text[len(delimiter):] + end = text.find(end_delimiter) + content = text[:end] + text = text[end:][len(end_delimiter):] + + return (content, text) + + +def parse_text(line, context=None, parse_links=True): + """ + Parse a line of MoinMoin wiki text. + Returns a list of objects representing text. + """ + result = [] + while line: + # Icons + for icon_text, icon_name in WIKI_ICONS.items(): + if line.lstrip().startswith(icon_text): + target = f'{ICONS_DIR}/{WIKI_ICONS[line.strip()]}.png' + result.append( + EmbeddedAttachment(target, [PlainText(icon_text)], + 'height=26')) + line = line.lstrip().replace(icon_text, '', 1) + break + + # Smaller text + content, line = split_formatted(line, '~-', '-~') + if content: + result.append(SmallerTextWarning()) + line = content + line + # continue processing line + + # Bold text + content, line = split_formatted(line, "'''") + if content: + result.append(BoldText(parse_text(content, context))) + continue + + # Italic text + content, line = split_formatted(line, "''") + if content: + result.append(ItalicText(parse_text(content, context))) + continue + + # Monospace text + content, line = split_formatted(line, '`') + if content: + result.append(MonospaceText(content)) + continue + + # Code text + content, line = split_formatted(line, '{{{', '}}}') + if content: + result.append(CodeText(content)) + continue + + # Underline text + content, line = split_formatted(line, '__') + if content: + result.append(UnderlineText(content)) + continue + + # Links + content, line = split_formatted(line, '[[', ']]') + if content: + target, _, remaining = content.partition('|') + target = target.strip() + text = get_url_text(target) + if remaining: + # Handle embedded attachments inside links + if '{{' in remaining and '}}' in remaining: + index = remaining.find('}}') + text = remaining[:index + 1] + remaining = remaining[index + 2:] + more_text, _, remaining = remaining.partition('|') + text += more_text + else: + text, _, remaining = remaining.partition('|') + + if text: + text = text.strip() + text = parse_text(text, parse_links=False) + + params = None + if remaining: + params, _, remaining = remaining.partition('|') + + link = Link(target, text, params) + result.append(link) + continue + + # Embedded + content, line = split_formatted(line, '{{', '}}') + if content: + target, _, remaining = content.partition('|') + text = None + if remaining: + # Handle embedded attachments inside links + if '{{' in remaining and '}}' in remaining: + index = remaining.find('}}') + text = remaining[:index + 1] + remaining = remaining[index + 2:] + more_text, _, remaining = remaining.partition('|') + text += more_text + else: + text, _, remaining = remaining.partition('|') + + text = parse_text(text.strip(), parse_links=False) + + params = None + if remaining: + params, _, remaining = remaining.partition('|') + + if target.startswith('attachment:'): + link = EmbeddedAttachment(target[11:], text, params, context) + else: + link = EmbeddedLink(target, text, params) + + result.append(link) + continue + + # Plain text and URLs + content = re.split(r"''|`|{{|__|\[\[", line)[0] + if content: + line = line.replace(content, '', 1) + result += parse_plain_text(content, parse_links=parse_links) + continue + + break + + return result + + +def parse_plain_text(content, parse_links=True): + """Parse a line or plain text and generate plain text and URL objects.""" + result = [] + while content: + wiki_link_match = re.search( + r'(?: |^)([A-Z][a-z0-9]+([A-Z][a-z0-9]+)+)(?: |$)', content) + link_match = re.search(r'(https?://[^<> ]+[^<> .:\(\)])', content) + if parse_links and link_match and link_match.span(0)[0] == 0: + link = link_match.group(1) + result.append(Url(link)) + content = content[link_match.span(1)[1]:] + elif parse_links and wiki_link_match and wiki_link_match.span( + 0)[0] == 0: + link = wiki_link_match.group(1) + result.append(Link(link, [PlainText(link)])) + content = content[wiki_link_match.span(1)[1]:] + else: + end = None + if parse_links and link_match: + end = link_match.span(1)[0] + + if parse_links and wiki_link_match: + end = wiki_link_match.span(1)[0] + + text = content[:end] + + # Replace occurrences of !WikiText with WikiText + text = re.sub(r'([^A-Za-z]|^)!', r'\g<1>', text) + + result.append(PlainText(text)) + + if end: + content = content[end:] + else: + break + + return result + + +def parse_table_row(line, context=None): + """Parse a line of MoinMoin wiki text. Returns a TableRow.""" + row_cells = re.split(r'\|\|', line)[1:-1] + row_items = [] + for cell in row_cells: + content = cell + if content.strip(): + # remove that was already processed + content = re.sub(']+>', '', content) + align = None + match = re.match(']+)>', content) + if match: + style = match.group(1) + if 'text-align: center' in style: + align = 'center' + + # remove + content = re.sub(']+>', '', content) + + paragraphs = content.split('<
>') + paragraphs = [ + Paragraph(parse_text(paragraph, context)) + for paragraph in paragraphs + ] + row_items.append(TableItem(paragraphs, align)) + else: + row_items.append(TableItem()) + + return TableRow(row_items) + + +def parse_list(list_data, context=None): + """Parse a list of (list_type, indent, content) tuples representing a + MoinMoin wiki list. Returns a List and list of any remaining data. + """ + if not list_data: + return None, list_data + + list_type = list_data[0][0] + current_level = list_data[0][1] + parsed_list = List(list_type) + override_marker = (list_type in (ListType.PLAIN, ListType.SPACED)) + while list_data: + level = list_data[0][1] + if level > current_level: + new_list, list_data = parse_list(list_data, context) + if new_list: + parsed_list.items[-1].add_content(new_list) + + elif level < current_level: + break + + else: + content = list_data.pop(0)[2] + new_content = '' + in_code_block = False + for line in content.splitlines(True): + if line.startswith(' ' * current_level) and not in_code_block: + line = line[current_level:] + + if line.strip().startswith('{{{'): + in_code_block = True + elif line.strip().startswith('}}}'): + in_code_block = False + + new_content += line + + parsed_list.add_item( + ListItem(parse_wiki(new_content, context), + override_marker=override_marker)) + + return parsed_list, list_data + + +def parse_multiline_codetext(starting_line, pending_lines): + """Purpose: Parse a multiline preformatted text. + + Design.: + Since preformatted texts and admonitions share the same mark + ('{{{') we need to discard these. + + Intendedly ignores single-line preformatted texts. + + Reads remaining lines until end of codetext. + + Returns the parsed CodeText and the remaining lines. + """ + if starting_line.strip().startswith('{{{') and '}}}' not in starting_line: + is_admonition = re.match(r'{{{#!wiki\s(.*)', starting_line) + if not is_admonition: + texts = [] + while pending_lines: + line = pending_lines.pop(0) + if line.strip().startswith('}}}'): + break + else: + texts.append(line) + + return CodeText('\n'.join(texts)), pending_lines + + return None, pending_lines + + +def parse_multiline_wiki_admonition(starting_line, pending_lines, context): + """Purpose: Parse a multiline wiki admonition. + + Design.: + Intendedly ignores single-line wiki admonitions. + + Reads remaining lines until end of codetext. + + Returns the parsed admonition and the remaining lines. + """ + if starting_line.strip().startswith('{{{') and '}}}' not in starting_line: + admonition = re.match(r'{{{#!wiki\s(.*)', starting_line) + if admonition: + lines = [] + while pending_lines: + line = pending_lines.pop(0) + if line == '}}}': + break + + lines.append(line) + + style = admonition.group(1) + content = parse_wiki('\n'.join(lines), context) + return Admonition(style, content), pending_lines + + return None, pending_lines + + +def parse_wiki(text, context=None, begin_marker=None, end_marker=None): + """Parse MoinMoin wiki text. Returns a list of Elements. + + >>> parse_wiki('') + [] + + >>> parse_wiki('<>') + [TableOfContents()] + >>> parse_wiki('<>') + [TableOfContents()] + >>> parse_wiki('<>') + [TableOfContents(2)] + + >>> parse_wiki('= heading 1st level =') + [Heading(1, 'heading 1st level')] + >>> parse_wiki('===== heading 5th level =====') + [Heading(5, 'heading 5th level')] + + >>> parse_wiki('plain text') + [Paragraph([PlainText('plain text ')])] + >>> parse_wiki(' plain multispaced text ') + [List('spaced', [ListItem([Paragraph([PlainText(\ +'plain multispaced text ')])])])] + >>> parse_wiki('https://freedombox.org') + [Paragraph([Url('https://freedombox.org'), PlainText(' ')])] + >>> parse_wiki("''italic''") + [Paragraph([ItalicText([PlainText('italic')]), PlainText(' ')])] + >>> parse_wiki("'''bold'''") + [Paragraph([BoldText([PlainText('bold')]), PlainText(' ')])] + >>> parse_wiki("normal text followed by '''bold text'''") + [Paragraph([PlainText('normal text followed by '), \ +BoldText([PlainText('bold text')]), PlainText(' ')])] + >>> parse_wiki('`monospace`') + [Paragraph([MonospaceText('monospace'), PlainText(' ')])] + >>> parse_wiki('``not-monospace``') + [Paragraph([PlainText('not-monospace'), PlainText(' ')])] + >>> parse_wiki('{{{code}}}') + [Paragraph([CodeText('code'), PlainText(' ')])] + >>> parse_wiki('__underline__') + [Paragraph([UnderlineText('underline'), PlainText(' ')])] + >>> parse_wiki('~-smaller text-~') + [Paragraph([SmallerTextWarning(), PlainText('smaller text ')])] + >>> parse_wiki('!FreedomBox') + [Paragraph([PlainText('FreedomBox ')])] + >>> parse_wiki('making a point!') + [Paragraph([PlainText('making a point! ')])] + >>> parse_wiki('Back to [[FreedomBox/Manual|manual]] page.') + [Paragraph([PlainText('Back to '), Link('FreedomBox/Manual', \ +[PlainText('manual')]), PlainText(' page. ')])] + >>> parse_wiki('[[FreedomBox/Manual]]') + [Paragraph([Link('FreedomBox/Manual', [PlainText('FreedomBox/Manual')]), \ +PlainText(' ')])] + >>> parse_wiki('[[attachment:Searx.webm|Searx installation and first steps\ +|&do=get]]') + [Paragraph([Link('attachment:Searx.webm', \ +[PlainText('Searx installation and first steps')], '&do=get'), \ +PlainText(' ')])] + >>> parse_wiki('[[https://onionshare.org/|Onionshare]]') + [Paragraph([Link('https://onionshare.org/', [PlainText('Onionshare')]), \ +PlainText(' ')])] + + >>> parse_wiki('/!\\\\') + [Paragraph([EmbeddedAttachment('icons/alert.png', \ +[PlainText('/!\\\\')], 'height=26'), PlainText(' ')])] + >>> parse_wiki('(./)') + [Paragraph([EmbeddedAttachment('icons/checkmark.png', \ +[PlainText('(./)')], 'height=26'), PlainText(' ')])] + >>> parse_wiki('{X}') + [Paragraph([EmbeddedAttachment('icons/icon-error.png', \ +[PlainText('{X}')], 'height=26'), PlainText(' ')])] + >>> parse_wiki('{i}') + [Paragraph([EmbeddedAttachment('icons/icon-info.png', \ +[PlainText('{i}')], 'height=26'), PlainText(' ')])] + >>> parse_wiki('{o}') + [Paragraph([EmbeddedAttachment('icons/star_off.png', \ +[PlainText('{o}')], 'height=26'), PlainText(' ')])] + >>> parse_wiki('{*}') + [Paragraph([EmbeddedAttachment('icons/star_on.png', \ +[PlainText('{*}')], 'height=26'), PlainText(' ')])] + + >>> parse_wiki('{{attachment:cockpit-enable.png}}') + [Paragraph([EmbeddedAttachment('cockpit-enable.png', \ +[PlainText('cockpit-enable.png')]), PlainText(' ')])] + >>> parse_wiki('{{attachment:Backups_Step1_v49.png|Backups: Step 1|\ +width=800}}') + [Paragraph([EmbeddedAttachment('Backups_Step1_v49.png', \ +[PlainText('Backups: Step 1')], 'width=800'), PlainText(' ')])] + + >>> parse_wiki(' * single item') + [List('bulleted', [ListItem([Paragraph([PlainText('single item ')])])])] + >>> parse_wiki(' * first item\\n * second item') + [List('bulleted', [ListItem([Paragraph([PlainText('first item ')])]), \ +ListItem([Paragraph([PlainText('second item ')])])])] + >>> parse_wiki('text to introduce\\n * a list') + [Paragraph([PlainText('text to introduce ')]), \ +List('bulleted', [ListItem([Paragraph([PlainText('a list ')])])])] + >>> parse_wiki(' . first item\\n . second item') + [List('plain', [ListItem([Paragraph([PlainText('first item ')])]), \ +ListItem([Paragraph([PlainText('second item ')])])])] + >>> parse_wiki(' * item 1\\n * item 1.1') + [List('bulleted', [ListItem([Paragraph([PlainText('item 1 ')]), \ +List('bulleted', [ListItem([Paragraph([PlainText('item 1.1 ')])])])])])] + >>> parse_wiki(' 1. item 1\\n 1. item 1.1') + [List('numbered', [ListItem([Paragraph([PlainText('item 1 ')]), \ +List('numbered', [ListItem([Paragraph([PlainText('item 1.1 ')])])])])])] + >>> parse_wiki(' * single,\\n multiline item') + [List('bulleted', \ +[ListItem([Paragraph([PlainText('single, '), \ +PlainText('multiline item ')])])])] + >>> parse_wiki(' * single,\\n \\n multipara item') + [List('bulleted', \ +[ListItem([Paragraph([PlainText('single, ')]), \ +Paragraph([PlainText('multipara item ')])])])] + + >>> parse_wiki('----') + [HorizontalRule(4)] + >>> parse_wiki('----------') + [HorizontalRule(10)] + + >>> parse_wiki("||'''A'''||'''B'''||'''C'''||\\n||1 ||2 ||3 ||") + [Table([TableRow([TableItem([Paragraph([BoldText([PlainText('A')])])]), \ +TableItem([Paragraph([BoldText([PlainText('B')])])]), \ +TableItem([Paragraph([BoldText([PlainText('C')])])])]), \ +TableRow([TableItem([Paragraph([PlainText('1 ')])]), \ +TableItem([Paragraph([PlainText('2 ')])]), \ +TableItem([Paragraph([PlainText('3 ')])])])])] + + >>> parse_wiki("||A||") + [Table([TableRow([TableItem([Paragraph([PlainText('A')])])])], \ +'border:1px solid black;width: 80%')] + + >>> parse_wiki('/* comment */') + [Comment([PlainText('comment')])] + + >>> parse_wiki('/* comment http://example.com */') + [Comment([PlainText('comment '), Url('http://example.com')])] + + >>> parse_wiki('## BEGIN_INCLUDE') + [BeginInclude()] + + >>> parse_wiki('## END_INCLUDE') + [EndInclude()] + + >>> parse_wiki('CategoryFreedomBox') + [Category('FreedomBox')] + + >>> parse_wiki('<>') + [Paragraph([Anchor('gettinghelp')])] + + >>> parse_wiki('<>') + [Include('FreedomBox/Portal')] + >>> parse_wiki('<>') + [Include('FreedomBox/Hardware', '## BEGIN_INCLUDE', '## END_INCLUDE')] + + >>> parse_wiki('{{{\\nnmcli connection\\n}}}') + [CodeText('nmcli connection')] + >>> parse_wiki("{{{#!wiki caution\\nDon't overuse admonitions\\n}}}") + [Admonition('caution', [Paragraph(\ +[PlainText("Don't overuse admonitions ")])])] + + >>> parse_wiki('a\\n\\n## END_INCLUDE\\n\\nb', \ + None, None, '## END_INCLUDE') + [Paragraph([PlainText('a ')])] + >>> parse_wiki('a\\n\\n## BEGIN_INCLUDE\\n\\nb' \ + '\\n\\n## END_INCLUDE\\n\\nc', \ + None, '## BEGIN_INCLUDE', '## END_INCLUDE') + [Paragraph([PlainText('b ')])] + + >>> parse_wiki('a<
>\\nb') + [Paragraph([PlainText('a')]), Paragraph([PlainText('b ')])] + >>> parse_wiki('{{{#!wiki caution\\n\\nOnce some other app is set as the \ +home page, you can only navigate to the !FreedomBox Service (Plinth) by \ +typing https://myfreedombox.rocks/plinth/ into the browser. <
>\\n\ +''/freedombox'' can also be used as an alias to ''/plinth''\\n}}}') + [Admonition('caution', [Paragraph([PlainText('Once some other app is set \ +as the home page, you can only navigate to the FreedomBox Service (Plinth) by \ +typing '), Url('https://myfreedombox.rocks/plinth/'), PlainText(' into the \ +browser. ')]), Paragraph([PlainText('/freedombox can also be used as an alias \ +to /plinth ')])])] + + >>> parse_wiki('{{{\\nmulti-line\\n\ +preformatted text (source code)\\n}}}''') + [CodeText('multi-line\\npreformatted text (source code)')] + >>> parse_wiki('text to introduce {{{ a singleliner}}}') + [Paragraph([PlainText('text to introduce '), CodeText(' a singleliner'),\ + PlainText(' ')])] + >>> parse_wiki('text to introduce\\n{{{\\n a multiliner\\nstarting at\ +\\n different indents.\\n}}}') + [Paragraph([PlainText('text to introduce ')]), \ +CodeText(' a multiliner\\nstarting at\\n different indents.')] + >>> parse_wiki('Blah, blah:\\n{{{\\nmulti-line\\nformatted text\\n\ +starting at col #1\\n}}}') + [Paragraph([PlainText('Blah, blah: ')]), \ +CodeText('multi-line\\nformatted text\\nstarting at col #1')] + >>> parse_wiki(' * Blah, blah:\\n {{{\\nmulti-line\\nformatted text\ +\\nstarting at col #1\\n}}}') + [List('bulleted', \ +[ListItem([Paragraph([PlainText('Blah, blah: ')]), \ +CodeText('multi-line\\nformatted text\\nstarting at col #1')])])] + >>> parse_wiki(' {{{\\n nmap -p 80 --open -sV 192.168.0.0/24 \ +(replace the ip/netmask with the one the router uses)\\n }}}\\n In \ +most cases you can look at your current IP address, and change the last \ +digits with zero to find your home network, like so: XXX.XXX.XXX.0/24') + [List('spaced', [ListItem([CodeText(' nmap -p 80 --open -sV 192.168.\ +0.0/24 (replace the ip/netmask with the one the router uses)'), Paragraph(\ +[PlainText('In most cases you can look at your current IP address, and \ +change the last digits with zero to find your home network, like so: XXX.XXX\ +.XXX.0/24 ')])])])] + >>> parse_wiki('text to introduce\\n----\\n<>') + [Paragraph([PlainText('text to introduce ')]), \ +HorizontalRule(4), TableOfContents()] + + >>> parse_wiki(' If this command shows an error such as ''new key but \ +contains no user ID - skipped'', then use a different keyserver to download \ +the keys:\\n {{{\\n$ gpg --keyserver keys.gnupg.net --recv-keys \ +BCBEBD57A11F70B23782BC5736C361440C9BC971\\n$ gpg --keyserver keys.gnupg.net \ +--recv-keys 7D6ADB750F91085589484BE677C0C75E7B650808\\n$ gpg --keyserver \ +keys.gnupg.net --recv-keys 013D86D8BA32EAB4A6691BF85D4153D6FE188FC8\\n }}}') + [List('spaced', [ListItem([Paragraph([PlainText('If this command shows an \ +error such as new key but contains no user ID - skipped, then use a different \ +keyserver to download the keys: ')]), CodeText('$ gpg --keyserver keys.gnupg.\ +net --recv-keys BCBEBD57A11F70B23782BC5736C361440C9BC971\\n$ gpg --keyserver \ +keys.gnupg.net --recv-keys 7D6ADB750F91085589484BE677C0C75E7B650808\\n$ gpg \ +--keyserver keys.gnupg.net --recv-keys \ +013D86D8BA32EAB4A6691BF85D4153D6FE188FC8')])])] + + >>> parse_wiki('User documentation:\\n * List of \ +[[FreedomBox/Features|applications]] offered by !FreedomBox.') + [Paragraph([PlainText('User documentation: ')]), List('bulleted', \ +[ListItem([Paragraph([PlainText('List of '), Link('FreedomBox/Features', \ +[PlainText('applications')]), PlainText(' offered by FreedomBox. ')])])])] + + >>> parse_wiki('\ + * Within !FreedomBox Service (Plinth)\\n\ + 1. select ''Apps''\\n\ + 2. go to ''Radicale (Calendar and Addressbook)'' and\\n\ + 3. install the application. After the installation is complete, make sure \ +the application is marked "enabled" in the !FreedomBox interface. Enabling \ +the application launches the Radicale CalDAV/CardDAV server.\\n\ + 4. define the access rights:\\n\ + * Only the owner of a calendar/addressbook can view or make changes\\n\ + * Any user can view any calendar/addressbook, but only the owner can make \ +changes\\n\ + * Any user can view or make changes to any calendar/addressbook') + [List('bulleted', [\ +ListItem([Paragraph([PlainText('Within FreedomBox Service (Plinth) ')]), \ +List('numbered', [ListItem([Paragraph([PlainText('select Apps ')])]), \ +ListItem([Paragraph([PlainText('go to Radicale (Calendar and Addressbook) \ +and ')])]), \ +ListItem([Paragraph([PlainText('install the application. After the \ +installation is complete, make sure the application is marked "enabled" in \ +the FreedomBox interface. Enabling the application launches the Radicale \ +CalDAV/CardDAV server. ')])]), \ +ListItem([Paragraph([PlainText('define the access rights: ')]), \ +List('bulleted', [ListItem([Paragraph([PlainText('Only the owner of a \ +calendar/addressbook can view or make changes ')])]), \ +ListItem([Paragraph([PlainText('Any user can view any calendar/addressbook, \ +but only the owner can make changes ')])]), \ +ListItem([Paragraph([PlainText('Any user can view or make changes to any \ +calendar/addressbook ')])])])])])])])] + + >>> parse_wiki('[[attachment:freedombox-screenshot-home.png|\ +{{attachment:freedombox-screenshot-home.png|Home Page|width=300}}]]') + [Paragraph([Link('attachment:freedombox-screenshot-home.png', \ +[EmbeddedAttachment('freedombox-screenshot-home.png', \ +[PlainText('Home Page')], 'width=300')]), PlainText(' ')])] + + >>> parse_wiki(" * New wiki and manual content licence: \ +''[[https://creativecommons.org/licenses/by-sa/4.0/|Creative Commons \ +Attribution-ShareAlike 4.0 International]]'' (from June 13rd 2016).") + [List('bulleted', [ListItem([Paragraph([PlainText('New wiki and manual \ +content licence: '), ItalicText([Link('https://creativecommons.org/licenses/\ +by-sa/4.0/', [PlainText('Creative Commons Attribution-ShareAlike 4.0 \ +International')])]), PlainText(' (from June 13rd 2016). ')])])])] + + >>> parse_wiki('An alternative to downloading these images is to \ +[[InstallingDebianOn/TI/BeagleBone|install Debian]] on the !BeagleBone and \ +then [[FreedomBox/Hardware/Debian|install FreedomBox]] on it.') + [Paragraph([PlainText('An alternative to downloading these images is to ')\ +, Link('InstallingDebianOn/TI/BeagleBone', [PlainText('install Debian')]), \ +PlainText(' on the BeagleBone and then '), Link('FreedomBox/Hardware/Debian', \ +[PlainText('install FreedomBox')]), PlainText(' on it. ')])] + + >>> parse_wiki("'''Synchronizing contacts'''\\n 1. Click on the hamburger \ +menus of CalDAV and CardDAV and select either \\"Refresh ...\\" in case of \ +existing accounts or \\"Create ...\\" in case of new accounts (see the second \ +screenshot below).\\n 1. Check the checkboxes for the address books and \ +calendars you want to synchronize and click on the sync button in the header. \ +(see the third screenshot below)") + [Paragraph([BoldText([PlainText('Synchronizing contacts')]), \ +PlainText(' ')]), List('numbered', \ +[ListItem([Paragraph([PlainText('Click on the hamburger menus of CalDAV and \ +CardDAV and select either "Refresh ..." in case of existing accounts or \ +"Create ..." in case of new accounts (see the second screenshot below). ')])]),\ + ListItem([Paragraph([PlainText('Check the checkboxes for the address books \ +and calendars you want to synchronize and click on the sync button in the \ +header. (see the third screenshot below) ')])])])] + + >>> parse_wiki("After Roundcube is installed, it can be accessed at \ +{{{https:///roundcube}}}. Enter your username and password. \ +The username for many mail services will be the full email address such as \ +''exampleuser@example.org'' and not just the username like ''exampleuser''. \ +Enter the address of your email service's IMAP server address in the \ +''Server'' field. You can try providing your domain name here such as \ +''example.org'' for email address ''exampleuser@example.org'' and if this \ +does not work, consult your email provider's documentation for the address of \ +the IMAP server. Using encrypted connection to your IMAP server is strongly \ +recommended. To do this, prepend 'imaps://' at the beginning of your IMAP \ +server address. For example, ''imaps://imap.example.org''.") + [Paragraph([PlainText('After Roundcube is installed, it can be accessed \ +at '), CodeText('https:///roundcube'), PlainText('. Enter \ +your username and password. The username for many mail services will be the \ +full email address such as '), ItalicText([PlainText('exampleuser@example.org'\ +)]), PlainText(' and not just the username like '), ItalicText([PlainText(\ +'exampleuser')]), PlainText(". Enter the address of your email service's IMAP \ +server address in the "), ItalicText([PlainText('Server')]), PlainText(' \ +field. You can try providing your domain name here such as '), ItalicText(\ +[PlainText('example.org')]), PlainText(' for email address '), ItalicText(\ +[PlainText('exampleuser@example.org')]), PlainText(" and if this \ +does not work, consult your email provider's documentation for the address \ +of the IMAP server. Using encrypted connection to your IMAP server is \ +strongly recommended. To do this, prepend 'imaps://' at the beginning of \ +your IMAP server address. For example, "), ItalicText([PlainText(\ +'imaps://imap.example.org')]), PlainText('. ')])] + + >>> parse_wiki('Tor Browser is the recommended way to browse the web \ +using Tor. You can download the Tor Browser from \ +https://www.torproject.org/projects/torbrowser.html and follow the \ +instructions on that site to install and run it.') + [Paragraph([PlainText('Tor Browser is the recommended way to browse the \ +web using Tor. You can download the Tor Browser from '), Url('\ +https://www.torproject.org/projects/torbrowser.html'), PlainText(' and follow \ +the instructions on that site to install and run it. ')])] + + >>> parse_wiki('After installation a web page becomes available on \ +https:///_minidlna.') + [Paragraph([PlainText('After installation a web page becomes available on \ +https:///_minidlna. ')])] + + >>> parse_wiki('or http://10.42.0.1/.') + [Paragraph([PlainText('or '), Url('http://10.42.0.1/'), PlainText('. ')])] + + >>> parse_wiki('or http://10.42.0.1/:') + [Paragraph([PlainText('or '), Url('http://10.42.0.1/'), PlainText(': ')])] + + >>> parse_wiki('|| [[FreedomBox/Hardware/\ +A20-OLinuXino-Lime2|{{attachment:a20-olinuxino-lime2_thumb.jpg|A20 OLinuXino \ +Lime2|width=235,height=159}}]]<
> [[FreedomBox/Hardware/A20-OLinuXino-Lime2\ +|A20 OLinuXino Lime2]] || [[FreedomBox/Hardware/\ +A20-OLinuXino-MICRO|{{attachment:a20-olinuxino-micro_thumb.jpg|A20 OLinuXino \ +MICRO|width=235,height=132}}]]<
> [[FreedomBox/Hardware/A20-OLinuXino-MICRO\ +|A20 OLinuXino MICRO]] || [[FreedomBox/Hardware/\ +APU|{{attachment:apu1d_thumb.jpg|PC Engines APU|width=235,height=157}}]]<
>\ + [[FreedomBox/Hardware/APU|PC Engines APU]] ||') + [Table([TableRow([TableItem([Paragraph([PlainText(' '), \ +Link('FreedomBox/Hardware/A20-OLinuXino-Lime2', \ +[EmbeddedAttachment('a20-olinuxino-lime2_thumb.jpg', \ +[PlainText('A20 OLinuXino Lime2')], 'width=235,height=159')])]), \ +Paragraph([PlainText(' '), Link('FreedomBox/Hardware/A20-OLinuXino-Lime2', \ +[PlainText('A20 OLinuXino Lime2')]), PlainText(' ')])], 'center'), \ +TableItem([Paragraph([PlainText(' '), \ +Link('FreedomBox/Hardware/A20-OLinuXino-MICRO', \ +[EmbeddedAttachment('a20-olinuxino-micro_thumb.jpg', \ +[PlainText('A20 OLinuXino MICRO')], 'width=235,height=132')])]), \ +Paragraph([PlainText(' '), Link('FreedomBox/Hardware/A20-OLinuXino-MICRO', \ +[PlainText('A20 OLinuXino MICRO')]), PlainText(' ')])], 'center'), \ +TableItem([Paragraph([PlainText(' '), Link('FreedomBox/Hardware/APU', \ +[EmbeddedAttachment('apu1d_thumb.jpg', [PlainText('PC Engines APU')], \ +'width=235,height=157')])]), Paragraph([PlainText(' '), \ +Link('FreedomBox/Hardware/APU', [PlainText('PC Engines APU')]), \ +PlainText(' ')])], 'center')])])] + + >>> parse_wiki(" 1. When created, go to the virtual machine's Settings -> \ +[Network] -> [Adapter 1]->[Attached to:] and choose the network type your \ +want the machine to use according to the explanation in Network Configuration \ +below. The recommended type is the ''Bridged adapter'' option, but be aware \ +that this exposes the !FreedomBox's services to your entire local network.") + [List('numbered', [ListItem([Paragraph([PlainText("When created, go to \ +the virtual machine's Settings -> [Network] -> [Adapter 1]->[Attached to:] \ +and choose the network type your want the machine to use according to the \ +explanation in Network Configuration below. The recommended type is the "), \ +ItalicText([PlainText('Bridged adapter')]), PlainText(" option, but be aware \ +that this exposes the FreedomBox's services to your entire local network. \ +")])])])] + + >>> parse_wiki('After logging in, you can become root with the command \ +`sudo su`.\\n \\n=== Build Image ===') + [Paragraph([PlainText('After logging in, you can become root with the \ +command '), MonospaceText('sudo su'), PlainText('. ')]), \ +Heading(3, 'Build Image')] + + >>> parse_wiki('Quassel Core will be initialized too.\\n\\n\ + 1. Launch Quassel Client. You will be greeted with a wizard to `Connect to \ +Core`.\\n\ + {{attachment:quassel-client-1-connect-to-core.png|Connect to Core|\ +width=394}}\\n\ + 1. Click the `Add` button to launch `Add Core Account` dialog.\\n\ +') + [Paragraph(\ +[PlainText('Quassel Core will be initialized too. ')]), \ +List('numbered', \ +[ListItem([Paragraph([PlainText('Launch Quassel Client. You will be greeted \ +with a wizard to '), MonospaceText('Connect to Core'), PlainText('. ')]), \ +List('spaced', [ListItem([Paragraph([\ +EmbeddedAttachment('quassel-client-1-connect-to-core.png', \ +[PlainText('Connect to Core')], 'width=394'), PlainText(' ')])])])]), \ +ListItem([Paragraph([PlainText('Click the '), MonospaceText('Add'), \ +PlainText(' button to launch '), MonospaceText('Add Core Account'), \ +PlainText(' dialog. ')])])])] + + """ + elements = [] + lines = text.split('\n') + + # Skip lines before begin_marker, if given. + if begin_marker: + removed_lines = [] + while lines: + line = lines.pop(0) + removed_lines.append(line) + if line.startswith(begin_marker): + break + + if not lines: # No begin marker found + lines = removed_lines + + while lines: + line = lines.pop(0) + # Empty line + match = re.match(r'^\s+$', line) + if match: + continue + + # End of included file + if end_marker and line.strip().startswith(end_marker): + break # end parsing + + # Handle macros when file is not included. + if line.strip().startswith('## BEGIN_INCLUDE'): + elements.append(BeginInclude()) + continue + + if line.strip().startswith('## END_INCLUDE'): + elements.append(EndInclude()) + continue + + # Comment, not rendered + if line.strip().startswith('##'): + continue + + # Processing instructions, not rendered + if line.strip() and \ + line.strip().split()[0] in ('#format', '#redirect', '#refresh', + '#pragma', '#deprecated', '#language'): + continue + + # Table of Contents + match = re.match(r'<>', line) + if match: + level = match.group(1) + if level: + elements.append(TableOfContents(int(level))) + else: + elements.append(TableOfContents()) + continue + + # Heading + match = re.match(r'(=+) (.+) (=+)', line) + if match: + level = len(match.group(1)) + content = match.group(2) + elements.append(Heading(level, content)) + continue + + # Horizontal rule + match = re.match(r'---(-+)', line) + if match: + dashes = len(match.group(1)) + 3 + elements.append(HorizontalRule(dashes)) + continue + + # Table + if line.strip().startswith('||'): + rows = [] + style = None + match = re.match(r'.*.*', line) + if match: + style = match.group(1).strip('\'"') + + rows.append(parse_table_row(line, context)) + while lines and lines[0].strip().startswith('||'): + line = lines.pop(0) + rows.append(parse_table_row(line, context)) + + elements.append(Table(rows, style)) + continue + + # List + list_item_re = re.compile(r'(\s+)(\*|\.|\d\.|I\.|A\.)\s+(.*)') + space_list_re = re.compile(r'(\s+)') + match = list_item_re.match(line) or space_list_re.match(line) + if match or re.match(r'\s+', line): + # Collect lines until end of List is reached. + list_lines = [] + next_list_item = line + top_indent = len(match.group(1)) + + if line.strip().startswith('{{{') and '}}}' not in line: + # Multi-line code text or admonition may not have expected + # indentation + while lines: + line = lines.pop(0) + if line.strip() == '}}}': + next_list_item += '\n}}}' + break + else: + next_list_item += '\n' + line + + while lines: + candidate = lines[0] + if re.match(r'^\s*$', candidate): + # Eat up empty lines + lines.pop(0) + next_list_item += '\n' + continue + + if not candidate.startswith(' ' * top_indent): + # Not part of list + break + + match = list_item_re.match(candidate) + if match: + # New item in list + list_lines.append(next_list_item) + next_list_item = lines.pop(0) + else: + # More content in same list item + if candidate.strip().startswith('{{{') \ + and '}}}' not in candidate: + # Multi-line code text or admonition may not + # have expected indentation + while lines: + line = lines.pop(0) + if line.strip() == '}}}': + next_list_item += '\n}}}' + break + else: + next_list_item += '\n' + line + elif (candidate.strip().startswith('{{') + and next_list_item[-1] != '\n'): + # Add line break before inline image + next_list_item += ' <
>\n' + lines.pop(0) + else: + next_list_item += '\n' + lines.pop(0) + + # finish list + list_lines.append(next_list_item) + + # Parse List info for each line. + list_data = [] + for line in list_lines: + match = list_item_re.match(line) + if match: + indent = len(match.group(1)) + marker = match.group(2) + if marker == '.': + list_type = ListType.PLAIN + elif '*' in marker: + list_type = ListType.BULLETED + else: + list_type = ListType.NUMBERED + + content = ' ' * indent + line.lstrip(match.group(2) + ' ') + else: + match = space_list_re.match(line) + indent = len(match.group(1)) + list_type = ListType.SPACED + content = line + + list_data.append((list_type, indent, content)) + + new_list, _ = parse_list(list_data, context) + elements.append(new_list) + continue + + # Comment + match = re.match(r'\/\* (.+) \*\/', line) + if match: + content = match.group(1) + content = parse_plain_text(content) + elements.append(Comment(content)) + continue + + # Admonition + element, lines = parse_multiline_wiki_admonition(line, lines, context) + if element: + elements.append(element) + continue + + # Code text + element, lines = parse_multiline_codetext(line, lines) + if element: + elements.append(element) + continue + + # Category + match = re.match(r'Category(\w+)', line) + if match: + content = match.group(1) + elements.append(Category(content)) + continue + + # Anchor + match = re.match(r'<>', line) + if match: + content = match.group(1) + elements.append(Paragraph([Anchor(content)])) + continue + + # Include + match = re.match(r'<>', line) + if match: + contents = match.group(1).split(',') + page = contents.pop(0) + from_marker = None + to_marker = None + for content in contents: + if content.startswith(' from='): + from_marker = content.lstrip(' from="').rstrip('"') + elif content.startswith(' to='): + to_marker = content.lstrip(' to="').rstrip('"') + + elements.append(Include(page, from_marker, to_marker)) + continue + + # Paragraph + if line.strip(): + texts = [] + br = '<
>' + space_line = line.rstrip(br) if br in line else line + ' ' + texts.extend(parse_text(space_line, context)) + if br not in line: + # Collect text until next empty line is reached. + while lines and lines[0].strip(): + if end_marker and lines[0].strip().startswith(end_marker): + break + + if br in line: + break + + # If any of the syntax that ends a paragraph + paragraph_breakers = ['{{{', '##', '----', '||'] + if any([ + True for breaker in paragraph_breakers + if lines[0].strip().startswith(breaker) + ]): + break + + if re.match(r'\s+(\*|\.|\d\.|I\.|A\.)\s+.*', lines[0]): + break + + line = lines.pop(0) + space_line = line.rstrip(br) if br in line else line + ' ' + texts.extend(parse_text(space_line, context)) + + elements.append(Paragraph(texts)) + + return elements + + +def generate_inner_docbook(parsed_wiki, context=None): + """Generate docbook contents from the wiki parse list. + + >>> generate_inner_docbook([Heading(1, 'heading 1st level')]) + '
heading 1st level
' + + >>> generate_inner_docbook([\ +Heading(1, 'heading 1st level'), \ +Heading(2, 'heading 2nd level'), \ +Paragraph([PlainText('plain text ')]), \ +Heading(3, 'heading 3rd level'), \ +Heading(2, 'heading 2nd level'), \ +]) + '
heading 1st level\ +
heading 2nd level\ +plain text \ +
heading 3rd level\ +
\ +
heading 2nd level\ +
' + + >>> generate_inner_docbook([Heading(1, 'Date & Time')]) + '
Date & Time
' + + >>> generate_inner_docbook([Paragraph([PlainText('plain text ')])]) + 'plain text ' + + >>> generate_inner_docbook([Paragraph([Url('https://freedombox.org')])]) + '' + + >>> generate_inner_docbook([Paragraph([ItalicText([\ +PlainText('italic')])])]) + 'italic' + + >>> generate_inner_docbook([Paragraph([BoldText([PlainText('bold')])])]) + 'bold' + + >>> generate_inner_docbook([Paragraph([\ +PlainText('normal text followed by '), BoldText([PlainText('bold text')])])]) + 'normal text followed by \ +bold text' + + >>> generate_inner_docbook([Paragraph([MonospaceText('monospace')])]) + 'monospace' + + >>> generate_inner_docbook([Paragraph([MonospaceText('Save & Connect')])]) + 'Save & Connect' + + >>> generate_inner_docbook([CodeText('code')]) + '' + >>> generate_inner_docbook([CodeText('apt source ')]) + ']]>' + + >>> generate_inner_docbook([Link('https://onionshare.org/', \ +[PlainText('Onionshare')])]) + 'Onionshare' + + >>> generate_inner_docbook([Link('https://f-droid.org/repository/browse/\ +?fdfilter=quassel&fdid=com.iskrembilen.quasseldroid', [PlainText('F-Droid')])]) + 'F-Droid' + + >>> generate_inner_docbook([Link('FreedomBox/Features', \ +[PlainText('Features introduction')])]) + '\ +Features introduction' + + >>> generate_inner_docbook([Link('FreedomBox', [PlainText('FreedomBox')])]) + 'FreedomBox' + + >>> generate_inner_docbook([Link('../../Contribute', \ +[PlainText('Contribute')])], context={'title': 'FreedomBox/Manual/Hardware'}) + '\ +Contribute' + + >>> generate_inner_docbook([Link('/Code', \ +[PlainText('Code')])], context={'title': 'FreedomBox/Contribute'}) + '\ +Code' + + >>> generate_inner_docbook([Link('DebianBug:1234', [PlainText('Bug')])]) + 'Bug' + + >>> generate_inner_docbook([Link('DebianPkg:plinth', \ +[PlainText('Plinth')])]) + 'Plinth' + + >>> generate_inner_docbook([Link('AliothList:freedombox-discuss', \ +[PlainText('Discuss')])]) + 'Discuss' + + >>> generate_inner_docbook([Link('WiFi#USB_Devices', \ +[PlainText('Devices')])]) + 'Devices' + + >>> generate_inner_docbook([Link('#internal-link', \ +[PlainText('Section')])]) + 'Section' + + >>> generate_inner_docbook([Link("attachment:Let's Encrypt.webm", \ +[PlainText("Let's Encrypt")], 'do=get')], context={'title': \ +'FreedomBox/Manual/LetsEncrypt'}) + '\ +Let\\'s Encrypt' + + >>> generate_inner_docbook([EmbeddedAttachment('cockpit-enable.png')]) + '\ +\ +cockpit-enable.png\ +' + >>> generate_inner_docbook([EmbeddedAttachment('Backups_Step1_v49.png', \ +[PlainText('Backups: Step 1')], 'width=800')]) + '\ +\ +Backups: Step 1\ +' + + >>> generate_inner_docbook([Table([TableRow([\ +TableItem([Paragraph([PlainText('A')])]), \ +TableItem([Paragraph([PlainText('B')])])]), \ +TableRow([TableItem([Paragraph([PlainText('1')])]), \ +TableItem([Paragraph([PlainText('2')])])])])]) + '\ +\ +\ +\ +\ +A\ +B\ +\ +1\ +2\ +' + + >>> generate_inner_docbook([List('bulleted', [\ +ListItem([Paragraph([PlainText('first item')])]), \ +ListItem([Paragraph([PlainText('second item')])])])]) + 'first item\ +second item' + + >>> generate_inner_docbook([Comment([PlainText('comment')])]) + 'comment' + + >>> generate_inner_docbook([Comment([PlainText('comment'), \ +Url('http://example.com')])]) + 'comment ' + + >>> generate_inner_docbook([Category('CategoryFreedomBox')]) + '' + + >>> generate_inner_docbook([Anchor('gettinghelp')]) + '' + + >>> generate_inner_docbook([HorizontalRule(4)]) + '' + + >>> generate_inner_docbook([EndInclude()]) + '' + + >>> generate_inner_docbook([Admonition('caution', \ +[Paragraph([PlainText("Don't overuse admonitions")])])]) + "Don't overuse admonitions" + + >>> generate_inner_docbook([TableOfContents()]) + '' + + >>> generate_inner_docbook([Paragraph([\ +PlainText('User documentation:')]), \ +List('bulleted', [ListItem([Paragraph([PlainText('List of '), \ +Link('FreedomBox/Features', [PlainText('applications')]), \ +PlainText(' offered by FreedomBox.')])])])]) + 'User documentation:List of \ +applications\ + offered by FreedomBox.' + + >>> generate_inner_docbook([List('bulleted', [\ +ListItem([Paragraph([PlainText('Within FreedomBox Service (Plinth)')]), \ +List('numbered', [ListItem([Paragraph([PlainText('select Apps')])]), \ +ListItem([Paragraph([PlainText('go to Radicale (Calendar and Addressbook) \ +and ')])]), \ +ListItem([Paragraph([PlainText('install the application. After the \ +installation is complete, make sure the application is marked "enabled" in \ +the FreedomBox interface. Enabling the application launches the Radicale \ +CalDAV/CardDAV server. ')])]), \ +ListItem([Paragraph([PlainText('define the access rights: ')]), \ +List('bulleted', [ListItem([Paragraph([PlainText('Only the owner of a \ +calendar/addressbook can view or make changes ')])]), \ +ListItem([Paragraph([PlainText('Any user can view any calendar/addressbook, \ +but only the owner can make changes ')])]), \ +ListItem([Paragraph([PlainText('Any user can view or make changes to any \ +calendar/addressbook ')])])])])])])])]) + '\ +Within FreedomBox Service (Plinth) \ +\ +select Apps\ +go to Radicale (Calendar and Addressbook) and \ +\ +install the application. After the installation is complete, \ +make sure the application is marked "enabled" in the FreedomBox interface. \ +Enabling the application launches the Radicale CalDAV/CardDAV server. \ +\ +define the access rights: \ +\ +Only the owner of a calendar/addressbook can view or make \ +changes \ +Any user can view any calendar/addressbook, but only the \ +owner can make changes \ +Any user can view or make changes to any calendar/addressbook \ +\ +\ +' + + >>> generate_inner_docbook([Paragraph([PlainText('An alternative to \ +downloading these images is to '), Link('InstallingDebianOn/TI/BeagleBone', \ +[PlainText(' install Debian')]), PlainText(' on the BeagleBone and then '), \ +Link('FreedomBox/Hardware/Debian', [PlainText('install FreedomBox')]), \ +PlainText(' on it. ')])]) + 'An alternative to downloading these images is to \ +\ + install Debian on the BeagleBone and then \ +install \ +FreedomBox on it. ' + + >>> generate_inner_docbook([Paragraph([PlainText('After Roundcube is \ +installed, it can be accessed at '), CodeText('https://\ +/roundcube'), PlainText('.')])]) + 'After Roundcube is installed, it can be accessed at \ +https://<your freedombox>/roundcube.' + """ + doc_out = '' + sections = [] + if context is None: + context = {} + + for element in parsed_wiki: + if isinstance(element, Heading): + while sections and element.level <= sections[-1]: + doc_out += '
' + sections.pop() + + doc_out += '
' + sections.append(element.level) + + doc_out += element.to_docbook(context) + + for section in sections: + doc_out += '
' + + return doc_out + + +def get_context(file_path, file_title=None): + """Get dict with page path, name, language, and title. + + >>> get_context(Path('manual/en/freedombox-manual')) + {'path': PosixPath('manual/en/freedombox-manual'), \ +'name': 'FreedomBox Manual', \ +'language': 'en', \ +'title': 'FreedomBox/Manual/freedombox-manual'} + + >>> get_context(Path('manual/es/freedombox-manual')) + {'path': PosixPath('manual/es/freedombox-manual'), \ +'name': 'FreedomBox Manual', \ +'language': 'es', \ +'title': 'es/FreedomBox/Manual/freedombox-manual'} + + >>> get_context(Path('manual/unknown/freedombox-manual')) + {'path': PosixPath('manual/unknown/freedombox-manual'), \ +'name': 'FreedomBox Manual', \ +'language': 'en', \ +'title': 'FreedomBox/Manual/freedombox-manual'} + + >>> get_context(Path('strange/path/to/manual/en/freedombox-manual')) + {'path': PosixPath('strange/path/to/manual/en/freedombox-manual'), \ +'name': 'FreedomBox Manual', \ +'language': 'en', \ +'title': 'FreedomBox/Manual/freedombox-manual'} + + >>> get_context(Path('strange/path/to/manual/es/freedombox-manual')) + {'path': PosixPath('strange/path/to/manual/es/freedombox-manual'), \ +'name': 'FreedomBox Manual', \ +'language': 'es', \ +'title': 'es/FreedomBox/Manual/freedombox-manual'} + + >>> get_context(Path('strange/path/to/manual/unknown/freedombox-manual')) + {'path': PosixPath('strange/path/to/manual/unknown/freedombox-manual'), \ +'name': 'FreedomBox Manual', \ +'language': 'en', \ +'title': 'FreedomBox/Manual/freedombox-manual'} + + >>> get_context(Path('manual/en/some-page'), 'FreedomBox/some-page') + {'path': PosixPath('manual/en/some-page'), \ +'name': 'some-page', \ +'language': 'en', \ +'title': 'FreedomBox/some-page'} + + >>> get_context(Path('manual/es/some-page'), 'FreedomBox/some-page') + {'path': PosixPath('manual/es/some-page'), \ +'name': 'some-page', \ +'language': 'es', \ +'title': 'es/FreedomBox/some-page'} + + >>> get_context(Path('manual/es/some-page'), 'es/FreedomBox/some-page') + {'path': PosixPath('manual/es/some-page'), \ +'name': 'some-page', \ +'language': 'es', \ +'title': 'es/FreedomBox/some-page'} + """ + page_name = Path(file_path.stem).stem + if page_name == 'freedombox-manual': + name = 'FreedomBox Manual' + else: + name = page_name + + language = DEFAULT_LANGUAGE + for lang in LANGUAGES: + if lang in file_path.parts: + language = lang + break + + title = file_title or f'FreedomBox/Manual/{page_name}' + if title.partition('/')[0] not in LANGUAGES and \ + language != DEFAULT_LANGUAGE: + title = f'{language}/{title}' + + context = { + 'path': file_path, + 'name': name, + 'language': language, + 'title': title, + } + return context + + +def generate_docbook(parsed_wiki, context=None): + """Generate a docbook article from the wiki parse list.""" + doc_out = '' + doc_out += '' + + if context and 'name' in context: + doc_out += '
' + doc_out += context['name'] + doc_out += '' + + doc_out += generate_inner_docbook(parsed_wiki, context) + doc_out += '
' + return doc_out + + +if __name__ == '__main__': + import argparse + import doctest + + parser = argparse.ArgumentParser( + description='Parse MoinMoin wiki files, and convert to Docbook.') + parser.add_argument('--skip-tests', action='store_true', + help='Skip module doctests') + parser.add_argument('--debug', action='store_true', + help='Show parser output') + parser.add_argument('--begin-marker', default='## BEGIN_INCLUDE', + help='Start parsing at this line') + parser.add_argument('--end-marker', default='## END_INCLUDE', + help='Stop parsing at this line') + parser.add_argument('input', type=Path, nargs='*', + help='input file path(s)') + arguments = parser.parse_args() + + if not arguments.skip_tests: + # Make tests verbose if no input files given + verbose = not arguments.input + doctest.testmod(verbose=verbose) + + for in_file in arguments.input: + with in_file.open() as wiki_file: + wiki_text = wiki_file.read() + + _context = get_context(in_file) + parsed_wiki = parse_wiki(wiki_text, _context, + begin_marker=arguments.begin_marker, + end_marker=arguments.end_marker) + if arguments.debug: + import pprint + pprint.pprint(parsed_wiki, indent=4) + + doc_out = generate_docbook(parsed_wiki, _context) + print(doc_out) diff --git a/plinth/__init__.py b/plinth/__init__.py index 74c23b379..66211c9ba 100644 --- a/plinth/__init__.py +++ b/plinth/__init__.py @@ -3,4 +3,4 @@ Package init file. """ -__version__ = '20.12.1' +__version__ = '20.14' diff --git a/plinth/frontpage.py b/plinth/frontpage.py index fcaa05325..748730bce 100644 --- a/plinth/frontpage.py +++ b/plinth/frontpage.py @@ -44,14 +44,14 @@ class Shortcut(app.FollowerComponent): provided by the app. For shortcuts that should simply additional information this value must be None. - 'details' are additional information that the user is shown when the - shortcut is activated. This must be provided instead of 'url' and must - be 'None' if 'url' is provided. + 'description' is additional information that the user is shown when + the shortcut is activated. This must be provided instead of 'url' and + must be 'None' if 'url' is provided. 'configure_url' is the page to which the user may be redirected if they wish to change the settings for the app or one of its services. This is only used when 'url' is 'None'. It is optionally provided along with - 'details'. + 'description'. 'clients' is a list of clients software that can used to access the service offered by the shortcut. This should be a valid client diff --git a/plinth/kvstore.py b/plinth/kvstore.py index a61db2e8c..32ecef9ca 100644 --- a/plinth/kvstore.py +++ b/plinth/kvstore.py @@ -3,11 +3,10 @@ Simple key/value store using Django models """ -from plinth.models import KVStore - def get(key): """Return the value of a key""" + from plinth.models import KVStore # pylint: disable-msg=E1101 return KVStore.objects.get(pk=key).value @@ -22,10 +21,12 @@ def get_default(key, default_value): def set(key, value): # pylint: disable-msg=W0622 """Store the value of a key""" + from plinth.models import KVStore store = KVStore(key=key, value=value) store.save() def delete(key): """Delete a key""" + from plinth.models import KVStore return KVStore.objects.get(key=key).delete() diff --git a/plinth/locale/ar_SA/LC_MESSAGES/django.po b/plinth/locale/ar_SA/LC_MESSAGES/django.po index 38d6d3440..0271a7d7b 100644 --- a/plinth/locale/ar_SA/LC_MESSAGES/django.po +++ b/plinth/locale/ar_SA/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2020-06-10 15:41+0000\n" "Last-Translator: aiman an \n" "Language-Team: Arabic (Saudi Arabia) user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1381,11 +1509,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1397,11 +1525,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1451,12 +1579,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1564,50 +1694,58 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1670,11 +1808,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1685,33 +1818,33 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1772,18 +1905,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -1928,16 +2049,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1962,19 +2083,19 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2124,11 +2245,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2240,16 +2361,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2299,7 +2410,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2309,14 +2420,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2332,7 +2443,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2385,11 +2496,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "" @@ -2498,12 +2609,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2544,7 +2655,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2553,19 +2664,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2832,11 +2943,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -2862,7 +2973,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -2887,6 +2998,10 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +msgid "Services" +msgstr "" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -2899,56 +3014,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2956,185 +3071,190 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3142,7 +3262,7 @@ msgid "" "typical home setup.

" msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3151,7 +3271,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

" msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3159,11 +3279,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

" msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3174,7 +3294,7 @@ msgid "" "over time or not, it is safer to choose this option.

" msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3198,17 +3318,17 @@ msgid "" "workaround solutions but each solution has some limitations.

" msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3416,7 +3536,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3461,7 +3581,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3471,13 +3591,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3518,6 +3638,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3654,71 +3775,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3733,16 +3854,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3798,11 +3919,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -3997,6 +4118,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4082,7 +4216,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4106,11 +4240,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4118,7 +4252,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4128,19 +4262,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4162,6 +4296,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4362,32 +4500,32 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -4424,10 +4562,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4444,11 +4578,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4476,8 +4605,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4544,12 +4698,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -4818,8 +4972,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -4934,7 +5088,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -4975,7 +5129,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -4991,103 +5145,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5246,11 +5400,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5289,7 +5443,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5298,40 +5452,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5457,7 +5611,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5508,11 +5662,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5520,11 +5674,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" msgstr "" @@ -5536,6 +5690,23 @@ msgstr "" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5553,50 +5724,73 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5620,7 +5814,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5633,16 +5827,12 @@ msgstr "" msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5651,63 +5841,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -5834,7 +6024,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5954,7 +6144,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -5981,7 +6171,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -6069,59 +6259,59 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "" -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "" @@ -6133,23 +6323,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6391,12 +6581,40 @@ msgstr "" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 diff --git a/plinth/locale/bg/LC_MESSAGES/django.po b/plinth/locale/bg/LC_MESSAGES/django.po index 196961343..fcbb106d4 100644 --- a/plinth/locale/bg/LC_MESSAGES/django.po +++ b/plinth/locale/bg/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2019-10-12 14:52+0000\n" "Last-Translator: Nevena Mircheva \n" "Language-Team: Bulgarian user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1386,11 +1514,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1402,11 +1530,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1456,12 +1584,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1569,50 +1699,58 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1675,11 +1813,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1690,33 +1823,33 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1777,18 +1910,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -1933,16 +2054,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1967,19 +2088,19 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2129,11 +2250,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2245,16 +2366,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2304,7 +2415,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2314,14 +2425,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2337,7 +2448,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2390,11 +2501,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "" @@ -2503,12 +2614,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2549,7 +2660,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2558,19 +2669,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2837,11 +2948,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -2867,7 +2978,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -2892,6 +3003,10 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +msgid "Services" +msgstr "" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -2904,56 +3019,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2961,185 +3076,190 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3147,7 +3267,7 @@ msgid "" "typical home setup.

" msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3156,7 +3276,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

" msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3164,11 +3284,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

" msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3179,7 +3299,7 @@ msgid "" "over time or not, it is safer to choose this option.

" msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3203,17 +3323,17 @@ msgid "" "workaround solutions but each solution has some limitations.

" msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3421,7 +3541,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3466,7 +3586,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3476,13 +3596,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3523,6 +3643,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3659,71 +3780,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3738,16 +3859,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3803,11 +3924,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -4002,6 +4123,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4087,7 +4221,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4111,11 +4245,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4123,7 +4257,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4133,19 +4267,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4167,6 +4301,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4367,33 +4505,33 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Грешка при инсталиране на приложението: {error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4431,10 +4569,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4451,11 +4585,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4483,8 +4612,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4551,12 +4705,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -4825,8 +4979,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -4941,7 +5095,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -4982,7 +5136,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -4998,103 +5152,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5253,11 +5407,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5296,7 +5450,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5305,40 +5459,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5464,7 +5618,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5515,11 +5669,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5527,11 +5681,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -5545,6 +5699,23 @@ msgstr "" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5562,50 +5733,73 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5629,7 +5823,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5642,16 +5836,12 @@ msgstr "" msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5660,63 +5850,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -5843,7 +6033,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5965,7 +6155,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -5992,7 +6182,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -6080,59 +6270,59 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "" -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "" @@ -6144,23 +6334,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6402,12 +6592,40 @@ msgstr "" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 diff --git a/plinth/locale/bn/LC_MESSAGES/django.po b/plinth/locale/bn/LC_MESSAGES/django.po index 974545504..d6880dbc3 100644 --- a/plinth/locale/bn/LC_MESSAGES/django.po +++ b/plinth/locale/bn/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,7 +22,7 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "" @@ -127,11 +127,11 @@ msgstr "" msgid "Local Network Domain" msgstr "" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "" -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "" @@ -140,6 +140,10 @@ msgstr "" msgid "{app} (No data to backup)" msgstr "" +#: plinth/modules/backups/forms.py:50 +msgid "Repository" +msgstr "" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -205,7 +209,15 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +msgid "Key in Repository" +msgstr "" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "" @@ -368,6 +380,7 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -570,6 +583,164 @@ msgstr "" msgid "Mounting failed" msgstr "" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +msgid "Create or upload files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +msgid "Delete files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +msgid "File & Snippet Sharing" +msgstr "" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +msgid "Manage Passwords" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +msgid "Add password" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "" + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "" + +#: plinth/modules/bepasty/views.py:97 +msgid "Password added." +msgstr "" + +#: plinth/modules/bepasty/views.py:102 +msgid "Add Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:119 +msgid "Password deleted." +msgstr "" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -584,11 +755,11 @@ msgid "" "connection from {box_name}." msgstr "" -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "" @@ -615,6 +786,7 @@ msgstr "" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -637,9 +809,9 @@ msgstr "" msgid "Refresh IP address and domains" msgstr "" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -711,12 +883,13 @@ msgid "Configure" msgstr "" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "" @@ -774,7 +947,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "" @@ -818,67 +991,6 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -893,11 +1005,11 @@ msgid "" "need to be configured with the details provided here." msgstr "" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "" @@ -929,7 +1041,7 @@ msgstr "" msgid "Date & Time" msgstr "" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "" @@ -988,16 +1100,28 @@ msgstr "" msgid "Bittorrent client written in Python/PyGTK" msgstr "" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "" +#: plinth/modules/diagnostics/__init__.py:102 +msgid "passed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:103 +msgid "failed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1122,46 +1246,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1170,68 +1294,72 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "" +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +msgid "other update URL" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "" @@ -1285,7 +1413,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1327,12 +1455,12 @@ msgid "" "any user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1379,11 +1507,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1395,11 +1523,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1449,12 +1577,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1562,50 +1692,58 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1668,11 +1806,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1683,33 +1816,33 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1770,18 +1903,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -1926,16 +2047,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1960,19 +2081,19 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2122,11 +2243,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2238,16 +2359,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2297,7 +2408,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2307,14 +2418,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2330,7 +2441,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2383,11 +2494,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "" @@ -2496,12 +2607,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2542,7 +2653,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2551,19 +2662,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2830,11 +2941,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -2860,7 +2971,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -2885,6 +2996,10 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +msgid "Services" +msgstr "" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -2897,56 +3012,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2954,185 +3069,190 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3140,7 +3260,7 @@ msgid "" "typical home setup.

" msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3149,7 +3269,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

" msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3157,11 +3277,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

" msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3172,7 +3292,7 @@ msgid "" "over time or not, it is safer to choose this option.

" msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3196,17 +3316,17 @@ msgid "" "workaround solutions but each solution has some limitations.

" msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3414,7 +3534,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3459,7 +3579,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3469,13 +3589,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3516,6 +3636,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3652,71 +3773,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3731,16 +3852,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3796,11 +3917,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -3995,6 +4116,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4080,7 +4214,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4104,11 +4238,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4116,7 +4250,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4126,19 +4260,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4160,6 +4294,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4360,32 +4498,32 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -4422,10 +4560,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4442,11 +4576,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4474,8 +4603,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4542,12 +4696,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -4816,8 +4970,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -4932,7 +5086,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -4973,7 +5127,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -4989,103 +5143,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5244,11 +5398,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5287,7 +5441,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5296,40 +5450,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5455,7 +5609,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5506,11 +5660,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5518,11 +5672,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" msgstr "" @@ -5534,6 +5688,23 @@ msgstr "" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5551,50 +5722,73 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5618,7 +5812,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5631,16 +5825,12 @@ msgstr "" msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5649,63 +5839,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -5832,7 +6022,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5952,7 +6142,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -5979,7 +6169,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -6067,59 +6257,59 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "" -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "" @@ -6131,23 +6321,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6389,12 +6579,40 @@ msgstr "" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 diff --git a/plinth/locale/cs/LC_MESSAGES/django.po b/plinth/locale/cs/LC_MESSAGES/django.po index f4c0c3a23..07013effa 100644 --- a/plinth/locale/cs/LC_MESSAGES/django.po +++ b/plinth/locale/cs/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2020-06-24 11:41+0000\n" "Last-Translator: Pavel Borecki \n" "Language-Team: Czech XMPP klienta. Když je zapnutý, ejabberd je přístupný " "libovolnému uživateli s účtem na {box_name}." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Chat server" @@ -1580,11 +1720,11 @@ msgstr "" "Google účtu, vytvořit nový účet na některém z veřejných XMPP serverů (i přes " "Tor), nebo se dokonce připojit ještě bezpečněji, ke svému vlastnímu serveru." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "Gajim" @@ -1600,11 +1740,11 @@ msgstr "" "%(domainname)s. Doménu je možné nastavit na stránce nastavení systému." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "Správa archivu zpráv zapnuta" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "Správa archivu zpráv vypnuta" @@ -1666,12 +1806,14 @@ msgstr "Služba/port" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Zapnuto" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Vypnuto" @@ -1798,17 +1940,17 @@ msgstr "Gitweb" msgid "Simple Git Hosting" msgstr "Jednoduché hostování Git" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Invalid repository name." msgid "Invalid repository URL." msgstr "Neplatný název repozitáře." -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "Neplatný název repozitáře." -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 #, fuzzy #| msgid "" #| "Repository path is neither empty nor is an existing backups repository." @@ -1817,38 +1959,48 @@ msgstr "" "Popis umístění repozitáře buď není vyplněný nebo se nejedná o existující " "repozitář záloh." -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "Popis repozitáře" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "Volitelné, zobrazuje se na Gitweb" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Jméno vlastníka repozitáře" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "Neveřejný repozitář" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "K tomuto repozitáři umožnit přístup pouze pověřeným uživatelům." -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "Repozitář s tímto názvem už existuje." -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "Název repozitáře" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "Řetězec písmeny a číslicemi, který jednoznačně identifikuje repozitář." +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default" +msgid "Default branch" +msgstr "Výchozí" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "Git" @@ -1913,11 +2065,6 @@ msgstr "Repozitář upraven." msgid "Edit repository" msgstr "Upravit repozitář" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "Při nastavování se vyskytla chyba." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1928,33 +2075,35 @@ msgstr "{name} smazáno." msgid "Could not delete {name}: {error}" msgstr "{name} se nepodařilo smazat: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentace" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Příručka" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Získejte podporu" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Odeslat zpětnou vazbu" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "Zapojit se" @@ -2033,22 +2182,6 @@ msgstr "Je k dispozici nová verze %(box_name)s." msgid "%(box_name)s is up to date." msgstr "%(box_name)s je aktuální." -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "Výstraha ohledně zabezpečení" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" -"Používáte balíčky z Debian backports. Mějte na paměti, že bezpečnostní tým " -"projektu Debian se nezabývá opravami zabezpečení těchto balíčků. Nicméně " -"jsou spravovány na základě nejlepší snahy přispěvateli z komunit Debian a " -"FreedomBox." - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2239,16 +2372,16 @@ msgstr "" "Před odesláním hlášení chyby odeberte ze záznamů událostí veškerá hesla a " "ostatní osobní údaje." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "Dokumentace a často kladené dotazy" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "O {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "Příručka k {box_name}" @@ -2280,19 +2413,19 @@ msgid "" msgstr "" "První navštívení poskytovaného webového rozhraní spustí proces nastavení." -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "Spravovat aplikaci I2P" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "Anonymní síť" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P proxy" @@ -2471,11 +2604,11 @@ msgstr "" "desktopového klienta a nainstalujte ho. Poté spusťte Gobby a zvolte " "„Připojit k serveru“ a zadejte doménový název svého {box_name}." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby server" @@ -2600,16 +2733,6 @@ msgstr "Žádný certifikát" msgid "Re-obtain" msgstr "Získat znovu" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Smazat" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Odvolat platnost" @@ -2663,7 +2786,7 @@ msgstr "Certifikát pro doménu {domain} úspěšně smazán" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Nepodařilo se smazat certifikát pro doménu {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2680,17 +2803,22 @@ msgstr "" "čísla. Díky federování mohou uživatelé na daném Matrix serveru komunikovat " "s uživateli všech ostatních Matrix serverů." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 +#, fuzzy +#| msgid "" +#| "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" "Pro komunikaci jsou k dispozici klienti pro mobilní zařízení, osobní počítače a web. Doporučujeme " "klientaRiot." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -2709,8 +2837,8 @@ msgstr "" "využívat pouze existující uživatelé systému, tuto funkci vypněte." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "Riot" +msgid "Element" +msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2783,11 +2911,11 @@ msgstr "" "certifikát. Jděte na Let's Encrypt a " "získejte takový." -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "Registrace pro veřejnost otevřena" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "Registrace pro veřejnost zavřena" @@ -2921,12 +3049,12 @@ msgstr "" "serveru je třeba Minetest " "klient." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Pískoviště s kostkami" @@ -2971,7 +3099,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "Pokud je vypnuto, postavy hráčů nemohou zemřít nebo se zranit." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Adresa" @@ -2980,19 +3108,19 @@ msgstr "Adresa" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "Nastavení nejvyššího umožněného počtu hráčů aktualizováno" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "Nastavení tvořivého režimu aktualizována" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "Nastavení PVP aktualizováno" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "Nastavení poškozování aktualizováno" @@ -3290,11 +3418,11 @@ msgstr "" "dispozici jsou klienti pro připojení z " "desktopu a Android zařízení." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "Hlasový chat" @@ -3322,7 +3450,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3359,6 +3487,12 @@ msgstr "Vše" msgid "All web apps" msgstr "Všechny webové aplikace" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Služba" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3373,38 +3507,38 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Sítě" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "S použitím DNSSEC na IPv{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Typ připojení" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Název připojení" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 #, fuzzy #| msgid "Interface" msgid "Network Interface" msgstr "Rozhraní" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "Síťové zařízení ke kterému má toto spojení být přidruženo." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Zóna brány firewall" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3412,21 +3546,21 @@ msgstr "" "Zóna brány firewall řídí které služby jsou přes tato rozhraní dostupné. Jako " "Vnitřní vyberte pouze sítě, kterým důvěřujete." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Vnější" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Vnitřní" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "Způsob IPv4 adresování" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3438,19 +3572,26 @@ msgstr "" "bude vystupovat jako směrovač, poskytovat nastavení klientům na této síti a " "sdílet jim připojení k Internetu." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "Automaticky (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Sdílené" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Příručka" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Síťová maska" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3458,21 +3599,21 @@ msgstr "" "Volitelná hodnota. Pokud není vyplněno, bude použita výchozí maska sítě dané " "třídy IP adresy." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Brána" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "Volitelná hodnota." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS server" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3480,11 +3621,11 @@ msgstr "" "Nemusí být vyplněné. Pokud ale je a metoda IPv4 adresování je „Automaticky“, " "budou ignorovány DNS servery poskytnuté DHCP serverem." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "Pomocný DNS server" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3492,11 +3633,11 @@ msgstr "" "Nemusí být vyplněné. Pokud ale je a metoda IPv4 adresování je „Automaticky“, " "budou ignorovány DNS servery poskytnuté DHCP serverem." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "Způsob IPv6 adresování" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3505,27 +3646,27 @@ msgstr "" "„Automatické“ metody způsobí, že {box_name} získá nastavení z této sítě a " "bude na ní klientem." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Automaticky" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "Automaticky, pouze DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "Ignorovat" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "Předpona" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "Hodnota z rozmezí 1 až 128." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3533,7 +3674,7 @@ msgstr "" "Nemusí být vyplněné. Pokud ale je a metoda získání IPv6 adresy je " "„Automaticky“, budou ignorovány DNS servery poskytnuté DHCP serverem." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3541,54 +3682,54 @@ msgstr "" "Nemusí být vyplněné. Pokud ale je a metoda získání IPv6 adresy je " "„Automaticky“, budou ignorovány DNS servery poskytnuté DHCP serverem." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- vybrat --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "Viditelný název sítě." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Režim" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Infrastrukturní" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Přístupový bod" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "Dočasný" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Frekvenční pásmo" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Kanál" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3596,11 +3737,11 @@ msgstr "" "Nemusí být vyplněné. Bezdrátový kanál ve vybraném frekvenčním pásmu na který " "omezit. Nevyplněno nebo 0 (nula) znamená automatický výběr." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3610,11 +3751,11 @@ msgstr "" "připojování k přístupovému bodu, připojit pouze pokud BSSID přístupového " "bodu odpovídá tomu zadanému. Příklad: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Režim ověřování" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3622,21 +3763,21 @@ msgstr "" "Pokud je bezdrátová síť zabezpečená a pro připojení vyžaduje heslo, vyberte " "WPA." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Otevřené" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, fuzzy, python-brace-format #| msgid "Use upstream bridges to connect to Tor network" msgid "Specify how your {box_name} is connected to your network" msgstr "Pro připojení k Tor síti použijte nadřazené mosty" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3644,7 +3785,7 @@ msgid "" "typical home setup.

" msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3653,7 +3794,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

" msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3661,11 +3802,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

" msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3676,7 +3817,7 @@ msgid "" "over time or not, it is safer to choose this option.

" msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3700,19 +3841,19 @@ msgid "" "workaround solutions but each solution has some limitations.

" msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "Current Network Configuration" msgid "Preferred router configuration" msgstr "Stávající nastavení sítě" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3926,7 +4067,7 @@ msgid "Create Connection" msgstr "Vytvořit připojení" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Smazat připojení" @@ -3971,7 +4112,7 @@ msgid "Computer" msgstr "Počítač" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Upravit připojení" @@ -3981,13 +4122,13 @@ msgstr "Připojení" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi sítě poblíž" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Přidat připojení" @@ -4028,6 +4169,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -4170,73 +4312,73 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Síťová připojení" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "Připojení nelze zobrazit: Připojení neexistuje." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "Informace o spojení" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "Připojení nelze upravit: Připojení neexistuje." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "Tento typ připojení ještě není podporován." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "Připojení {name} aktivováno." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "Aktivace připojení se nezdařila: Připojení nenalezeno." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Nepodařilo se aktivovat připojení {name}: Není k dispozici žádné použitelné " "zařízení." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Připojení {name} deaktivováno." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "Deaktivace připojení se nezdařila: Připojení nenalezeno." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "Přidávání nového generického připojení" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "Přidávání nového ethernetového připojení" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "Přidávání nového PPPoE připojení" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "Přidávání nového Wi-Fi připojení" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "Připojení {name} smazáno." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "Smazání připojení se nezdařilo: Připojení nenalezeno." @@ -4257,16 +4399,16 @@ msgstr "" "zvýšení zabezpečení a anonymity je také možné přistupovat k ostatku " "Internetu prostřednictvím {box_name}." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Virtuální soukromá síť" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4342,11 +4484,11 @@ msgstr "" msgid "Download my profile" msgstr "Stáhnout si svůj profil" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Nastavování dokončeno." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Nastavování se nezdařilo." @@ -4580,6 +4722,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 #, fuzzy #| msgid "System Configuration" @@ -4684,7 +4839,7 @@ msgstr "Privoxy" msgid "Web Proxy" msgstr "Webová proxy" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Přistupte {url} s proxy {proxy} na tcp{kind}" @@ -4718,11 +4873,11 @@ msgstr "" "\"http://quassel-irc.org/downloads\">desktopu a mobilních zařízení." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "IRC klient" @@ -4730,7 +4885,7 @@ msgstr "IRC klient" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4750,7 +4905,7 @@ msgstr "" "a>. K Radicale je možné přistupovat pomocí libovolného uživatelského účtu na " "{box_name}." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4760,12 +4915,12 @@ msgstr "" "nových kalendářů a adresářů kontaktů. Nepodporuje přidávání událostí či " "kontaktů, to je třeba dělat v tomu určeném klientovi." -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "Kalendář a adresář kontaktů" @@ -4793,6 +4948,12 @@ msgstr "" "Jakýkoli uživatel s účtem na {box_name} může zobrazit nebo dělat změny v " "libovolném kalendáři / adresáři kontaktů." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Přístupový bod" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "DAVx5" @@ -5041,43 +5202,43 @@ msgstr "Sdílení přidáno." msgid "Action" msgstr "Akce" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 #, fuzzy #| msgid "Add Share" msgid "Open Share" msgstr "Přidat sdílení" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 #, fuzzy #| msgid "Add Share" msgid "Group Share" msgstr "Přidat sdílení" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Homepage" msgid "Home Share" msgstr "Domovská stránka" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Sdílení smazáno." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Chyba při vysouvání zařízení: {error_message}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Sdílení upraveno." -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" @@ -5119,10 +5280,6 @@ msgstr "Bezpečné vyhledávání" msgid "Select the default family filter to apply to your search results." msgstr "Vyberte výchozí dětský filtr který uplatnit na výsledky vyhledávání." -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "Žádný" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "Střední" @@ -5140,11 +5297,6 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Umožnit, aby tato aplikace byla používána kýmkoli, kdo se k ní může dostat." -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "Nastavení aktualizována." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "Omezit přihlášení na konzoli (doporučeno)" @@ -5179,8 +5331,33 @@ msgstr "" msgid "Show security report" msgstr "Zobrazit výkaz o zabezpečení" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "Výkaz o zabezpečení" @@ -5257,12 +5434,12 @@ msgstr "Žádný" msgid "Not running" msgstr "Tor je spuštěné" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Chyba při nastavování omezeného přístupu: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "Nastavení zabezpečení aktualizováno" @@ -5581,9 +5758,13 @@ msgid "Yearly Snapshots Limit" msgstr "Limit ročních zachycených stavů" #: plinth/modules/snapshot/forms.py:49 +#, fuzzy +#| msgid "" +#| "Keep a maximum of this many yearly snapshots. The default value is 0 " +#| "(disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" "Ponechat nejvýše tolik ročních zachycených stavů. Výchozí hodnota je 0 " "(ponechat všechny)." @@ -5713,7 +5894,7 @@ msgstr "" "spojení provádět úkoly správy, kopírovat soubory nebo spouštět ostatní " "služby." -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "Server zabezpečeného shellu (SSH)" @@ -5758,7 +5939,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "Ověření vůči vzdálenému serveru se nezdařilo." -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "Sdružené přihlášení (SSO)" @@ -5777,90 +5958,90 @@ msgstr "" "{box_name}. Lze zobrazit úložná zařízení, která jsou využívána, připojovat a " "odpojovat ta vyjímatelná." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "Úložiště" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bajtů" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "Operace se nezdařila." -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "Operace byla zrušena." -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "Toto zařízení už je odpojováno (umount)." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "Operace není podporována z důvodu chybějící podpory ovladače/nástroje." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "Časový limit aplikace překročen." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Operace by probudila disk který je v režimu hlubokého spánku." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "Pokus o odpojení zařízení které je zaneprázdněno." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "Operace už byla zrušena." -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "Chybí oprávnění pro provedení požadované operace." -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "Toto zařízení je už připojeno (mount)." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "Zařízení není připojeno." -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "Není umožněno použít požadovanou volbu." -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "Zařízení je připojeno jiným uživatelem." -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -5870,15 +6051,15 @@ msgstr "" "Varování: Dochází volné místo na systémovém oddílu ({percent_used}% využito, " "{free_space} volné)." -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6075,11 +6256,11 @@ msgstr "" "Tento {box_name} nese ve výchozím stavu úložný uzel a uvaděč. Je možné " "přidat další uvaděče, které představí tento uzel ostatním úložným uzlům." -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "Distribuované souborové úložiště" @@ -6122,7 +6303,7 @@ msgstr "Připojené uvaděče" msgid "Remove" msgstr "Odebrat" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6136,42 +6317,42 @@ msgstr "" "prohlížeč Tor Browser." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor skrytá služba" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "Tor Socks proxy" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "Předávájící Tor most" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "Port Tor předávání k dispozici" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Obfs3 transport zaregistrován" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Obfs4 transport zaregistrován" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Přistoupit k URL adrese {url} na tcp{kind} prostřednictvím Tor" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Potvrdit použití Tor na {url} na tcp{kind}" @@ -6327,7 +6508,7 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Tor SOCKS port je k dispozici na vašem %(box_name)s na TCP portu 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Nastavení se nezměnila" @@ -6396,12 +6577,12 @@ msgstr "Čtečka novinek" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (fork)" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" "Zjistit dostupnost a uplatnit nejnovější aktualizace a opravy zabezpečení." -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6409,11 +6590,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "Aktualizovat" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6427,6 +6608,23 @@ msgstr "Zapnout automatické aktualizace" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "Když je zapnuto, FreedomBox se jednou denně automaticky zaktualizuje." +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s is up to date." @@ -6445,19 +6643,40 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +#, fuzzy +#| msgid "Manual update" +msgid "Manual Update" msgstr "Ruční aktualizace" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "Aktualizace…" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "Aktualizovat nyní" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 #, fuzzy #| msgid "" #| "This may take a long time to complete. During an update, " @@ -6472,33 +6691,37 @@ msgstr "" "aktualizace není možné instalovat aplikace. Také webové rozhraní může být " "dočasně nedostupné a zobrazovat chybu. V takovém případě ho načtěte znovu." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 #, fuzzy #| msgid "Toggle recent update logs" msgid "Show recent update logs" msgstr "Vyp/zap. záznamy událostí při nedávných aktualizacích" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "Chyba při nastavování bezobslužných aktualizací: {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "Automatické aktualizace zapnuty" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "Automatické aktualizace vypnuty" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "Proces přechodu na novější verze zahájen." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "Spouštění přechodu na novější verzi se nezdařilo." +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6522,7 +6745,7 @@ msgstr "Uživatelé a skupiny" msgid "Access to all services and system settings" msgstr "Přístup ke všem službám a nastavení systému" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Zkontrolujte LDAP položku „{search_item}“" @@ -6538,16 +6761,12 @@ msgstr "" msgid "Enter a valid username." msgstr "Neplatný název serveru" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "Oprávnění" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6568,20 +6787,20 @@ msgstr "" "skupině správců (admin) se budou moci přihlásit všude. Mohou se k systému " "přihlásit také prostřednictvím SSH a mají práva správy (sudo)." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "Vytvoření LDAP uživatele se nezdařilo." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Přidání nového uživatele do skupiny {group} se nezdařilo." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Pověřené SSH klíče" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6591,45 +6810,45 @@ msgstr "" "systému i bez zadávání hesla. Klíčů je možné vložit vícero, každý na vlastní " "řádek. Prázdné řádky a ty, které začínají na znak # budou ignorovány." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "Přejmenování LDAP uživatele se nezdařilo." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "Odebrání uživatele ze skupiny se nezdařilo." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "Přidání uživatele do skupiny se nezdařilo." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "Nepodařilo se vložit SSH klíče." -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "Přidání uživatele do skupiny se nezdařilo." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "Není možné smazat účet jediného zbývajícího správce systému." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "Změna hesla LDAP uživatele se nezdařila." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Přidání nového uživatele do skupiny správců (admin) se nezdařilo." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "Omezení přístupu ke konzoli se nezdařilo." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "Uživatelský účet vytvořen, není jste jím přihlášeni" @@ -6761,7 +6980,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6897,7 +7116,7 @@ msgid "Add a new peer" msgstr "Přidat nový uvaděč" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6930,7 +7149,7 @@ msgid "Add a new server" msgstr "Přidat nový uvaděč" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" msgid "Add Connection to Server" @@ -7036,85 +7255,85 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 #, fuzzy #| msgid "Add new introducer" msgid "Added new client." msgstr "Přidat nový uvaděč" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy #| msgid "A share with this name already exists." msgid "Client with public key already exists" msgstr "Sdílení s tímto názvem už existuje." -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 #, fuzzy #| msgid "Email Client" msgid "Allowed Client" msgstr "E-mailový klient" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "Aktualizovat nastavení" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy #| msgid "Email Client" msgid "Modify Client" msgstr "E-mailový klient" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 #, fuzzy #| msgid "Delete All" msgid "Delete Allowed Client" msgstr "Smazat vše" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "Archive deleted." msgid "Client deleted." msgstr "Archiv smazán." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 #, fuzzy #| msgid "Repository not found" msgid "Client not found" msgstr "Repozitář nenalezen" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added custom service" msgid "Added new server." msgstr "Uživatelem určená služba přidána" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "Typ připojení" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "Aktualizovat nastavení" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Edit Connection" msgid "Modify Connection to Server" msgstr "Upravit připojení" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "Smazat připojení" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "Share deleted." msgid "Server deleted." @@ -7128,23 +7347,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Obecné" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "Chyba při instalaci" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "Instalace" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "stahování" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "změna média" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "soubor s nastaveními: {file}" @@ -7421,17 +7640,57 @@ msgstr "Žádný certifikát" msgid "Port Forwarding" msgstr "Předávání portů" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Možná bude třeba zkontrolovat nastavení sítě a případně upravit." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, fuzzy, python-format +#| msgid "" +#| "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 " +#| "%(service_name)s:" +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" msgstr "" "Pokud se váš FreedomBox nachází za směrovačem, bude třeba na směrovači " "nastavit předávání portů. Přesměrovávány by měly být následující porty pro " "%(service_name)s:" +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "protokol" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "Nastavení %(box_name)s" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "Nainstalovat tuto aplikaci?" @@ -7480,6 +7739,124 @@ msgstr "%(percentage)s%% dokončeno" msgid "Gujarati" msgstr "gudžarátština" +#, fuzzy +#~| msgid "Backup archives" +#~ msgid "Backports activated." +#~ msgstr "Archivy záloh" + +#, fuzzy +#~| msgid "" +#~| "Coquelicot is a “one-click” file sharing web application with a focus on " +#~| "protecting users’ privacy. It is best used for quickly sharing a single " +#~| "file. " +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot je webová aplikace pro jednoduché sdílení souborů, zaměřená na " +#~ "ochranu soukromí uživatelů. Nejlépe poslouží pro rychlé nasdílení " +#~ "jednotlivých souborů. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Tato instance Coquelicot je vystavena do Internetu, ale neoprávněnému " +#~ "přístupu je zabráněno požadováním hesla pro nahrávání souborů. Nové heslo " +#~ "je možné nastavit ve formuláři, který se objeví po instalaci. Výchozí " +#~ "heslo pro nahrávání je „test“." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "Heslo pro nahrávání" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Nastavte nové heslo pro nahrávání na Coquelicot. Pro ponechání " +#~ "stávajícího hesla tuto kolonku nevyplňujte." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Nejvyšší umožněná velikost souboru (v MiB)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Nastavte nejvyšší umožněnou velikost jednotlivých souborů, jakou bude " +#~ "možné na Coquelicot nahrát." + +#~ msgid "coquelicot" +#~ msgstr "coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Heslo pro nahrávání aktualizováno" + +#~ msgid "Failed to update upload password" +#~ msgstr "Heslo pro nahrávání se nepodařilo aktualizovat" + +#~ msgid "Maximum file size updated" +#~ msgstr "Nastavení nejvyšší umožněné velikosti souboru aktualizováno" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "" +#~ "Nastavení nejvyšší umožněné velikosti nahrávaného souboru se nepodařilo " +#~ "aktualizovat" + +#~ msgid "Riot" +#~ msgstr "Riot" + +#~ msgid "Security Notice" +#~ msgstr "Výstraha ohledně zabezpečení" + +#, fuzzy +#~| msgid "" +#~| "You are using packages from Debian backports. Please note that these " +#~| "packages do not have security support from Debian. However, they are " +#~| "maintained on a best-effort basis by contributors in Debian and " +#~| "FreedomBox community." +#~ msgid "" +#~ "Backports are enabled. Please note that packages from the backports " +#~ "repository do not have security support from Debian. However, they are " +#~ "maintained on a best-effort basis by contributors in Debian and " +#~ "FreedomBox community." +#~ msgstr "" +#~ "Používáte balíčky z Debian backports. Mějte na paměti, že bezpečnostní " +#~ "tým projektu Debian se nezabývá opravami zabezpečení těchto balíčků. " +#~ "Nicméně jsou spravovány na základě nejlepší snahy přispěvateli z komunit " +#~ "Debian a FreedomBox." + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Zálohy" + +#, fuzzy +#~| msgid "" +#~| "You are using packages from Debian backports. Please note that these " +#~| "packages do not have security support from Debian. However, they are " +#~| "maintained on a best-effort basis by contributors in Debian and " +#~| "FreedomBox community." +#~ msgid "" +#~ "Please note that backports packages do not have security support from " +#~ "Debian. However, they are maintained on a best-effort basis by " +#~ "contributors in Debian and FreedomBox community." +#~ msgstr "" +#~ "Používáte balíčky z Debian backports. Mějte na paměti, že bezpečnostní " +#~ "tým projektu Debian se nezabývá opravami zabezpečení těchto balíčků. " +#~ "Nicméně jsou spravovány na základě nejlepší snahy přispěvateli z komunit " +#~ "Debian a FreedomBox." + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "Aktivovat" + #~ msgid "Restoring" #~ msgstr "Obnovuje se" @@ -7788,9 +8165,6 @@ msgstr "gudžarátština" #~ msgid "Manage" #~ msgstr "Spravovat" -#~ msgid "Create" -#~ msgstr "Vytvořit" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "Kupon který jste obdrželi s vaším {box_name} edice „Dunaj“" @@ -8123,9 +8497,6 @@ msgstr "gudžarátština" #~ msgid "Location to upload the archive to" #~ msgstr "Umístění do kterého nahrát archiv" -#~ msgid "Backup archives" -#~ msgstr "Archivy záloh" - #~ msgid "" #~ "No apps that support backup are currently installed. Backup can be " #~ "created after an app supporting backups is installed." @@ -8331,9 +8702,6 @@ msgstr "gudžarátština" #~ msgid "BitTorrent" #~ msgstr "BitTorrent" -#~ msgid "admin" -#~ msgstr "správce" - #~ msgid "wiki" #~ msgstr "wiki" diff --git a/plinth/locale/da/LC_MESSAGES/django.po b/plinth/locale/da/LC_MESSAGES/django.po index c4547de95..49cdbba2f 100644 --- a/plinth/locale/da/LC_MESSAGES/django.po +++ b/plinth/locale/da/LC_MESSAGES/django.po @@ -9,11 +9,11 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: 2020-06-28 19:30+0000\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-08-18 20:32+0000\n" "Last-Translator: Jens Molgaard \n" -"Language-Team: Danish \n" +"Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -25,7 +25,7 @@ msgstr "" msgid "Page source" msgstr "Sidens kildekode" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "FreedomBox" @@ -138,12 +138,12 @@ msgstr "Tjenestesøgning" msgid "Local Network Domain" msgstr "Lokalt netværksdomæne" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "" "Sikkerhedskopiering lader dig oprette og administrere sikkerhedskopier." -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "Sikkerhedskopiering" @@ -152,6 +152,12 @@ msgstr "Sikkerhedskopiering" msgid "{app} (No data to backup)" msgstr "{app} (Ingen data at sikkerhedskopiere)" +#: plinth/modules/backups/forms.py:50 +#, fuzzy +#| msgid "Create Repository" +msgid "Repository" +msgstr "Opret lager" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -219,7 +225,17 @@ msgstr "" "\"Nøgle i arkiv\" betyder at en nøglefil beskyttet med kodeord gemmes sammen " "med sikkerhedskopien." -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +#, fuzzy +#| msgid "Create Repository" +msgid "Key in Repository" +msgstr "Opret lager" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "Adgangsfrase" @@ -392,6 +408,7 @@ msgid "Delete Archive %(name)s" msgstr "Slet arkivet %(name)s" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -613,6 +630,186 @@ msgstr "Afmontering mislykkedes!" msgid "Mounting failed" msgstr "Montering mislykkedes" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +#, fuzzy +#| msgid "Restore from uploaded file" +msgid "Create or upload files" +msgstr "Genopret fra overført fil" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +#, fuzzy +#| msgid "Delete User" +msgid "Delete files" +msgstr "Slet Bruger" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +#, fuzzy +#| msgid "Enable Shaarli" +msgid "File & Snippet Sharing" +msgstr "Aktiver Shaarli" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#, fuzzy +#| msgid "Transmission BitTorrent" +msgid "Permissions" +msgstr "Transmission BitTorrent" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +#, fuzzy +#| msgid "Change Password" +msgid "Manage Passwords" +msgstr "Ændr kodeord" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +#, fuzzy +#| msgid "Show password" +msgid "Add password" +msgstr "Vis kodeord" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +#, fuzzy +#| msgid "No archives currently exist." +msgid "No passwords currently configured." +msgstr "Ingen arkiver er oprettet endnu." + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "Kodeord" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "Opret" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "Slet" + +#: plinth/modules/bepasty/views.py:46 +#, fuzzy +#| msgid "admin" +msgid "Admin" +msgstr "admin" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "Konfiguration opdateret." + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "Der opstod en fejl under konfigurationen." + +#: plinth/modules/bepasty/views.py:97 +#, fuzzy +#| msgid "Password" +msgid "Password added." +msgstr "Kodeord" + +#: plinth/modules/bepasty/views.py:102 +#, fuzzy +#| msgid "Password" +msgid "Add Password" +msgstr "Kodeord" + +#: plinth/modules/bepasty/views.py:119 +#, fuzzy +#| msgid "Password" +msgid "Password deleted." +msgstr "Kodeord" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -632,11 +829,11 @@ msgstr "" "andre maskiner på det lokale netværk. Det er også uforeneligt med deling af " "internetforbindelse fra {box_name}." -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "DNS-server" @@ -665,6 +862,7 @@ msgstr "Betjener domæner" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -687,9 +885,9 @@ msgstr "IP-adresser" msgid "Refresh IP address and domains" msgstr "Opfrisk IP-adresse og domæner" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -759,6 +957,8 @@ msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" +"Her kan du konfigurere nogle generelle indstillinger såsom værtsnavn, " +"domænenavn, webserverens hjemmeside osv." #: plinth/modules/config/__init__.py:52 msgid "General Configuration" @@ -773,12 +973,13 @@ msgid "Configure" msgstr "Konfigurer" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "Domænenavn" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "Ugyldigt domænenavn" @@ -790,7 +991,7 @@ msgstr "Standard" #: plinth/modules/config/forms.py:36 msgid "FreedomBox Service (Plinth)" -msgstr "" +msgstr "FreedomBox-tjenesten (Plinth)" #: plinth/modules/config/forms.py:48 msgid "Hostname" @@ -844,14 +1045,20 @@ msgid "" "is set to something other than {box_name} Service (Plinth), your users must " "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" +"Vælg standardsiden som skal vises når nogen besøger din {box_name} på " +"nettet. En typisk anvendelse er at sætte din blog eller wiki som hjemmesiden " +"der vises når nogen besøger domænenavnet. Bemærk at hvis du sætter " +"hjemmesiden til noget andet end {box_name}-tjenesten (Plinth), så skal dine " +"brugere eksplicit tilføje /plinth eller /freedombox for at nå {box_name}-" +"tjenesten (Plinth)." #: plinth/modules/config/forms.py:91 msgid "Show advanced apps and features" -msgstr "" +msgstr "Vis avancerede applikationer og funktionalitet" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." -msgstr "" +msgstr "Vis applikationer og funktionalitet som kræver mere teknisk viden." #: plinth/modules/config/views.py:46 #, python-brace-format @@ -879,7 +1086,7 @@ msgstr "Kunne ikke sætte værtsnavn: {exception}" #: plinth/modules/config/views.py:72 msgid "Webserver home page set" -msgstr "" +msgstr "Webserverens hjemmeside er blevet indstillet" #: plinth/modules/config/views.py:80 #, fuzzy, python-brace-format @@ -889,80 +1096,11 @@ msgstr "Kunne ikke sætte domænenavn: {exception}" #: plinth/modules/config/views.py:85 msgid "Showing advanced apps and features" -msgstr "" +msgstr "Viser avancerede applikationer og funktionalitet" #: plinth/modules/config/views.py:88 msgid "Hiding advanced apps and features" -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:47 -#, fuzzy -#| msgid "Enable Shaarli" -msgid "File Sharing" -msgstr "Aktiver Shaarli" - -#: plinth/modules/coquelicot/forms.py:13 -#, fuzzy -#| msgid "Save Password" -msgid "Upload Password" -msgstr "Gem Kodeord" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/views.py:36 -#, fuzzy -#| msgid "Password" -msgid "Upload password updated" -msgstr "Kodeord" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "" - -#: plinth/modules/coquelicot/views.py:47 -#, fuzzy -#| msgid "Configuration updated" -msgid "Maximum file size updated" -msgstr "Konfiguration opdateret" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "" +msgstr "Skjuler avancerede applikationer og funktionalitet" #: plinth/modules/coturn/__init__.py:31 msgid "" @@ -971,20 +1109,26 @@ msgid "" "other communication servers can use it to establish a call between parties " "who are otherwise unable connect to each other." msgstr "" +"Coturn er en server der facilitere lyd-/videoopkald og konferencer ved at " +"stille en implementering af TURN- og STUN-protokollerne til rådighed. " +"WebRTC, SIP og andre kommunikationsservere kan bruge dette til at oprette et " +"opkald mellem parter der ellers ikke kan oprette forbindelse til hinanden." #: plinth/modules/coturn/__init__.py:35 msgid "" "It is not meant to be used directly by users. Servers such as matrix-synapse " "need to be configured with the details provided here." msgstr "" +"Den er ikke beregnet til at blive anvendt direkte af brugerne. Servere såsom " +"matrix-synapse skal konfigureres med detaljerne som er angivet her." -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" -msgstr "" +msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" -msgstr "" +msgstr "VoIP-hjælper" #: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 #, fuzzy @@ -997,10 +1141,13 @@ msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." msgstr "" +"Angiv et domæne der skal bruges TLS med. Hvis listen er tom skal du " +"konfigurere mindst ét domæne med certifikater." #: plinth/modules/coturn/templates/coturn.html:15 msgid "Use the following URLs to configure your communication server:" msgstr "" +"Brug de følgende webadresser til at konfigurere din kommunikationsserver:" #: plinth/modules/coturn/templates/coturn.html:26 #, fuzzy @@ -1024,9 +1171,9 @@ msgstr "" msgid "Date & Time" msgstr "Dato & Tid" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" -msgstr "" +msgstr "Tid synkroniseret med NTP-server" #: plinth/modules/datetime/forms.py:18 msgid "Time Zone" @@ -1079,7 +1226,7 @@ msgstr "" #: plinth/modules/deluge/__init__.py:46 #: plinth/modules/transmission/__init__.py:48 msgid "Download files using BitTorrent applications" -msgstr "" +msgstr "Download filer ved hjælp af BitTorrent-applikationer" #: plinth/modules/deluge/__init__.py:50 plinth/modules/deluge/manifest.py:9 #, fuzzy @@ -1100,9 +1247,9 @@ msgstr "Download-mappe" #: plinth/modules/deluge/manifest.py:10 msgid "Bittorrent client written in Python/PyGTK" -msgstr "" +msgstr "Bittorrent-klient skrevet i Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1110,10 +1257,24 @@ msgstr "" "Systemets diagnostiske test vil udføre en række tjek af dit system for at " "afgøre om applikationer og tjenester virker som forventet." -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "Diagnosticering" +#: plinth/modules/diagnostics/__init__.py:102 +msgid "passed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:103 +#, fuzzy +#| msgid "Setup failed." +msgid "failed" +msgstr "Opsætning fejlede." + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1132,7 +1293,7 @@ msgstr "Resultater" #: plinth/modules/diagnostics/templates/diagnostics_app.html:12 #, python-format msgid "App: %(app_id)s" -msgstr "" +msgstr "Applikation: %(app_id)s" #: plinth/modules/diagnostics/templates/diagnostics_app.html:10 msgid "Diagnostic Results" @@ -1161,29 +1322,33 @@ msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." msgstr "" +"diaspora* er et decentraliseret socialt netværk hvor du selv kan lagre og " +"kontrollere dine egne data." #: plinth/modules/diaspora/__init__.py:69 #: plinth/modules/diaspora/manifest.py:23 msgid "diaspora*" -msgstr "" +msgstr "diaspora*" #: plinth/modules/diaspora/__init__.py:70 msgid "Federated Social Network" -msgstr "" +msgstr "Føderativt socialt netværk" #: plinth/modules/diaspora/forms.py:13 msgid "Enable new user registrations" -msgstr "" +msgstr "Aktivér indregistrering af nye brugere" #: plinth/modules/diaspora/manifest.py:11 msgid "dandelion*" -msgstr "" +msgstr "dandelion*" #: plinth/modules/diaspora/manifest.py:13 msgid "" "It is an unofficial webview based client for the community-run, distributed " "social network diaspora*" msgstr "" +"Dette er en uofficiel webview-baseret klient til det fællesskabsdrevne, " +"distribuerede sociale netværk diaspora*" #: plinth/modules/diaspora/templates/diaspora-post-setup.html:16 #, python-format @@ -1194,6 +1359,12 @@ msgid "" "podname wouldn't be accessible.
You can access the diaspora* pod at diaspora.%(domain_name)s " msgstr "" +"Domænet for denne diaspora*pod er sat til %(domain_name)s. Bruger-ID " +"vil således være af formen brugernavn@diaspora.%(domain_name)s
" +"Hvis FreedomBox-domænenavnet bliver ændret vil al data for brugere " +"registreret med det tidligere pod-navn være utilgængelige.
Du kan " +"tilgå denne diaspora*pod på diaspora.%(domain_name)s." #: plinth/modules/diaspora/templates/diaspora-pre-setup.html:43 #: plinth/modules/dynamicdns/templates/dynamicdns_configure.html:25 @@ -1255,7 +1426,7 @@ msgstr "Dynamisk DNS Klient" msgid "Dynamic Domain Name" msgstr "Domænenavn" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1265,7 +1436,7 @@ msgstr "" "bruges i URL'en. For flere detaljer se skabelonerne for opdaterings-URL'er i " "eksemplernes tjenester." -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1275,7 +1446,7 @@ msgstr "" "udbyderen ikke understøtter GnuDIP-protokollen eller ikke er prædefineret, " "kan en opdaterings-URL fra din udbyder angives direkte." -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1283,16 +1454,16 @@ msgstr "" "Her skal ikke angives en URL (såsom \"https://example.com/\"), men blot " "værtsnavnet for GnuDIP-serveren (såsom \"example.com\")." -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "Det offentlige domænenavn du vil bruge til at nå din {box_name}." -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "Aktiver dette hvis din udbyder bruger selvunderskrevne certifikater." -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1300,11 +1471,11 @@ msgstr "" "Hvis denne option er aktiveret vil dit brugernavn og kodeord blive anvendt " "til basal (\"basic\") HTTP-autentifikation." -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "Lad dette felt stå tomt hvis du vil beholde dit nuværende kodeord." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1318,68 +1489,74 @@ msgstr "" "hvorfra klientens forespørgsel kommer (eksempelvis: http://myip." "datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "Brugernavnet der blev brugt ved kontooprettelse." +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +#, fuzzy +#| msgid "Update URL" +msgid "other update URL" +msgstr "Opdaterings-URL" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "Aktiver Dynamisk DNS" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "Servicetype" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "GnuDIP Serveradresse" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "Ugyldigt servernavn" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "Opdaterings-URL" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "Accepter alle SSL-certifikater" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "Brug basal (\"basic\") HTTP-autentifikation" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "Brugernavn" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "Kodeord" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "Vis kodeord" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" -msgstr "" +msgstr "URL til at slå den offentlige IP-addresse op" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Angiv venligst opdaterings-URL eller GnuDIP serveradresse" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "Angiv venligst et brugernavn til GnuDIP" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "Angiv venligst et domæne til GnuDIP-server" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "Angiv venligst et kodeord" @@ -1454,7 +1631,7 @@ msgstr "" msgid "Last update" msgstr "Seneste opdatering" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Om" @@ -1505,12 +1682,12 @@ msgstr "" "klienten eller enhver anden XMPP-klient." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" -msgstr "" +msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 #, fuzzy #| msgid "Web Server" msgid "Chat Server" @@ -1518,7 +1695,7 @@ msgstr "Webserver" #: plinth/modules/ejabberd/forms.py:16 msgid "Enable Message Archive Management" -msgstr "" +msgstr "Aktivér håndtering af beskedarkiver" #: plinth/modules/ejabberd/forms.py:18 #, python-brace-format @@ -1528,6 +1705,11 @@ msgid "" "history of a multi-user chat room. It depends on the client settings whether " "the histories are stored as plain text or encrypted." msgstr "" +"Hvis dette er aktiveret vil din {box_name} gemme historik for chatbeskeder. " +"Dette gør det muligt at synkronisere samtaler mellem flere klienter, eller " +"at læse historikken for et chatrum med flere brugere. Hvorvidt " +"beskedhistorikken gemmes som klartekst eller krypteret afhænger af klientens " +"indstillinger." #: plinth/modules/ejabberd/manifest.py:11 #, fuzzy @@ -1537,17 +1719,19 @@ msgstr "Forbindelse" #: plinth/modules/ejabberd/manifest.py:25 msgid "Xabber" -msgstr "" +msgstr "Xabber" #: plinth/modules/ejabberd/manifest.py:27 msgid "" "Open source Jabber (XMPP) client with multi-account support and clean and " "simple interface. " msgstr "" +"Open Source Jabber(XMPP)-klient med en enkel og ren brugergrænseflade og " +"understøttelse for flere kontoer. " #: plinth/modules/ejabberd/manifest.py:42 msgid "Yaxim" -msgstr "" +msgstr "Yaxim" #: plinth/modules/ejabberd/manifest.py:56 #, fuzzy @@ -1562,14 +1746,18 @@ msgid "" "new accounts on public XMPP servers (including via Tor), or even connect to " "your own server for extra security." msgstr "" +"ChatSecure er en fri og open source beskedapp som understøtter OTR-" +"kryptering over XMPP. Du kan forbinde til en eksisterende Google-konto, " +"oprette nye konti på offentlige XMPP-servere (også gennem Tor), eller sågar " +"forbinde til din egen server for ekstra sikkerhed." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" -msgstr "" +msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" -msgstr "" +msgstr "Gajim" #: plinth/modules/ejabberd/templates/ejabberd.html:18 #, python-format @@ -1582,13 +1770,13 @@ msgstr "" "vil se ud som brugernavn@%(domainname)s. Du kan konfigurere systemets " "domæne på Konfigurer siden." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" -msgstr "" +msgstr "Håndtering af beskedarkiver aktiveret" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" -msgstr "" +msgstr "Håndtering af beskedarkiver deaktiveret" #: plinth/modules/firewall/__init__.py:32 #, python-brace-format @@ -1620,7 +1808,7 @@ msgstr "Tjenestesøgningstjenesten er ikke aktiv" #: plinth/modules/firewall/components.py:146 #, python-brace-format msgid "Port {name} ({details}) unavailable for external networks" -msgstr "" +msgstr "Port {name} ({details}) er ikke tilgængelig for eksterne netværk" #: plinth/modules/firewall/templates/firewall.html:15 #, python-format @@ -1647,12 +1835,14 @@ msgstr "Tjeneste/Port" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Aktiveret" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Deaktiveret" @@ -1686,13 +1876,15 @@ msgstr "" #: plinth/modules/networks/templates/networks_configuration.html:49 #: plinth/modules/storage/templates/storage.html:94 msgid "Advanced" -msgstr "" +msgstr "Avanceret" #: plinth/modules/firewall/templates/firewall.html:98 msgid "" "Advanced firewall operations such as opening custom ports are provided by " "the Cockpit app." msgstr "" +"Avanceret håndtering af firewall, såsom åbning af brugerdefinerede porte, " +"kan foretages i Cockpit-appen." #: plinth/modules/first_boot/forms.py:14 #, python-brace-format @@ -1701,10 +1893,13 @@ msgid "" "also be obtained by running the command \"sudo cat /var/lib/plinth/firstboot-" "wizard-secret\" on your {box_name}" msgstr "" +"Angiv hemmeligheden som blev generet under installationen af FreedomBox. " +"Denne hemmelighed kan også findes ved at køre kommandoen \"sudo cat /var/lib/" +"plinth/firstboot-wizard-secret\" på din {box_name}." #: plinth/modules/first_boot/forms.py:19 msgid "Firstboot Wizard Secret" -msgstr "" +msgstr "Firstboot Wizard-hemmelighed" #: plinth/modules/first_boot/templates/firstboot_complete.html:11 msgid "Setup Complete!" @@ -1713,7 +1908,7 @@ msgstr "Konfiguration er færdig!" #: plinth/modules/first_boot/templates/firstboot_complete.html:14 #, python-format msgid "Without any apps, your %(box_name)s cannot do very much." -msgstr "" +msgstr "Uden applikationer kan din %(box_name)s ikke meget." #: plinth/modules/first_boot/templates/firstboot_complete.html:21 #, fuzzy @@ -1765,62 +1960,72 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository URL." msgstr "Ugyldigt værtsnavn" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "Ugyldigt værtsnavn" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "packages not found" msgid "Repository's owner name" msgstr "pakker ikke fundet" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 #, fuzzy #| msgid "Create User" msgid "Private repository" msgstr "Opret Bruger" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 #, fuzzy #| msgid "This service already exists" msgid "A repository with this name already exists." msgstr "Denne tjeneste eksisterer allerede" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 #, fuzzy #| msgid "Create User" msgid "Name of the repository" msgstr "Opret Bruger" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default" +msgid "Default branch" +msgstr "Standard" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1902,11 +2107,6 @@ msgstr "pakker ikke fundet" msgid "Edit repository" msgstr "Opret Bruger" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "Der opstod en fejl under konfigurationen." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1917,33 +2117,35 @@ msgstr "{name} slettet." msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Brugermanual" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -2025,20 +2227,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "%(box_name)s Konfiguration" -#: plinth/modules/help/templates/help_about.html:79 -#, fuzzy -#| msgid "Security" -msgid "Security Notice" -msgstr "Sikkerhed" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2208,16 +2396,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "Dokumentation og OSS" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "Om {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Brugervejledning" @@ -2248,23 +2436,23 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Aktiver applikation" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "Tor Anonymiseringstjeneste" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "I2P Proxy" @@ -2436,11 +2624,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -2591,16 +2779,6 @@ msgstr "Intet certifikat" msgid "Re-obtain" msgstr "Generhverv" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Slet" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Træk Tilbage" @@ -2654,7 +2832,7 @@ msgstr "Certifikatet for domænet {domain} blev trukket tilbage" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Fejl ved tilbagetrækning af certifikatet for domænet {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2664,14 +2842,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 #, fuzzy #| msgid "Chat Server (XMPP)" msgid "Matrix Synapse" @@ -2691,7 +2869,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2751,13 +2929,13 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 #, fuzzy #| msgid "Application enabled" msgid "Public registration enabled" msgstr "Applikation aktiveret" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 #, fuzzy #| msgid "Application disabled" msgid "Public registration disabled" @@ -2892,12 +3070,12 @@ msgstr "" "For at forbinde til serveren skal der bruges en Minetest klient." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 #, fuzzy #| msgid "Block Sandbox (Minetest)" msgid "Block Sandbox" @@ -2946,7 +3124,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Adresse" @@ -2955,25 +3133,25 @@ msgstr "Adresse" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "Konfiguration opdateret" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" @@ -3276,11 +3454,11 @@ msgstr "" "Klienter til computere og Android-enheder " "er tilgængelige." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" @@ -3310,7 +3488,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3337,6 +3515,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Tjeneste" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3349,38 +3533,38 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Netværk" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Bruger DNSSEC på IPv{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Forbindelsestype" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Forbindelsesnavn" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 #, fuzzy #| msgid "Interface" msgid "Network Interface" msgstr "Interface" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "Netværksenheden som denne forbindelse skal bindes til." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Firewall-zone" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3388,21 +3572,21 @@ msgstr "" "Firewall-zonen bestemmer hvilke tjenester der er tilgængelige fra dette " "interface. Vælg Kun internt for netværk du har tillid til." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Ekstern" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Intern" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "IPv4 Adresseringsmetode" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3414,19 +3598,26 @@ msgstr "" "\" vil få {box_name} til at opføre sig som en router, der kan konfigurere " "klienter på dette netværk og dele sin internet-forbindelse." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Brugermanual" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Netmaske" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3434,21 +3625,21 @@ msgstr "" "Ikke obligatorisk. Hvis ikke angivet, vil en standardværdi for netmasken " "baseret på adressen anvendes." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "Ikke obligatorisk." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS-server" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3457,11 +3648,11 @@ msgstr "" "\"Automatisk\", vil DNS-serverne der konfigureres af en DHCP-server blive " "ignoreret." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "Sekundær DNS-server" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3470,13 +3661,13 @@ msgstr "" "\"Automatisk\", vil DNS-serverne der konfigureres af en DHCP-server blive " "ignoreret." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 #, fuzzy #| msgid "IPv4 Addressing Method" msgid "IPv6 Addressing Method" msgstr "IPv4 Adresseringsmetode" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, fuzzy, python-brace-format #| msgid "" #| "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3492,31 +3683,31 @@ msgstr "" "\" vil få {box_name} til at opføre sig som en router, der kan konfigurere " "klienter på dette netværk og dele sin internet-forbindelse." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 #, fuzzy #| msgid "Automatic Upgrades" msgid "Automatic" msgstr "Automatisk Opdatering" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 #, fuzzy #| msgid "Automatic Upgrades" msgid "Automatic, DHCP only" msgstr "Automatisk Opdatering" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 addressing method is " @@ -3529,7 +3720,7 @@ msgstr "" "\"Automatisk\", vil DNS-serverne der konfigureres af en DHCP-server blive " "ignoreret." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 Addressing Method is " @@ -3542,77 +3733,77 @@ msgstr "" "\"Automatisk\", vil DNS-serverne der konfigureres af en DHCP-server blive " "ignoreret." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- vælg --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "Netværkets synlige navn." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Tilstand" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 #, fuzzy #| msgid "SSID" msgid "BSSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Autentificeringstilstand" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3620,23 +3811,23 @@ msgstr "" "Vælg WPA hvis det trådløse netværk er sikret og kræver at klienter kender " "kodeordet for at oprette forbindelse." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 #, fuzzy #| msgid "OpenVPN" msgid "Open" msgstr "OpenVPN" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, fuzzy, python-brace-format #| msgid "Direct connection to the Internet." msgid "Specify how your {box_name} is connected to your network" msgstr "Direkte forbindelse til internettet." -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3644,7 +3835,7 @@ msgid "" "typical home setup.

" msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3653,7 +3844,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

" msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3661,11 +3852,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

" msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3676,7 +3867,7 @@ msgid "" "over time or not, it is safer to choose this option.

" msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3700,19 +3891,19 @@ msgid "" "workaround solutions but each solution has some limitations.

" msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "Current Network Configuration" msgid "Preferred router configuration" msgstr "Nuværende Netværkskonfiguration" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3927,7 +4118,7 @@ msgid "Create Connection" msgstr "Opret Forbindelse" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Slet Forbindelse" @@ -3972,7 +4163,7 @@ msgid "Computer" msgstr "Computer" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Rediger Forbindelse" @@ -3984,13 +4175,13 @@ msgstr "Forbindelse" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi-netværk i Nærheden" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Tilføj forbindelse" @@ -4031,6 +4222,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "Næste" @@ -4173,74 +4365,74 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Netværksforbindelser" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "Kan ikke vise forbindelse: Forbindelse ikke fundet." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "Forbindelsesinformation" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "Kan ikke redigere forbindelse: Forbindelse ikke fundet." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "Denne type forbindelse kan ikke konfigureres herfra endnu." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "Aktiverede forbindelse {name}." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "Kunne ikke aktivere forbindelse: Forbindelse ikke fundet." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Kunne ikke aktivere forbindelse {name}: Ingen passende enhed er tilgængelig." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Deaktiverede forbindelse {name}." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "Kan ikke deaktivere forbindelse: Forbindelse ikke fundet." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 #, fuzzy #| msgid "Adding New Ethernet Connection" msgid "Adding New Generic Connection" msgstr "Tilføjer Ny Ethernet Forbindelse" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "Tilføjer Ny Ethernet Forbindelse" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "Tilføjer Ny PPPoE Forbindelse" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "Tilføjer Ny Wi-Fi Forbindelse" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "Slettede forbindelse {name}." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "Kunne ikke slette forbindelse: Forbindelse ikke fundet." @@ -4261,20 +4453,20 @@ msgstr "" "af {box_name}. Du kan også tilgå resten af internettet igennem {box_name} " "for øget sikkerhed og anonymitet." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 #, fuzzy #| msgid "OpenVPN" msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "Virtuelt Privat Netværk (OpenVPN)" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4351,11 +4543,11 @@ msgstr "" msgid "Download my profile" msgstr "Hent min profil" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Opsætning færdig." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Opsætning fejlede." @@ -4601,6 +4793,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 #, fuzzy #| msgid "System Configuration" @@ -4705,7 +4910,7 @@ msgstr "Aktiver Privoxy" msgid "Web Proxy" msgstr "Privoxy Webproxy" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Tilgå {url} med proxy {proxy} ved brug af tcp{kind}" @@ -4739,11 +4944,11 @@ msgstr "" "\">computer og mobile enhed er tilgængelige." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 #, fuzzy #| msgid "Quassel IRC Client" msgid "IRC Client" @@ -4753,7 +4958,7 @@ msgstr "Quassel IRC-klient" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4774,19 +4979,19 @@ msgstr "" "carddav-clients\">understøttet klient-applikation. Radicale kan tilgås " "af enhver bruger der har et log ind til {box_name}." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 #, fuzzy #| msgid "Calendar and Addressbook (Radicale)" msgid "Calendar and Addressbook" @@ -4810,6 +5015,12 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access" +msgid "Access rights" +msgstr "Adgang" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -5053,43 +5264,43 @@ msgstr "Kite-navn" msgid "Action" msgstr "Handlinger" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "Tilføj Service" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 #, fuzzy #| msgid "Add Service" msgid "Group Share" msgstr "Tilføj Service" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Add Service" msgid "Home Share" msgstr "Tilføj Service" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} slettet." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Kunne ikke installere applikation: {error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "{name} deleted." msgid "Share disabled." msgstr "{name} slettet." -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -5131,10 +5342,6 @@ msgstr "Gem Tjenester" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 #, fuzzy #| msgid "Mode" @@ -5153,11 +5360,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "Konfiguration opdateret." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -5187,8 +5389,33 @@ msgstr "" msgid "Show security report" msgstr "Sikkerhed" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -5267,13 +5494,13 @@ msgstr "" msgid "Not running" msgstr "er ikke aktiv" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" msgid "Error setting restricted access: {exception}" msgstr "Kunne ikke sætte tidszone: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 #, fuzzy #| msgid "General Configuration" msgid "Updated security configuration" @@ -5586,8 +5813,8 @@ msgstr "Slet %(name)s" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5714,7 +5941,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) Server" @@ -5761,7 +5988,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -5777,116 +6004,116 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 #, fuzzy #| msgid "reStore" msgid "Storage" msgstr "reStore" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, fuzzy, python-brace-format #| msgid "{disk_size} bytes" msgid "{disk_size:.1f} bytes" msgstr "{disk_size} bytes" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, fuzzy, python-brace-format #| msgid "{disk_size} TiB" msgid "{disk_size:.1f} TiB" msgstr "{disk_size} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 #, fuzzy #| msgid "repro service is running" msgid "The device is already unmounting." msgstr "repro-tjenesten er aktiv" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 #, fuzzy #| msgid "This service already exists" msgid "The device is already mounted." msgstr "Denne tjeneste eksisterer allerede" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "repro-tjenesten er ikke aktiv" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6063,11 +6290,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -6110,7 +6337,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6124,43 +6351,43 @@ msgstr "" "du bruger Tor-browseren." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor Skjult Tjeneste" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 #, fuzzy msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "Tor videresendelsesport tilgængelig" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Obfs3 transport registreret" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Obfs4 transport registreret" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Tilgå URL {url} ved brug af tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekræft brug af Tor på {url} ved brug af tcp{kind}" @@ -6310,7 +6537,7 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "En Tor SOCKS-port er tilgængelig på din %(box_name)s TCP-port 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Indstilling uændret" @@ -6376,11 +6603,11 @@ msgstr "Nyhedsstrømlæser (Tiny Tiny RSS)" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6388,11 +6615,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "Opdater" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox Manual" msgid "FreedomBox Updated" @@ -6408,6 +6635,23 @@ msgstr "Aktiver automatiske opdateringer" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s Setup" @@ -6426,23 +6670,42 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 #, fuzzy #| msgid "Last update" -msgid "Manual update" +msgid "Manual Update" msgstr "Seneste opdatering" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 #, fuzzy #| msgid "Update" msgid "Update now" msgstr "Opdater" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 #, fuzzy #| msgid "" #| "Depending on the number of packages to install, this may take a long time " @@ -6460,32 +6723,36 @@ msgstr "" "blive midlertidigt utilgængeligt og vise en fejl. Genindlæs siden for at " "fortsætte." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" "Kunne ikke konfigurere automatisk opdatering (unattended-upgrades): {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "Automatisk opdatering aktiveret" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "Automatisk opdatering deaktiveret" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "Opdateringsprocessen er startet." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "Kunne ikke starte opdatering." +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6509,7 +6776,7 @@ msgstr "Brugere og Grupper" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Kontrol af LDAP-konfiguration \"{search_item}\"" @@ -6524,18 +6791,12 @@ msgstr "" msgid "Enter a valid username." msgstr "Ugyldigt servernavn" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -#, fuzzy -#| msgid "Transmission BitTorrent" -msgid "Permissions" -msgstr "Transmission BitTorrent" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6557,20 +6818,20 @@ msgstr "" "tjenester. De kan også logge ind på systemet gennem SSH og har " "administratorprivilegier (sudo)." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "Kunne ikke oprette LDAP-bruger." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Kunne ikke tilføje ny bruger til gruppen {group}." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6580,45 +6841,45 @@ msgstr "" "sikkert ind på systemet uden et kodeord. Der kan defineres flere nøgler, en " "på hver linje. Tomme linjer og linjer som starter med # bliver ignoreret." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "Kunne ikke omdøbe LDAP-bruger." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "Kunne ikke fjerne bruger fra gruppe." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "Kunne ikke tilføje bruger til gruppe." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "Kunne ikke tilføje bruger til gruppe." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "Kunne ikke ændre LDAP-kodeord." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Kunne ikke tilføje ny bruger til admin-gruppen." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "Brugerkonto oprettet, du er nu logget ind" @@ -6752,7 +7013,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6882,7 +7143,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6911,7 +7172,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" msgid "Add Connection to Server" @@ -7013,83 +7274,83 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy #| msgid "This service already exists" msgid "Client with public key already exists" msgstr "Denne tjeneste eksisterer allerede" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 #, fuzzy #| msgid "Email Client (Roundcube)" msgid "Allowed Client" msgstr "Emailklient (Roundcube)" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "Opdater indstillinger" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy #| msgid "Email Client (Roundcube)" msgid "Modify Client" msgstr "Emailklient (Roundcube)" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 #, fuzzy #| msgid "Delete" msgid "Delete Allowed Client" msgstr "Slet" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "{name} deleted." msgid "Client deleted." msgstr "{name} slettet." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 #, fuzzy #| msgid "packages not found" msgid "Client not found" msgstr "pakker ikke fundet" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added custom service" msgid "Added new server." msgstr "Tilføjet brugerdefineret tjeneste" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "Forbindelsestype" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "Opdater indstillinger" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Edit Connection" msgid "Modify Connection to Server" msgstr "Rediger Forbindelse" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "Slet Forbindelse" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "{name} deleted." msgid "Server deleted." @@ -7103,23 +7364,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "Fejl under installation" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "Installerer" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "downloader" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "medie-ændring" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurationsfil: {file}" @@ -7401,14 +7662,45 @@ msgstr "Intet certifikat" msgid "Port Forwarding" msgstr "Aktiver Tor" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." msgstr "" +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "protokol" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "%(box_name)s Konfiguration" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "Installer denne applikation?" @@ -7453,6 +7745,89 @@ msgstr "%(percentage)s%% færdig" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Create User" +#~ msgid "Backports activated." +#~ msgstr "Opret Bruger" + +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot er en \"ét-kliks\"-webapplikation til fildeling, med fokus på " +#~ "at beskytte brugernes privatliv. Den er bedst egnet til hurtigt at dele " +#~ "en enkelt fil. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Denne Coquelicot-instans er tilgængelig for offentligheden, men upload " +#~ "kræver et kodeord for at forhindre uautoriseret brug. Du kan indstille et " +#~ "nyt kodeord i formularen som vises nedenfor når installationen er " +#~ "fuldendt. Det forudindstillede kodeord for upload af filer er \"test\"." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#, fuzzy +#~| msgid "Save Password" +#~ msgid "Upload Password" +#~ msgstr "Gem Kodeord" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Angiv et nyt kodeord for upload til Coquelicot. Lad feltet forblive tomt " +#~ "for at beholde det nuværende kodeord." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Maksimal filstørrelse (i MiB)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Angiv den maksimale størrelse på filer som skal kunne uploades til " +#~ "Coquelicot." + +#~ msgid "coquelicot" +#~ msgstr "coquelicot" + +#, fuzzy +#~| msgid "Password" +#~ msgid "Upload password updated" +#~ msgstr "Kodeord" + +#~ msgid "Failed to update upload password" +#~ msgstr "Kunne ikke opdatere kodeordet for upload-adgang" + +#, fuzzy +#~| msgid "Configuration updated" +#~ msgid "Maximum file size updated" +#~ msgstr "Konfiguration opdateret" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "Kunne ikke opdatere den maksimale filstørrelse" + +#, fuzzy +#~| msgid "Security" +#~ msgid "Security Notice" +#~ msgstr "Sikkerhed" + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Sikkerhedskopiering" + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "Aktiver" + #~ msgid "Restoring" #~ msgstr "Genopretter" @@ -7723,9 +8098,6 @@ msgstr "" #~ msgid "Manage" #~ msgstr "Administrer" -#~ msgid "Create" -#~ msgstr "Opret" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "Rabatkuponen som du modtog sammen med din {box_name} Danube Edition" @@ -7928,11 +8300,6 @@ msgstr "" #~ msgid "Restore apps" #~ msgstr "reStore" -#, fuzzy -#~| msgid "Create User" -#~ msgid "Backup archives" -#~ msgstr "Opret Bruger" - #~ msgid "Software Upgrades" #~ msgstr "Softwareopdateringer" @@ -8061,9 +8428,6 @@ msgstr "" #~ msgid "BitTorrent" #~ msgstr "Deluge BitTorrent" -#~ msgid "admin" -#~ msgstr "admin" - #~ msgid "wiki" #~ msgstr "wiki" diff --git a/plinth/locale/de/LC_MESSAGES/django.po b/plinth/locale/de/LC_MESSAGES/django.po index 641a6d35e..af3bcfb90 100644 --- a/plinth/locale/de/LC_MESSAGES/django.po +++ b/plinth/locale/de/LC_MESSAGES/django.po @@ -9,23 +9,23 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: 2020-07-05 19:35+0000\n" -"Last-Translator: Milo Ivir \n" -"Language-Team: German \n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-09-14 14:36+0000\n" +"Last-Translator: Ralf Barkow \n" +"Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.2-dev\n" +"X-Generator: Weblate 4.3-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" msgstr "Seitenquelle" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "FreedomBox" @@ -138,11 +138,11 @@ msgstr "Dienste-Erkennung" msgid "Local Network Domain" msgstr "Lokale Netzwerkdomäne" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "Backups ermöglicht das Erzeugen und Verwalten von Backup-Archiven." -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "Backups" @@ -151,6 +151,12 @@ msgstr "Backups" msgid "{app} (No data to backup)" msgstr "{app} (Keine Dateien zu sichern)" +#: plinth/modules/backups/forms.py:50 +#, fuzzy +#| msgid "Create Repository" +msgid "Repository" +msgstr "Archiv anlegen" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -218,7 +224,17 @@ msgstr "" "„Schlüssel im Archiv“ bedeutet, dass ein passwortgeschützter Schlüssel mit " "dem Backup gespeichert wird." -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +#, fuzzy +#| msgid "Create Repository" +msgid "Key in Repository" +msgstr "Archiv anlegen" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "Keiner" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "Passwort" @@ -392,6 +408,7 @@ msgid "Delete Archive %(name)s" msgstr "Archiv %(name)s löschen" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -620,6 +637,183 @@ msgstr "Aushängen fehlgeschlagen!" msgid "Mounting failed" msgstr "Einhängen fehlgeschlagen" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" +"bepasty ist eine Webanwendung, mit der grosse Dateien hochgeladen und " +"gemeinsam genutzt werden können. Es können auch Text- und Codeschnipsel " +"eingefügt und ausgetauscht werden. Text-, Bild-, Audio-, Video- und PDF-" +"Dokumente können in der Vorschau im Browser angezeigt werden. Freigegebene " +"Dateien können so eingestellt werden, dass sie nach einer bestimmten " +"Zeitspanne ablaufen." + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" +"bepasty verwendet keine Benutzernamen für die Anmeldung. Es verwendet nur " +"Passwörter. Für jedes Passwort kann eine Reihe von Berechtigungen ausgewählt " +"werden. Sobald Sie ein Passwort erstellt haben, können Sie es mit den " +"Benutzern teilen, die über die entsprechenden Berechtigungen verfügen sollen." + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" +"Sie können auch mehrere Passwörter mit den gleichen Berechtigungen erstellen " +"und diese an verschiedene Personen oder Gruppen verteilen. Auf diese Weise " +"können Sie später den Zugang für eine einzelne Person oder Gruppe sperren, " +"indem Sie deren Passwort aus der Liste entfernen." + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "Lesen Sie eine Datei, wenn ein Weblink zur Datei verfügbar ist" + +#: plinth/modules/bepasty/__init__.py:43 +msgid "Create or upload files" +msgstr "Dateien erstellen oder hochladen" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "Auflisten aller Dateien und deren Weblinks" + +#: plinth/modules/bepasty/__init__.py:45 +msgid "Delete files" +msgstr "Dateien löschen" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "Dateien verwalten: Dateien sperren/entsperren" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "Keines, Passwort ist immer erforderlich" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "Alle Dateien auflisten und lesen" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "bepasty" + +#: plinth/modules/bepasty/__init__.py:67 +msgid "File & Snippet Sharing" +msgstr "Datei- und Snippet-Freigabe" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "Öffentlicher Zugang (Standardberechtigungen)" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" +"Berechtigungen für anonyme Benutzer, die kein Passwort angegeben haben." + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "Berechtigungen" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" +"Benutzer, die sich mit diesem Kennwort anmelden, verfügen über die " +"ausgewählten Berechtigungen." + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "Kommentar" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" +"Jeder Kommentar, der Ihnen hilft, sich an den Zweck dieses Kennworts zu " +"erinnern." + +#: plinth/modules/bepasty/templates/bepasty.html:12 +msgid "Manage Passwords" +msgstr "Passwörter verwalten" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +msgid "Add password" +msgstr "Kennwort hinzufügen" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "Derzeit sind keine Passwörter konfiguriert." + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "Passwort" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "Lesen" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "Anlegen" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "Auflisten" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "Löschen" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "Admin" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "Konfiguration aktualisiert." + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "Ein Fehler ist bei der Konfiguration aufgetreten." + +#: plinth/modules/bepasty/views.py:97 +msgid "Password added." +msgstr "Passwort hinzugefügt." + +#: plinth/modules/bepasty/views.py:102 +msgid "Add Password" +msgstr "Passwort hinzufügen" + +#: plinth/modules/bepasty/views.py:119 +msgid "Password deleted." +msgstr "Passwort gelöscht." + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -640,11 +834,11 @@ msgstr "" "Geräte im lokalen Netzwerk zu beantworten. Dies ist außerdem inkompatibel " "mit dem Teilen der Internetverbindung durch die {box_name}." -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "DNS-Server" @@ -669,10 +863,11 @@ msgstr "Domain-Name-System-Sicherheitserweiterungen (DNSSEC) aktivieren" #: plinth/modules/bind/templates/bind.html:11 msgid "Serving Domains" -msgstr "Bedienen von Domains" +msgstr "Domains bedienen" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -695,9 +890,9 @@ msgstr "IP-Adressen" msgid "Refresh IP address and domains" msgstr "IP-Adresse und Domänen aktualisieren" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -787,12 +982,13 @@ msgid "Configure" msgstr "Konfigurieren" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "Domain-Name" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "Ungültiger Domain-Name" @@ -865,7 +1061,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "Erweiterte Apps und Funktionen anzeigen" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "" "Anwendungen und Funktionen, die mehr technisches Wissen erfordern, anzeigen." @@ -891,7 +1087,7 @@ msgstr "Domainname gesetzt" #: plinth/modules/config/views.py:69 #, python-brace-format msgid "Error setting webserver home page: {exception}" -msgstr "Fehler beim Setzen des Hostnamens: {exception}" +msgstr "Fehler beim Setzen des Host-Namen: {exception}" #: plinth/modules/config/views.py:72 msgid "Webserver home page set" @@ -910,79 +1106,6 @@ msgstr "Zeige erweiterte Anwendungen und Funktionen an" msgid "Hiding advanced apps and features" msgstr "Ausblenden von erweiterten Apps und Funktionen" -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" -"Coquelicot ist eine Webanwendung für die gemeinsame Nutzung von Dateien mit " -"nur einem Klick, deren Schwerpunkt auf dem Schutz der Privatsphäre der " -"Benutzer liegt. Es wird am besten verwendet, um eine einzelne Datei schnell " -"zu teilen. " - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" -"Der Coquelicot-Dialog ist öffentlich zugänglich. Um unberechtigten Zugriff " -"zu verhindern, wird ein Hochladen-Passwort benötigt. Sie können ein neues " -"Hochladen-Passwort in dem Formular festlegen, das nach der Installation " -"unten angezeigt wird. Das voreingestellte Hochladen-Passwort ist „test“." - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "Coquelicot" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "Dateifreigabe" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "Hochladen-Passwort" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" -"Ein neues Hochladen-Passwort für Coquelicot eingeben. Dieses Feld " -"leerlassen, um das derzeitige Passwort beizubehalten." - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "Maximale Dateigröße (in MiB)" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" -"Die maximale Größe der Dateien festlegen, die per Coquelicot hochgeladen " -"werden können." - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "Coquelicot" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "Hochladen-Passwort geändert" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "Hochalden-Passwort konnte nicht aktualisiert werden" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "Maximale Dateigröße aktualisiert" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "Die maximale Dateigröße konnte nicht aktualisiert werden" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -1004,11 +1127,11 @@ msgstr "" "Sie ist nicht für die direkte Nutzung durch Benutzer gedacht. Server wie " "Matrix-Synapse müssen mit den hier gemachten Angaben konfiguriert werden." -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "VoIP-Helfer" @@ -1046,7 +1169,7 @@ msgstr "" msgid "Date & Time" msgstr "Datum und Uhrzeit" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "Zeit synchronisiert mit NTP-Server" @@ -1109,7 +1232,7 @@ msgstr "Download-Ordner" msgid "Bittorrent client written in Python/PyGTK" msgstr "Bittorrent Client geschrieben in Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1117,10 +1240,26 @@ msgstr "" "Der Systemdiagnosetest wird eine Reihe von Tests auf dem System durchführen, " "um zu überprüfen, ob alle Anwendungen und Dienste funktionieren." -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "Diagnose" +#: plinth/modules/diagnostics/__init__.py:102 +#, fuzzy +#| msgid "Quassel" +msgid "passed" +msgstr "Quassel" + +#: plinth/modules/diagnostics/__init__.py:103 +#, fuzzy +#| msgid "Setup failed." +msgid "failed" +msgstr "Einrichtung fehlgeschlagen." + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1266,7 +1405,7 @@ msgstr "Dynamischer DNS-Client" msgid "Dynamic Domain Name" msgstr "Dynamischer Domain-Name" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1276,7 +1415,7 @@ msgstr "" "können in der URL verwendet werden. Details finden Sie in den Update-URL-" "Vorlagen der Beispielanbieter." -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1286,7 +1425,7 @@ msgstr "" "Anbieter GnuDIP nicht unterstützt oder der Anbieter nicht aufgeführt ist, " "kann die Aktualisierungs-URL Ihres Anbieters verwendet werden." -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1294,20 +1433,20 @@ msgstr "" "Bitte hier keine URL (wie „https://example.com/“) eingeben, sondern nur den " "Hostnamen des GnuDIP-Servers (wie „example.com“)." -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" "Der öffentliche Domainname, den Sie verwenden möchten, um Ihre FredomBox " "{box_name} zu erreichen." -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Verwenden Sie diese Option, wenn Ihr Anbieter eigensignierte Zertifikate " "verwendet." -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1315,12 +1454,12 @@ msgstr "" "Ist diese Option ausgewählt, werden der Benutzername und das Passwort des " "Dynamic-DNS-Kontos auch zur HTTP-Authentifizierung verwendet." -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "" "Dieses Feld leerlassen, wenn Sie das Passwort unverändert lassen möchten." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1333,68 +1472,74 @@ msgstr "" "URL verwendet, um die wahre IP-Adresse zu bestimmen. Die URL sollte nur die " "IP-Adresse des Clients liefern (Beispiel: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "Benutzername, der beim Erstellen des Kontos gewählt wurde." +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +#, fuzzy +#| msgid "Update URL" +msgid "other update URL" +msgstr "URL aktualisieren" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "Dynamisches DNS einschalten" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "Typ des Dienstes" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "GnuDIP-Server-Adresse" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "Ungültiger Servername" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "URL aktualisieren" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "Alle SSL-Zertifikate akzeptieren" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "HTTP-Basisauthentifizierung verwenden" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "Benutzername" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "Passwort" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "Passwort anzeigen" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "Auf die öffentliche IP-Adresse verweisende URL" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Bitte eine Update-URL oder eine GnuDIP-Serveradresse angeben" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "Bitte einen GnuDIP-Benutzernamen angeben" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "Bitte einen GnuDIP-Domainnamen angeben" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "Bitte ein Passwort angeben" @@ -1467,7 +1612,7 @@ msgstr "" msgid "Last update" msgstr "Letztes Update" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Info" @@ -1516,12 +1661,12 @@ msgstr "" "kann ejabberd von jedem Benutzer mit einem " "{box_name} Login aufgerufen werden." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Chatserver" @@ -1580,11 +1725,11 @@ msgstr "" "anlegen (auch über Tor) oder sogar Ihren eigenen Server zur zusätzlichen " "Sicherheit nutzen." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "Gajim" @@ -1600,11 +1745,11 @@ msgstr "" "auf der Seite Systemeinstellungen " "konfigurieren." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "Nachrichten-Archiv-Verwaltung aktiviert" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "Nachrichten-Archiv-Verwaltung deaktiviert" @@ -1662,12 +1807,14 @@ msgstr "Dienst/Port" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Aktiviert" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Deaktiviert" @@ -1798,54 +1945,64 @@ msgstr "Gitweb" msgid "Simple Git Hosting" msgstr "Einfaches Git Hosting" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "Ungültige Repository-URL." -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "Ungültiger Respositoryname." -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" "Name eines neuen Repositorys oder einer neuen URL zum Importieren eines " "vorhandenen Repositorys." -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "Beschreibung des Archivs" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "Optional, zur Anzeige auf Gitweb." -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Name des Resposity Besitzers" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "Privates Archiv" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "Zugriff auf diesem Repository nur bevollmächtigte Benutzer erlauben." -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "Eine Archiv mit diesem Namen existiert bereits." -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "Name des resositorys" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" "Eine alphanumerische Zeichenfolge in Kleinbuchstaben, die ein Resposity " "eindeutig identifiziert. Beispiel: media." +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default Skin" +msgid "Default branch" +msgstr "Standard Thema" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "Git" @@ -1908,11 +2065,6 @@ msgstr "Archiv bearbeitet." msgid "Edit repository" msgstr "Archiv bearbeiten" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "Ein Fehler ist bei der Konfiguration aufgetreten." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1923,33 +2075,33 @@ msgstr "{name} gelöscht." msgid "Could not delete {name}: {error}" msgstr "{name} konnte nicht gelöscht werden: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "Handbuch" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Unterstützung erhalten" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Feedback abgeben" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "Mitwirken" @@ -2031,22 +2183,6 @@ msgstr "Eine neue %(box_name)s Version ist verfügbar." msgid "%(box_name)s is up to date." msgstr "%(box_name)s ist auf dem neuesten Stand." -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "Sicherheitshinweis" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" -"Sie verwenden Pakete von Debian-Backports. Bitte beachten Sie, dass diese " -"Pakete keine Sicherheitsunterstützung von Debian haben. Sie werden jedoch " -"von Mitwirkenden in der Debian- und FreedomBox-Community bestmöglich " -"gepflegt." - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2241,16 +2377,16 @@ msgstr "" "Bitte vor dem Abschicken des Fehlerberichts, alle Passwörter und andere " "persönliche Informationen aus der Statusausgabe entfernen." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "Dokumentation und FAQ" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "Über Ihre FreedomBox {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name}-Handbuch" @@ -2283,19 +2419,19 @@ msgstr "" "Der erste Besuch der bereitgestellten Weboberfläche leitet den " "Konfigurationsprozess ein." -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "I2P-Anwendung verwalten" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "Anonymisierungsnetzwerk" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P Proxy" @@ -2467,11 +2603,11 @@ msgstr "" "Client herunterladen und installieren. Dann Gobby starten und „Mit " "Server verbinden“ auswählen und den Domainnamen Ihrer {box_name} eingeben." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby-Server" @@ -2599,16 +2735,6 @@ msgstr "Kein Zertifikat" msgid "Re-obtain" msgstr "Wieder beziehen" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Löschen" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Widerrufen" @@ -2662,7 +2788,7 @@ msgstr "Zertifikat erfolgreich widerrufen für Domain {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Fehler beim Widerrufen des Zertifikats für Domain {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2680,18 +2806,18 @@ msgstr "" "zwischen den Servern mit Nutzerkonten auf einem beliebigen anderen Server " "kommunizieren." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" "Zur Kommunikation nutzen Sie eine der verfügbaren Clientanwendungen für ihr Handy, Desktop oder im " -"Web. Die Clientanwendung Riot wird " +"Web. Die Clientanwendung Element wird " "empfohlen." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -2711,8 +2837,8 @@ msgstr "" "Benutzer zulassen möchten." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "Riot" +msgid "Element" +msgstr "Element" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2784,11 +2910,11 @@ msgstr "" "Zertifikat. Bitte gehen Sie zu Let's " "Encrypt, um eines zu beziehen." -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "Öffentliche Registrierung aktiviert" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "Öffentliche Registrierung deaktiviert" @@ -2923,12 +3049,12 @@ msgstr "" "Standardport (30000). Um auf dem Server zu spielen, wird ein Minetest-Client benötigt." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Block-Sandkasten" @@ -2977,7 +3103,7 @@ msgstr "" "erleiden." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Adresse" @@ -2986,19 +3112,19 @@ msgstr "Adresse" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "Einstellung für Maximale Spielerzahl aktualisiert" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "Kreativ-Modus-Konfiguration aktualisiert" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "Spieler-gegen-Spieler-Konfiguration aktualisiert" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "Schaden-Konfiguration aktualisiert" @@ -3312,11 +3438,11 @@ msgstr "" "verbinden. Auf Mumble finden Sie " "Anwendungen, um sich vom Desktop oder Android-Gerät mit Mumble zu verbinden." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "Sprachkonferenz" @@ -3345,7 +3471,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "Mumla" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "SuperUser-Kennwort wurde erfolgreich aktualisiert." @@ -3374,6 +3500,12 @@ msgstr "Alle" msgid "All web apps" msgstr "Alle Webanwendungen" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Dienst" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3391,36 +3523,36 @@ msgstr "" "Geräte die mit anderen Methoden verwaltet werden, können hier möglicherweise " "nicht konfiguriert werden." -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Netzwerke" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC wird auf IPv{kind} verwendet" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Verbindungstyp" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Verbindungsname" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "Netzwerk-Schnittstelle" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "Das Netzwerkgerät, an das diese Verbindung gebunden sein sollte." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Firewall-Zone" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3428,21 +3560,21 @@ msgstr "" "Die Firewall-Zone entscheidet, welche Dienste über diese Schnittstellen zur " "Verfügung stehen. Wählen Sie „Intern“ nur für vertrauenswürdige Netzwerke." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Extern" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Intern" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "IPv4-Adressierungsmethode" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3454,19 +3586,24 @@ msgstr "" "{box_name} wie einen Router arbeiten, die Clients dieses Netzwerks " "konfigurieren und die Internetverbindung teilen." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "Automatisch (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Geteilt" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "Manuell" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Netzmaske" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3474,21 +3611,21 @@ msgstr "" "Optionaler Wert. Bleibt dieser leer, wird eine Maske basierend auf der " "Adresse verwendet." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "Optionaler Wert." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS-Server" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3497,11 +3634,11 @@ msgstr "" "„Automatisch“ ist, werden die DNS-Server ignoriert, die von einem DHCP-" "Server bereitgestellt wurden." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "Zweiter DNS-Server" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3510,11 +3647,11 @@ msgstr "" "„Automatisch“ ist, werden die DNS-Server ignoriert, die von einem DHCP-" "Server bereitgestellt wurden." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "IPv6-Adressierungsmethode" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3523,27 +3660,27 @@ msgstr "" "Die Methode „Automatisch“ lässt {box_name} die Konfiguration von diesem " "Netzwerk holen und macht es zu einem Client." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Automatisch" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "Automatisch, nur DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "Ignorieren" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "Präfix" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "Wert zwischen 1 und 128." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3552,7 +3689,7 @@ msgstr "" "„Automatisch“ ist, werden die DNS-Server ignoriert, die von einem DHCP-" "Server bereitgestellt wurden." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3561,54 +3698,54 @@ msgstr "" "„Automatisch“ ist, werden die DNS Server ignoriert, die von einem DHCP-" "Server bereitgestellt wurden." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- auswählen --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "Der sichtbare Name des Netzwerks." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Modus" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Infrastruktur" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Zugangspunkt" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Frequenzband" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3616,11 +3753,11 @@ msgstr "" "Optionaler Wert. Beschränkung auf den WLAN-Kanal in dem ausgewählten " "Frequenzband. Leer oder 0 bedeutet automatische Auswahl." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3630,11 +3767,11 @@ msgstr "" "einem Zugangspunkt ist nur zugelassen, wenn die BSSID des Zugangspunkts mit " "diesem Wert übereinstimmt. Beispiel: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Authentifizierungsmodus" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3642,20 +3779,20 @@ msgstr "" "Wählen Sie WPA, wenn das WLAN-Netzwerk gesichert ist und ein Passwort für " "die Benutzung erfordert." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Offen" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "Geben Sie an, wie Ihre {box_name} mit Ihrem Netzwerk verbunden ist" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3666,7 +3803,7 @@ msgstr "" "die Internetverbindung von Ihrem Router über Wi-Fi oder Ethernet-Kabel. Dies " "ist eine typische Einrichtung für zu Hause.

" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3680,7 +3817,7 @@ msgstr "" "Ihre Geräte stellen eine Verbindung mit der Internetverbindung von " "{box_name} her.

" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3692,11 +3829,11 @@ msgstr "" "keine anderen Geräte im Netzwerk. Dies kann bei Community- oder Cloud-Setups " "passieren.

" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "Wählen Sie die Art Ihrer Internetverbindung" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3716,7 +3853,7 @@ msgstr "" "sicher sind, ob sie sich im Laufe der Zeit ändert, ist es sicherer, diese " "Option zu wählen.

" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -"Ich habe eine feste öffentliche IP-Adresse, die sich nicht ändert (empfohlen)" -".

Jedes Mal, wenn Sie mit Ihrem Internet " +"Ich habe eine feste öffentliche IP-Adresse, die sich nicht ändert " +"(empfohlen).

Jedes Mal, wenn Sie mit Ihrem Internet " "Dienstanbieter eine Verbindung zum Internet herstellen, erhalten Sie immer " "die gleiche IP-Adresse. Dies ist die störungsfreieste Einrichtung für viele " "Dienste von {box_name}, aber nur sehr wenige ISPs bieten dies an. " "Möglicherweise können Sie diesen Service von Ihrem ISP erhalten, indem Sie " "eine zusätzliche Zahlung leisten.

" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3755,7 +3892,7 @@ msgstr "" "Dienste zu Hause. {box_name} bietet viele Umgehungslösungen, aber jede " "Lösung hat einige Einschränkungen.

" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" @@ -3763,11 +3900,11 @@ msgstr "" "Ich weiss nicht, welche Art von Verbindung mein ISP anbietet

Es werden Ihnen die konservativsten Massnahmen vorgeschlagen.

" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "Bevorzugte Routerkonfiguration" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -4005,7 +4142,7 @@ msgid "Create Connection" msgstr "Verbindung anlegen" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Verbindung löschen" @@ -4050,7 +4187,7 @@ msgid "Computer" msgstr "Computer" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Verbindung bearbeiten" @@ -4060,13 +4197,13 @@ msgstr "Verbindungen" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "WLANs in der Nähe" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Verbindung hinzufügen" @@ -4109,6 +4246,7 @@ msgstr "Überspringen Sie diesen Schritt" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "Weiter" @@ -4218,7 +4356,7 @@ msgid "" "are provided by the Cockpit app." msgstr "" "Erweiterte Netzwerkoperationen wie Bonding, Bridging und VLAN-Management " -"werden von der CockpitApp bereitgestellt." +"werden von der Cockpit App bereitgestellt." #: plinth/modules/networks/templates/router_configuration_content.html:10 #, python-format @@ -4288,73 +4426,73 @@ msgstr "" "Routers. Hier finden Sie eine vollständige Anleitung, wie diese Aufgabe zu " "erfüllen ist." -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Netzwerkverbindungen" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "Kann Verbindung nicht anzeigen: Verbindung nicht gefunden." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "Verbindungsinformationen" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "Kann Verbindung nicht bearbeiten: Verbindung nicht gefunden." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "Dieser Verbindungstyp ist noch nicht bekannt." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "Verbindung {name} aktiviert." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "Fehler beim Einschalten der Verbindung: Verbindung nicht gefunden." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Fehler beim Einschalten der Verbindung {name}: Kein geeignetes Gerät " "verfügbar." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Verbindung {name} ausgeschaltet." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "Konnte Verbindung nicht ausschalten: Verbindung nicht gefunden." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "Neue generische Verbindung wird hinzugefügt" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "Neue Ethernet-Verbindung wird hinzugefügt" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "Neue PPPoE-Verbindung wird hinzugefügt" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "WLAN-Verbindung wird hinzugefügt" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "Verbindung {name} gelöscht." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "Konnte Verbindung nicht löschen: Verbindung nicht gefunden." @@ -4375,16 +4513,16 @@ msgstr "" "{box_name} erlangen. Sie können auch auf das Internet via {box_name} für " "zusätzliche Sicherheit und Anonymität zugreifen." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Virtuelles Privates Netzwerk" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4455,11 +4593,11 @@ msgstr "" msgid "Download my profile" msgstr "Mein Profil herunterladen" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Einrichtung beendet." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Einrichtung fehlgeschlagen." @@ -4681,6 +4819,19 @@ msgstr "" msgid "Performance" msgstr "Leistung" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "Systemüberwachung" @@ -4786,7 +4937,7 @@ msgstr "Privoxy" msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Zugang auf {url} über Proxy {proxy} auf TCP{kind}" @@ -4821,11 +4972,11 @@ msgstr "" "quassel-irc.org/downloads\">Desktop und mobile Telefone zur Verfügung." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "IRC-Client" @@ -4833,7 +4984,7 @@ msgstr "IRC-Client" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4848,23 +4999,22 @@ msgstr "" "supported-clients\">unterstützte Client Software notwendig. Radicale " "kann von jedem Benutzer mit einem {box_name}-Konto verwendet werden." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -"Radicale bietet ein einfaches Webinterface, mit dem nur neue Kalender und " -"Adressbücher erstellt werden können. Um Termine und Kontakte zu erstellen " -"und zu bearbeiten, benötigst du ein entsprechendes Programm (z. B. " -"Thunderbird Lightning, KOrganizer …)." +"Radicale bietet ein einfaches Web-Interface, mit dem neue Kalender und " +"Adressbücher nur erstellt werden können. Um Termine und Kontakte zu " +"erstellen und zu bearbeiten, benötigst du ein entsprechendes Programm." -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "Kalender und Adressbuch" @@ -4892,6 +5042,12 @@ msgstr "" "Jeder mit einem {box_name}-Benutzerkonto kann jeden Kalender/Adressbuch " "einsehen oder Änderungen durchführen." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Zugangspunkt" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "DAVx5" @@ -5139,32 +5295,32 @@ msgstr "Freigabename" msgid "Action" msgstr "Aktion" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "Open Share" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "Group Share" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "Home Share" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "Freigabe aktiviert." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Fehler beim Aktivieren der Freigabe: {error_message}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "Freigabe deaktiviert." -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Fehler beim Deaktivieren der Freigabe: {error_message}" @@ -5207,10 +5363,6 @@ msgstr "" "Wählen Sie den standardmäßigen Familienfilter, der auf Ihre Suchergebnisse " "angewendet werden soll." -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "Keiner" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "Moderat" @@ -5228,11 +5380,6 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Erlauben, diese Anwendung von jedem nutzen zu lassen, der sie erreichen kann." -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "Konfiguration aktualisiert." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "Konsolen-Logins beschränken (empfohlen)" @@ -5266,8 +5413,47 @@ msgstr "" msgid "Show security report" msgstr "Berichte über Sicherheitslücken anzeigen" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "Häufige Funktionsaktualisierungen" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +#, fuzzy +#| msgid "Frequent feature updates are enabled." +msgid "Frequent feature updates are activated." +msgstr "Häufige Feature-Updates sind aktiviert." + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, fuzzy, python-format +#| msgid "" +#| "This will allow a very limited set of software, including FreedomBox " +#| "service, to be updated to receive newer features regularly instead of " +#| "once every 2 years or so. Note that packages with frequent feature " +#| "updates do not have support from Debian Security Team. They are instead " +#| "maintained by contributors to Debian and the FreedomBox community." +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" +"Dies ermöglicht es, eine sehr begrenzte Menge an Software, einschließlich " +"FreedomBox-Service, zu aktualisieren, um regelmäßig neuere Funktionen zu " +"erhalten, anstatt einmal alle 2 Jahre oder so. Beachten Sie, dass Pakete mit " +"häufigen Funktionsaktualisierungen keine Unterstützung vom Debian-" +"Sicherheitsteam haben. Sie werden stattdessen von Mitwirkenden von Debian " +"und der FreedomBox-Community betreut." + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "Sicherheits-Mitteilungsbericht" @@ -5304,7 +5490,7 @@ msgid "" "from the rest of the system. It is only displayed while the service is " "running." msgstr "" -"Die „Sandbox-Abdeckung“ ist ein Maß dafür, wie effektiv der Dienst vom Rest " +"Die \"Sandbox-Coverage\" ist ein Maß dafür, wie effektiv der Dienst vom Rest " "des Systems isoliert ist. Sie wird nur angezeigt, wenn der Dienst läuft." #: plinth/modules/security/templates/security_report.html:40 @@ -5343,12 +5529,12 @@ msgstr "Nein" msgid "Not running" msgstr "Läuft nicht" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Fehler beim Setzen des eingeschränkten Zugriffs: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "Sicherheitskonfiguration aktualisiert" @@ -5658,9 +5844,13 @@ msgid "Yearly Snapshots Limit" msgstr "Grenze für jährliche Speicherauszüge" #: plinth/modules/snapshot/forms.py:49 +#, fuzzy +#| msgid "" +#| "Keep a maximum of this many yearly snapshots. The default value is 0 " +#| "(disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" "Aufbewahren dieser maximalen Anzahl jährlichen Schnappschüsse. Standardwert " "ist 0 (deaktiviert)." @@ -5790,7 +5980,7 @@ msgstr "" "verifizierter, entfernter Computer Verwaltungsaufgaben ausführen, Dateien " "kopieren oder andere Anwendungen starten." -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) Server" @@ -5837,7 +6027,7 @@ msgstr "SSH-Authentifizierung mit Passwort deaktiviert." msgid "SSH authentication with password enabled." msgstr "SSH-Authentifizierung mit Passwort aktiviert." -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "Einmal-Anmeldung" @@ -5857,108 +6047,108 @@ msgstr "" "Speichermedien einsehen, Wechselmedien einbinden und aushängen, die Root-" "Partition erweitern usw." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "Speicher" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} Bytes" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "Der Vorgang schlug fehl." -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "Der Vorgang wurde abgebrochen." -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "Das Gerät wird bereits ausgehängt." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "Der Vorgang ist wegen fehlender Treiber-/Werkzeugunterstützung nicht möglich." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "Der Vorgang beendet wegen Zeitüberschreitung." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "Dieser Vorgang würde ein Gerät aufwecken, dass sich in einem Tiefschlaf-" "Zustand befindet." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "Es wird versucht, ein Gerät auszuhängen, das beschäftigt ist." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "Dieser Vorgang wurde bereits abgebrochen." -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "Nicht autorisiert, um den gewünschten Vorgang auszuführen." -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "Dieses Gerät ist bereits eingebunden." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "Das Gerät ist nicht eingebunden." -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "Die gewünschte Option ist nicht gestattet." -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "Das Gerät ist von einem anderen Benutzer eingebunden." -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Geringer Speicherplatz auf der Systempartition: {percent_used}% belegt, " "{free_space} verfügbar." -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "Wenig Plattenspeicherplatz" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "Festplattenfehler unmittelbar bevorstehend" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6150,11 +6340,11 @@ msgstr "" "LAFS Introducer. Sie können zusätzliche Introducer einstellen, welche diesen " "Speicherknoten bei weiteren Speicherknoten anmelden können." -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "Verteilter Dateispeicher" @@ -6198,7 +6388,7 @@ msgstr "Verbundene Vermittler" msgid "Remove" msgstr "Entfernen" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6212,40 +6402,40 @@ msgstr "" "Sie den Tor Browser verwenden." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "Tor-Onion-Dienste" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "Tor-Socks-Proxy" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "Tor-Bridge-Relay" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "Tor-Relay-Port ist verfügbar" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Obfs3-Transport registriert" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Obfs4-Transport registriert" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Zugangs-URL {url} auf TCP{kind} über Tor" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Tor-Nutzung auf {url} über TCP{kind} bestätigen" @@ -6399,7 +6589,7 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Tor SOCKS-Port ist auf Ihrer %(box_name)s auf TCP port 9050 verfügbar." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Einstellung unverändert" @@ -6460,13 +6650,13 @@ msgstr "Feedreader" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" "Prüfen Sie die neuesten Software- und Sicherheitsupdates und installieren " "Sie diese." -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6480,11 +6670,11 @@ msgstr "" "erachtet wird, erfolgt dieser automatisch um 02:00 Uhr, so dass alle " "Anwendungen kurzzeitig nicht verfügbar sind." -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "Aktualisieren" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" msgstr "FreedomBox aktualisiert" @@ -6497,6 +6687,31 @@ msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" "Wenn aktiviert, aktualisiert sich FreedomBox automatisch einmal täglich." +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "Aktivieren häufigen feature-updates (empfohlen)" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +#, fuzzy +#| msgid "" +#| "Warning! Once frequent feature updates are activated, " +#| "they cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" +"Warnung! Sobald häufige Funktions-Updates aktiviert sind, " +"können sie nicht deaktiviert werden. Sie können einen Snapshot mit Speicherauszüge erstellen, bevor Sie fortfahren." + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -6516,19 +6731,48 @@ msgstr "" msgid "Dismiss" msgstr "Verwerfen" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" -msgstr "Manuelles Update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" +"Häufige updates können aktiviert werden. Sie zu aktivieren ist " +"empfehlenswert." -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +#, fuzzy +#| msgid "" +#| "Frequent feature updates can be activated. Activating them is recommended." +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" +"Häufige updates können aktiviert werden. Sie zu aktivieren ist " +"empfehlenswert." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" +"Warnung! Sobald häufige Funktions-Updates aktiviert sind, " +"können sie nicht deaktiviert werden. Sie können einen Snapshot mit Speicherauszüge erstellen, bevor Sie fortfahren." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "Manuelle Aktualisierung" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "Aktualisierung läuft …" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "Jetzt aktualisieren" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " @@ -6539,31 +6783,37 @@ msgstr "" "Weboberfläche möglicherweise vorübergehend nicht verfügbar und zeigt einen " "Fehler an. In diesem Fall aktualisieren Sie die Seite, um fortzufahren." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "Letzte Update-Protokolle anzeigen" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "Fehler beim Konfigurieren von automatischen Aktualisierungen: {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "Automatische Systemaktualisierung aktivieren" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "Automatische Aktualisierungen ausgeschaltet" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "Aktualisierung gestartet." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "Starten der Aktualisierung fehlgeschlagen." +#: plinth/modules/upgrades/views.py:91 +#, fuzzy +#| msgid "Frequent feature updates are enabled." +msgid "Frequent feature updates activated." +msgstr "Häufige Feature-Updates sind aktiviert." + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6595,7 +6845,7 @@ msgstr "Benutzer und Gruppen" msgid "Access to all services and system settings" msgstr "Zugriff auf alle Anwendungen und Systemeinstellungen" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP-Eintrag „{search_item}“ prüfen" @@ -6608,18 +6858,14 @@ msgstr "Benutzername wird bereits verwendet oder ist reserviert." msgid "Enter a valid username." msgstr "Einen gültigen Benutzernamen eingeben." -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" "Erforderlich. 150 Zeichen oder weniger. Nur englische Buchstaben, Ziffern " "und @/./-/_." -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "Berechtigungen" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6634,20 +6880,20 @@ msgstr "" "allen Diensten anmelden und sie können sich auch über SSH im System anmelden " "und besitzen Administratorrechte (sudo)." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "Erstellen des LDAP-Benutzers ist fehlgeschlagen." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Der Benutzer konnte nicht der Gruppe {group} hinzugefügt werden." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Autorisierte SSH-Schlüssel" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6658,43 +6904,43 @@ msgstr "" "eingeben, einen pro Zeile. Leerzeilen und Zeilen, die mit # beginnen, werden " "ignoriert." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "Umbenennen des LDAP-Benutzers fehlgeschlagen." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "Entfernen des Benutzers von der Gruppe fehlgeschlagen." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "Hinzufügen eines Benutzers zur Gruppe ist fehlgeschlagen." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "SSH-Schlüssel kann nicht gesetzt werden." -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "Fehler beim Ändern des Benutzerstatus." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "Der einzige Administrator des Systems kann nicht gelöscht werden." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "Ändern des LDAP-Benutzerpassworts ist fehlgeschlagen." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Hinzufügen eines neuen Benutzers zur admin-Gruppe ist fehlgeschlagen." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "Einschränken des Konsolenzugriffs fehlgeschlagen." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "Benutzerkonto wurde erstellt, Sie sind jetzt angemeldet" @@ -6834,7 +7080,7 @@ msgstr "" "öffentlichen WLAN-Netzwerk kann der gesamte Datenverkehr sicher über die " "{box_name} weitergeleitet werden." -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -6977,7 +7223,7 @@ msgid "Add a new peer" msgstr "Hinzufügen eines neuen Peers" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "Zulässige Clients hinzufügen" @@ -7004,7 +7250,7 @@ msgid "Add a new server" msgstr "Neuen Server hinzufügen" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Verbindung zum Server hinzufügen" @@ -7098,59 +7344,59 @@ msgstr "Öffentlicher Schlüssel dieses Computers:" msgid "IP address of this machine:" msgstr "IP-Adresse dieses Rechners:" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "Neuer Client wurde hinzugefügt." -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "Client mit öffentlichem Schlüssel ist bereits vorhanden" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "Zulässiger Client" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "Aktualisierter Client." -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "Client bearbeiten" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "Zulässigen Client löschen" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "Client gelöscht." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "Client nicht gefunden" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "Neuer Server wurde hinzugefügt." -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "Verbindung zum Server" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "Aktualisierter Server." -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "Ändern der Verbindung zum Server" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "Verbindung zum Server löschen" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "Server gelöscht." @@ -7162,23 +7408,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Allgemein" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "Fehler bei der Installation" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "Installation läuft" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "herunterladen" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "Medienwechsel" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "Konfigurationsdatei: {file}" @@ -7447,17 +7693,57 @@ msgstr "Benachrichtigungen" msgid "Port Forwarding" msgstr "Port-Weiterleitung" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Möglicherweise wollen Sie die Netzwerkeinstellungen prüfen und falls nötig anpassen." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, fuzzy, python-format +#| msgid "" +#| "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 " +#| "%(service_name)s:" +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" msgstr "" "Wenn sich Ihre FreedomBox hinter einem Router befindet, müssen Sie eine " "Portweiterleitung auf Ihrem Router einrichten. Sie sollten die folgenden " "Ports für %(service_name)s weiterleiten:" +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "Protokoll" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "%(box_name)s Installation" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "Diese Anwendung installieren?" @@ -7504,6 +7790,111 @@ msgstr "%(percentage)s %% abgeschlossen" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Backports activated." +#~ msgstr "Backports aktiviert." + +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot ist eine Webanwendung für die gemeinsame Nutzung von Dateien " +#~ "mit nur einem Klick, deren Schwerpunkt auf dem Schutz der Privatsphäre " +#~ "der Benutzer liegt. Es wird am besten verwendet, um eine einzelne Datei " +#~ "schnell zu teilen. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Der Coquelicot-Dialog ist öffentlich zugänglich. Um unberechtigten " +#~ "Zugriff zu verhindern, wird ein Hochladen-Passwort benötigt. Sie können " +#~ "ein neues Hochladen-Passwort in dem Formular festlegen, das nach der " +#~ "Installation unten angezeigt wird. Das voreingestellte Hochladen-Passwort " +#~ "ist „test“." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "Hochladen-Passwort" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Ein neues Hochladen-Passwort für Coquelicot eingeben. Dieses Feld " +#~ "leerlassen, um das derzeitige Passwort beizubehalten." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Maximale Dateigröße (in MiB)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Die maximale Größe der Dateien festlegen, die per Coquelicot hochgeladen " +#~ "werden können." + +#~ msgid "coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Hochladen-Passwort geändert" + +#~ msgid "Failed to update upload password" +#~ msgstr "Hochalden-Passwort konnte nicht aktualisiert werden" + +#~ msgid "Maximum file size updated" +#~ msgstr "Maximale Dateigröße aktualisiert" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "Die maximale Dateigröße konnte nicht aktualisiert werden" + +#~ msgid "Riot" +#~ msgstr "Riot" + +#~ msgid "Security Notice" +#~ msgstr "Sicherheitshinweis" + +#~ msgid "" +#~ "Backports are enabled. Please note that packages from the backports " +#~ "repository do not have security support from Debian. However, they are " +#~ "maintained on a best-effort basis by contributors in Debian and " +#~ "FreedomBox community." +#~ msgstr "" +#~ "Backports sind aktiviert. Bitte beachten Sie, dass Pakete aus dem " +#~ "Backports-Repository keine Sicherheitsunterstützung von Debian haben. Sie " +#~ "werden jedoch von den Mitarbeitern der Debian- und FreedomBox-Community " +#~ "nach besten Kräften gepflegt." + +#~ msgid "Backports" +#~ msgstr "Backports" + +#~ msgid "" +#~ "Backports can be activated. This will allow a limited set of software, " +#~ "including FreedomBox service, to be upgraded to newer versions from " +#~ "Debian %(dist)s-backports repository." +#~ msgstr "" +#~ "Backports können aktiviert werden. Dies wird es ermöglichen, eine " +#~ "begrenzte Menge an Software, einschließlich des FreedomBox-Dienstes, auf " +#~ "neuere Versionen aus dem Debian %(dist)s-Backports-Repository zu " +#~ "aktualisieren." + +#~ msgid "" +#~ "Please note that backports packages do not have security support from " +#~ "Debian. However, they are maintained on a best-effort basis by " +#~ "contributors in Debian and FreedomBox community." +#~ msgstr "" +#~ "Sie verwenden Pakete von Debian-Backports. Bitte beachten Sie, dass diese " +#~ "Pakete keine Sicherheitsunterstützung von Debian haben. Sie werden jedoch " +#~ "von Mitwirkenden in der Debian- und FreedomBox-Community bestmöglich " +#~ "gepflegt." + +#~ msgid "Activate backports" +#~ msgstr "Backports aktivieren" + #~ msgid "Restoring" #~ msgstr "Wiederherstellen" @@ -7816,9 +8207,6 @@ msgstr "Gujarati" #~ msgid "Manage" #~ msgstr "Verwalten" -#~ msgid "Create" -#~ msgstr "Anlegen" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "" #~ "Der Gutschein-Code, den Sie mit Ihrer {box_name} Danube Edition erhalten " @@ -8159,9 +8547,6 @@ msgstr "Gujarati" #~ msgid "Apps data to restore from the backup" #~ msgstr "App Daten zum Wiederherstellen von Backup" -#~ msgid "Backup archives" -#~ msgstr "Backup Archive" - #~ msgid "" #~ "No apps that support backup are currently installed. Backup can be " #~ "created after an app supporting backups is installed." @@ -8364,9 +8749,6 @@ msgstr "Gujarati" #~ msgid "BitTorrent" #~ msgstr "BitTorrent" -#~ msgid "admin" -#~ msgstr "admin" - #~ msgid "wiki" #~ msgstr "wiki" diff --git a/plinth/locale/django.pot b/plinth/locale/django.pot index 6315814df..31aa72ae1 100644 --- a/plinth/locale/django.pot +++ b/plinth/locale/django.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -21,7 +21,7 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "" @@ -126,11 +126,11 @@ msgstr "" msgid "Local Network Domain" msgstr "" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "" -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "" @@ -139,6 +139,10 @@ msgstr "" msgid "{app} (No data to backup)" msgstr "" +#: plinth/modules/backups/forms.py:50 +msgid "Repository" +msgstr "" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -204,7 +208,15 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +msgid "Key in Repository" +msgstr "" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "" @@ -367,6 +379,7 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -569,6 +582,164 @@ msgstr "" msgid "Mounting failed" msgstr "" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +msgid "Create or upload files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +msgid "Delete files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +msgid "File & Snippet Sharing" +msgstr "" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +msgid "Manage Passwords" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +msgid "Add password" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "" + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "" + +#: plinth/modules/bepasty/views.py:97 +msgid "Password added." +msgstr "" + +#: plinth/modules/bepasty/views.py:102 +msgid "Add Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:119 +msgid "Password deleted." +msgstr "" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -583,11 +754,11 @@ msgid "" "connection from {box_name}." msgstr "" -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "" @@ -614,6 +785,7 @@ msgstr "" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -636,9 +808,9 @@ msgstr "" msgid "Refresh IP address and domains" msgstr "" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -710,12 +882,13 @@ msgid "Configure" msgstr "" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "" @@ -773,7 +946,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "" @@ -817,67 +990,6 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -892,11 +1004,11 @@ msgid "" "need to be configured with the details provided here." msgstr "" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "" @@ -928,7 +1040,7 @@ msgstr "" msgid "Date & Time" msgstr "" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "" @@ -987,16 +1099,28 @@ msgstr "" msgid "Bittorrent client written in Python/PyGTK" msgstr "" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "" +#: plinth/modules/diagnostics/__init__.py:102 +msgid "passed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:103 +msgid "failed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1121,46 +1245,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1169,68 +1293,72 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "" +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +msgid "other update URL" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "" @@ -1284,7 +1412,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1326,12 +1454,12 @@ msgid "" "any user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1378,11 +1506,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1394,11 +1522,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1448,12 +1576,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1561,50 +1691,58 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1667,11 +1805,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1682,33 +1815,33 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1769,18 +1902,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -1925,16 +2046,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1959,19 +2080,19 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2121,11 +2242,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2237,16 +2358,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2296,7 +2407,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2306,14 +2417,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2329,7 +2440,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2382,11 +2493,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "" @@ -2495,12 +2606,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2541,7 +2652,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2550,19 +2661,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2829,11 +2940,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -2859,7 +2970,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -2884,6 +2995,10 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +msgid "Services" +msgstr "" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -2896,56 +3011,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2953,185 +3068,190 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3139,7 +3259,7 @@ msgid "" "typical home setup.

" msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3148,7 +3268,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

" msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3156,11 +3276,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

" msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3171,7 +3291,7 @@ msgid "" "over time or not, it is safer to choose this option.

" msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3195,17 +3315,17 @@ msgid "" "workaround solutions but each solution has some limitations.

" msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3413,7 +3533,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3458,7 +3578,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3468,13 +3588,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3515,6 +3635,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3651,71 +3772,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3730,16 +3851,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3795,11 +3916,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -3994,6 +4115,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4079,7 +4213,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4103,11 +4237,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4115,7 +4249,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4125,19 +4259,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4159,6 +4293,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4359,32 +4497,32 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -4421,10 +4559,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4441,11 +4575,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4473,8 +4602,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4541,12 +4695,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -4815,8 +4969,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -4931,7 +5085,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -4972,7 +5126,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -4988,103 +5142,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5243,11 +5397,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5286,7 +5440,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5295,40 +5449,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5454,7 +5608,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5505,11 +5659,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5517,11 +5671,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" msgstr "" @@ -5533,6 +5687,23 @@ msgstr "" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5550,50 +5721,73 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5617,7 +5811,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5630,16 +5824,12 @@ msgstr "" msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5648,63 +5838,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -5831,7 +6021,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5951,7 +6141,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -5978,7 +6168,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -6066,59 +6256,59 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "" -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "" @@ -6130,23 +6320,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6388,12 +6578,40 @@ msgstr "" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 diff --git a/plinth/locale/el/LC_MESSAGES/django.po b/plinth/locale/el/LC_MESSAGES/django.po index 527363456..165c695ea 100644 --- a/plinth/locale/el/LC_MESSAGES/django.po +++ b/plinth/locale/el/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2020-05-29 18:41+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Greek πιστοποιητικά για το {box_name}." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Διακομιστής συνομιλίας" @@ -1617,11 +1763,11 @@ msgstr "" "λογαριασμούς σε δημόσιους διακομιστές XMPP (ακόμη και μέσο Tor) ή ακόμη και " "να συνδεθείτε με τον δικό σας διακομιστή για επιπλέον ασφάλεια." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "Gajim" @@ -1637,11 +1783,11 @@ msgstr "" "%(domainname)s. Μπορείτε να ρυθμίσετε το όνομα της υπηρεσίας στο Ρυθμίστε page." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "Η Διαχείριση αρχειοθέτησης μηνυμάτων ενεργοποιήθηκε" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "Η Διαχείριση αρχειοθέτησης μηνυμάτων απενεργοποιήθηκε" @@ -1701,12 +1847,14 @@ msgstr "Υπηρεσία/θύρα" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Ενεργοποιήθηκε" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Απενεργοποιήθηκε" @@ -1832,56 +1980,66 @@ msgstr "Gitweb" msgid "Simple Git Hosting" msgstr "Απλό Hosting Git" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "Μη έγκυρη διεύθυνση URL για το αποθετήριο." -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "Μη έγκυρο όνομα αποθετηρίου." -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" "Όνομα νέου αποθετηρίου ή διεύθυνσης URL για την εισαγωγή υπάρχοντος " "αποθετηρίου." -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "Περιγραφή του αποθετηρίου" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "Προαιρετικά, για την εμφάνιση στην Gitweb." -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Όνομα κατόχου αποθετηρίου" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "Ιδιωτικό αποθετήριο" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" "Να επιτρέπεται μόνο σε εξουσιοδοτημένους χρήστες η πρόσβαση σε αυτό το " "αποθετήριο." -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "Υπάρχει ήδη ένα αποθετήριο με αυτό το όνομα." -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "Όνομα του αποθετηρίου" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" "Μια αλφαριθμητική συμβολοσειρά που προσδιορίζει με μοναδικό τρόπο ένα " "αποθετήριο." +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default Skin" +msgid "Default branch" +msgstr "Προεπιλεγμένη εμφάνιση" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "Git" @@ -1946,11 +2104,6 @@ msgstr "To αποθετήριο τροποποιήθηκε." msgid "Edit repository" msgstr "Τροποποίηση αποθετηρίου" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "Παρουσιάστηκε σφάλμα κατά τη ρύθμιση παραμέτρων." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1961,33 +2114,35 @@ msgstr "το {name} διαγράφηκε." msgid "Could not delete {name}: {error}" msgstr "Δεν ήταν δυνατή η διαγραφή του {name}: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Boηθητικά έγγραφα" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Εγχειρίδιο" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Λάβετε Υποστήριξη" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Υποβάλετε σχόλια" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "Συνεισφέρετε" @@ -2071,22 +2226,6 @@ msgstr "Υπάρχει μια νέα έκδοση %(box_name)s διαθέσιμ msgid "%(box_name)s is up to date." msgstr "To %(box_name)s είναι ενημερωμένο." -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "Ειδοποίηση ασφαλείας" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" -"Χρησιμοποιείτε πακέτα από τo αποθετήριο του Debian Backports. Παρακαλείστε " -"να σημειώσετε ότι αυτά τα πακέτα δεν διαθέτουν υποστήριξη ασφαλείας από το " -"Debian. Ωστόσο, διατηρούνται με βάση την καλύτερη δυνατή προσπάθεια από τους " -"συνεισφέροντες στην Κοινότητα του Debian και τoυ Freedombox." - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2295,16 +2434,16 @@ msgstr "" "Παρακαλώ αφαιρέστε κωδικούς πρόσβασης ή άλλα προσωπικά στοιχεία από το " "αρχείο καταγραφής πριν από την υποβολή της αναφοράς σφάλματος." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "Βοηθητικά έγγραφα και συχνές ερωτήσεις" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "Σχετικά με το {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "Εγχειρίδιο για το {box_name}" @@ -2337,19 +2476,19 @@ msgstr "" "Η πρώτη επίσκεψη στο παρεχόμενο δικτυακό περιβάλλον θα ξεκινήσει τη " "διαδικασία ρύθμισης." -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "Διαχείριση εφαρμογής I2P" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "Δίκτυο ανωνυμίας" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "Διακομιστής μεσολάβησης I2P" @@ -2526,11 +2665,11 @@ msgstr "" "επιλέξτε \"σύνδεση στο διακομιστή\" και πληκτρολογήστε το όνομα διαδικτύου " "σας για το {box_name}." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby Server" @@ -2658,16 +2797,6 @@ msgstr "Δεν υπάρχει πιστοποιητικό" msgid "Re-obtain" msgstr "Ανάκτηση" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Διαγραφή" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Aνάκληση" @@ -2721,7 +2850,7 @@ msgstr "Το πιστοποιητικό διαγράφηκε επιτυχώς γ msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Αποτυχία διαγραφής πιστοποιητικού για το όνομα {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2739,18 +2868,23 @@ msgstr "" "να συνομιλήσουν με τους χρήστες σε όλες τις άλλες διακομιστές Matrix μέσω " "ομοσπονδίας." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 +#, fuzzy +#| msgid "" +#| "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" "Για να επικοινωνήσετε, μπορείτε να χρησιμοποιήσετε τους διαθέσιμους πελάτες για το κινητό, τον " "υπολογιστή και τον περιηγητή διαδικτύου. O πελάτης riot συνιστάται." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -2770,8 +2904,8 @@ msgstr "" "μπορούν να χρησιμοποιήσουν το διακομιστή σας." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "Riot" +msgid "Element" +msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2846,11 +2980,11 @@ msgstr "" "TLS πιστοποιητικό. Μεταβείτε στη διεύθυνση " "Lets Encrypt για να αποκτήσετε ένα." -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "Η δημόσια εγγραφή ενεργοποιήθηκε" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "Η δημόσια εγγραφή απενεργοποιήθηκε" @@ -2987,12 +3121,12 @@ msgstr "" "συνδεθείτε με το διακομιστή, ένας Minetest πελάτη είναι απαραίτητος." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Μπλοκ Sandbox" @@ -3042,7 +3176,7 @@ msgstr "" "ζημιές οποιουδήποτε είδους." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Διεύθυνση" @@ -3051,19 +3185,19 @@ msgstr "Διεύθυνση" msgid "Port" msgstr "Θύρα" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "Η ρύθμιση μέγιστου αριθμού παικτών πραγματοποιήθηκε" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "Η ρυθμιση δημιουργικής λειτουργίας πραγματοποιήθηκε" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "Η ρύθμιση PVP ενημερώθηκε" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "Η ρύθμιση ζημιών ενημερώθηκε" @@ -3380,11 +3514,11 @@ msgstr "" "href=\"http://mumble.info\"> Πελάτες για να συνδεθείτε με το Mumble από " "τον υπολογιστή και τις συσκευές Android είναι διαθέσιμες." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "Φωνητική συνομιλία" @@ -3413,7 +3547,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "Ο κωδικός πρόσβασης SuperUser Ενημερώθηκε με επιτυχία." @@ -3443,6 +3577,12 @@ msgstr "Όλα" msgid "All web apps" msgstr "Όλες οι εφαρμογές ιστού" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Υπηρεσία" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3460,38 +3600,38 @@ msgstr "" "Οι συσκευές που διαχειρίζονται μέσω άλλων μεθόδων ενδέχεται να μην είναι " "διαθέσιμες για ρύθμιση παραμέτρων εδώ." -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Δίκτυα" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Χρήση του DNSSEC σε IPv {kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Τύπος σύνδεσης" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Όνομα σύνδεσης" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 #, fuzzy #| msgid "Interface" msgid "Network Interface" msgstr "Ιnterface" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "Η συσκευή δικτύου που η σύνδεση αυτή θα πρέπει να δεσμεύεται." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Ζώνη τείχους προστασίας" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3499,21 +3639,21 @@ msgstr "" "Η ζώνη τείχους προστασίας θα ελέγχει ποιες υπηρεσίες είναι διαθέσιμες σε " "αυτές τις διασυνδέσεις. Επιλέξτε εσωτερική μόνο για αξιόπιστα δίκτυα." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Εξωτερική" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Εσωτερική" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "Μέθοδος διευθύνσεων IPv4" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3526,19 +3666,26 @@ msgstr "" "ρυθμίζει τις παραμέτρους των υπολογιστών-πελατών σε αυτό το δίκτυο και να " "μοιράζεται τη σύνδεσή του στο Internet." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "Αυτόματο (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Κοινόχρηστο" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Εγχειρίδιο" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Μάσκα δικτύου" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3546,21 +3693,21 @@ msgstr "" "Προαιρετική τιμή. Εάν μείνει κενό, θα χρησιμοποιηθεί μια προεπιλεγμένη μάσκα " "δικτύου με βάση τη διεύθυνση." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Πύλη" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "Προαιρετική τιμή." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "Διακομιστής DNS" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3569,11 +3716,11 @@ msgstr "" "είναι \"Αυτόματη\", οι διακομιστές DNS που παρέχονται από ένα διακομιστή " "DHCP θα παραβλεφθούν." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "Δεύτερος διακομιστής DNS" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3582,11 +3729,11 @@ msgstr "" "είναι \"Αυτόματη\", οι διακομιστές DNS που παρέχονται από ένα διακομιστή " "DHCP θα παραβλεφθούν." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "Μέθοδος διευθύνσεων IPv6" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3595,27 +3742,27 @@ msgstr "" "Η \"Αυτόματη\" μέθοδος θα κάνει το {box_name} να αποκτήσει ρύθμιση " "παραμέτρων από αυτό το δίκτυο καθιστώντας το πρόγραμμα-πελάτη." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Αυτόματο" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "Αυτόματη, μόνο DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "Αγνόησε" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "Πρόθεμα" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "Τιμή μεταξύ 1 και 128." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3624,7 +3771,7 @@ msgstr "" "διευθύνσεων IPv6 είναι \"Αυτόματη\", οι διακομιστές DNS που παρέχονται από " "ένα διακομιστή DHCP θα παραβλεφθούν." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3633,54 +3780,54 @@ msgstr "" "είναι \"Αυτόματη\", οι διακομιστές DNS που παρέχονται από ένα διακομιστή " "DHCP θα παραβλεφθούν." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "--Επιλέξτε--" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "Ssid" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "Το ορατό όνομα του δικτύου." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Λειτουργία" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Υποδομή" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Σημείο πρόσβασης" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "ad-hoc" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Ζώνη συχνοτήτων" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "Α (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Κανάλι" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3688,11 +3835,11 @@ msgstr "" "Προαιρετική τιμή. Ασύρματο κανάλι για περιορισμό στην επιλεγμένη ζώνη " "συχνοτήτων. Η κενή ή η τιμή 0 σημαίνει αυτόματη επιλογή." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "Bssid" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3702,11 +3849,11 @@ msgstr "" "συνδέεστε σε ένα σημείο πρόσβασης, συνδεθείτε μόνο εάν το BSSID του σημείου " "πρόσβασης ταιριάζει με αυτό που παρέχεται. Παράδειγμα: 00:11:22: AA: BB: CC." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Λειτουργία ελέγχου ταυτότητας" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3714,21 +3861,21 @@ msgstr "" "Επιλέξτε WPA εάν το ασύρματο δίκτυο είναι ασφαλισμένο και απαιτεί από τους " "υπολογιστές-πελάτες να έχουν τον κωδικό πρόσβασης για να συνδεθούν." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "Wpa" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Ανοιχτό" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, fuzzy, python-brace-format #| msgid "Use upstream bridges to connect to Tor network" msgid "Specify how your {box_name} is connected to your network" msgstr "Χρησιμοποιήστε εξωτερικές γέφυρες για να συνδεθείτε στο δίκτυο Tor" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3736,7 +3883,7 @@ msgid "" "typical home setup.

" msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3745,7 +3892,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

" msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3753,11 +3900,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

" msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3768,7 +3915,7 @@ msgid "" "over time or not, it is safer to choose this option.

" msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3792,19 +3939,19 @@ msgid "" "workaround solutions but each solution has some limitations.

" msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "An error occurred during configuration." msgid "Preferred router configuration" msgstr "Παρουσιάστηκε σφάλμα κατά τη ρύθμιση παραμέτρων." -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -4019,7 +4166,7 @@ msgid "Create Connection" msgstr "Δημιουργία σύνδεσης" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Διαγραφή σύνδεσης" @@ -4064,7 +4211,7 @@ msgid "Computer" msgstr "Υπολογιστής" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Επεξεργασία σύνδεσης" @@ -4074,13 +4221,13 @@ msgstr "Συνδέσεις" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "Κοντινά δίκτυα Wi-Fi" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Προσθήκη σύνδεσης" @@ -4121,6 +4268,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -4263,73 +4411,73 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Συνδέσεις δικτύου" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "Δεν είναι δυνατή η εμφάνιση της σύνδεσης: δεν βρέθηκε σύνδεση." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "Πληροφορίες σύνδεσης" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "Δεν είναι δυνατή η επεξεργασία της σύνδεσης: δεν βρέθηκε σύνδεση." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "Αυτός ο τύπος σύνδεσης δεν έχει κατανοηθεί ακόμα." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "H σύνδεση {name} ενεργοποιήθηκε." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "Απέτυχε η ενεργοποίηση της σύνδεσης: η σύνδεση δεν βρέθηκε." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Απέτυχε η ενεργοποίηση της σύνδεσης {name}: δεν υπάρχει διαθέσιμη κατάλληλη " "συσκευή." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Aπενεργοποιήθηκε η σύνδεση {name}." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "Απέτυχε η απενεργοποίηση της σύνδεσης: η σύνδεση δεν βρέθηκε." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "Προσθήκη νέας γενικής σύνδεσης" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "Προσθήκη νέας σύνδεσης Ethernet" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "Προσθήκη νέας σύνδεσης PPPoE" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "Προσθήκη νέας σύνδεσης Wi-Fi" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "Η σύνδεση {name} διαγράφηκε." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "Απέτυχε η διαγραφή της σύνδεσης: η σύνδεση δεν βρέθηκε." @@ -4351,16 +4499,16 @@ msgstr "" "επίσης να αποκτήσετε πρόσβαση στο υπόλοιπο Internet μέσω του {box_name} για " "πρόσθετη ασφάλεια και ανωνυμία." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Εικονικό ιδιωτικό δίκτυο" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4434,11 +4582,11 @@ msgstr "" msgid "Download my profile" msgstr "Λήψη του προφίλ μου" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Η εγκατάσταση ολοκληρώθηκε." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Η εγκατάσταση απέτυχε." @@ -4665,6 +4813,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4773,7 +4934,7 @@ msgstr "Privoxy" msgid "Web Proxy" msgstr "Διακομιστής μεσολάβησης διαδικτύου" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4810,11 +4971,11 @@ msgstr "" "\">υπολογιστή και κινητό είναι διαθέσιμοι." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "Πελάτης IRC" @@ -4822,7 +4983,7 @@ msgstr "Πελάτης IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4842,7 +5003,7 @@ msgstr "" "clients/\">πελάτη . Το Radicale μπορεί να προσεγγιστεί από οποιονδήποτε " "χρήστη με {box_name} πιστοποιητικά." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4853,12 +5014,12 @@ msgstr "" "γεγονότων ή επαφών, το οποίο πρέπει να γίνει χρησιμοποιώντας ένα ξεχωριστό " "πελάτη." -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "Ημερολόγιο και βιβλίο διευθύνσεων" @@ -4886,6 +5047,12 @@ msgstr "" "Οποιοσδήποτε χρήστης με πιστοποιητικά {box_name} μπορεί να προβάλει ή να " "κάνει αλλαγές σε οποιοδήποτε βιβλίο ημερολογίου/διευθύνσεων." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Σημείο πρόσβασης" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "DAVx5" @@ -5166,32 +5333,32 @@ msgstr "Όνομα μερίσματος" msgid "Action" msgstr "Ενέργεια" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "Aνοικτό μέρισμα" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "Ομαδικό μέρισμα" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "Οικιακό μέρισμα" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "Το μέρισμα ενεργοποιήθηκε." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Σφάλμα κατά την ενεργοποίηση του μερίσματος: {error_message}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "Το μέρισμα απενεργοποιήθηκε." -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Σφάλμα κατά την απενεργοποίηση του μερίσματος: {error_message}" @@ -5236,10 +5403,6 @@ msgstr "" "Επιλέξτε το οικογενειακό φίλτρο που θα εφαρμοστεί στα αποτελέσματα " "αναζήτησης." -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "Κανένα" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "Μέτριο" @@ -5258,11 +5421,6 @@ msgstr "" "Να επιτρέπεται η χρήση αυτής της εφαρμογής από οποιονδήποτε μπορεί να την " "προσεγγίσει." -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "Η ρύθμιση παραμέτρων Ενημερώθηκε." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "Περιορισμός συνδέσεων κονσόλας (συνιστάται)" @@ -5297,8 +5455,33 @@ msgstr "" msgid "Show security report" msgstr "Εμφάνιση αναφοράς ασφαλείας" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "Αναφορά ασφαλείας" @@ -5375,12 +5558,12 @@ msgstr "Όχι" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Σφάλμα κατά τη ρύθμιση περιορισμένης πρόσβασης: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "Ενημερώθηκαν οι ρυθμίσεις παραμέτρων ασφαλείας" @@ -5702,9 +5885,13 @@ msgid "Yearly Snapshots Limit" msgstr "Όριο ετήσιων στιγμιότυπων" #: plinth/modules/snapshot/forms.py:49 +#, fuzzy +#| msgid "" +#| "Keep a maximum of this many yearly snapshots. The default value is 0 " +#| "(disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" "Κρατήστε το μέγιστο αριθμό ετήσιων στιγμιότυπων. Η προεπιλεγμένη τιμή είναι " "0 (απενεργοποιημένο)." @@ -5839,7 +6026,7 @@ msgstr "" "αντιγράψει αρχεία ή να εκτελέσει άλλες υπηρεσίες χρησιμοποιώντας αυτές τις " "συνδέσεις." -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "Διακομιστής SSH" @@ -5886,7 +6073,7 @@ msgstr "Έλεγχος ταυτότητας SSH με κωδικό πρόσβασ msgid "SSH authentication with password enabled." msgstr "Έλεγχος ταυτότητας SSH με κωδικό πρόσβασης ενεργοποιήθηκε." -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "Single Sign On" @@ -5906,91 +6093,91 @@ msgstr "" "χρησιμοποιούνται προς το παρόν, να προσθέσετε και να αφαιρέσετε αφαιρούμενα " "μέσα, επεκτείνετε το root διαμέρισμα κλπ." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "Χώρος Αποθήκευσης" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "Η ενέργεια απέτυχε." -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "Η ενέργεια ακυρώθηκε." -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "Η συσκευή είναι ήδη προς αφαίρεση." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "Η ενέργεια δεν υποστηρίζεται λόγω μη υποστήριξης προγραμματος οδηγού." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "Η ενέργεια απέτυχε επειδή διήρκησε πολύ χρόνο." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "Η ενέργεια θα ξυπνήσει ένα δίσκο που είναι σε μια βαθιά κατάσταση ύπνου." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "Γίνεται προσπάθεια αφαίρεσης μιας συσκευής που είναι απασχολημένη." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "Η ενέργια έχει ήδη ακυρωθεί." -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "Δεν έχετε εξουσιοδότηση για την εκτέλεση της συγκεκριμένης ενέργειας." -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "Η συσκευή έχει ήδη προστεθεί." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "Η συσκευή δεν είναι τοποθετημένη." -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "Δεν έχετε εξουσιοδότηση για την εκτέλεση της συγκεκριμένης ενέργειας." -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "Η συσκευή έχει ήδη προστεθεί από άλλο χρήστη." -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -6000,15 +6187,15 @@ msgstr "" "Προειδοποίηση: χαμηλός χώρος στο διαμέρισμα του συστήματος ({percent_used}% " "χρησιμοποιείται, {free_space} είναι ελεύθερος)." -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6200,11 +6387,11 @@ msgstr "" "από προεπιλογή. Πρόσθετοι \"εισαγωγείς\" μπορούν να προστεθούν, οι οποίοι θα " "διαφημίσουν αυτόν τον κόμβο στους άλλους κόμβους αποθήκευσης." -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "Διανεμημένος χώρος αποθήκευσης αρχείων" @@ -6248,7 +6435,7 @@ msgstr "Συνδεδεμένοι εισαγωγείς" msgid "Remove" msgstr "Καταργήστε" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6262,40 +6449,40 @@ msgstr "" "Project συνιστά να χρησιμοποιήσετε το πρόγραμμα περιήγησης διαδικτύου Tor." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "Υπηρεσία κρεμυδιού Tor" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "Tor διακομιστής μεσολάβησης τύπου socks5" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "Γέφυρα/μεσολαβητής Tor" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "Θύρα μεσολαβητή Tor διαθέσιμη" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Obfs3 μεταφορά καταχωρήθηκε" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Obfs4 μεταφορά καταχωρήθηκε" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Πρόσβαση στη διεύθυνση URL {url} με tcp {kind} μέσω του Tor" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Επιβεβαίωση χρήσης του Tor στο {url} στο προτόκολλο TCP {kind}" @@ -6449,7 +6636,7 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Μια θύρα Tor SOCKS είναι διαθέσιμη στη θύρα 9050 του %(box_name)s σας." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Οι ρυθμίσεις δεν άλλαξαν" @@ -6516,12 +6703,12 @@ msgstr "Αναγνώστης ειδήσεων" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" "Ελέγξτε και εφαρμόστε τις πιο πρόσφατες ενημερώσεις λογισμικού και ασφαλείας." -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6529,11 +6716,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "Ενημερωμένη έκδοση" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6549,6 +6736,23 @@ msgstr "" "Όταν είναι ενεργοποιημένες, το Freedombox ενημερώνεται αυτόματα μία φορά την " "ημέρα." +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s is up to date." @@ -6567,19 +6771,40 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +#, fuzzy +#| msgid "Manual update" +msgid "Manual Update" msgstr "Μη αυτόματη ενημέρωση" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "Eνημερώνεται..." -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "Ενημέρωση τώρα" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 #, fuzzy #| msgid "" #| "This may take a long time to complete. During an update, " @@ -6596,33 +6821,37 @@ msgstr "" "εμφανίσει σφάλμα. Σε αυτήν την περίπτωση, ανανεώστε τη σελίδα για να " "συνεχίσετε." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 #, fuzzy #| msgid "Toggle recent update logs" msgid "Show recent update logs" msgstr "Ενεργοποίηση αρχείων καταγραφής πρόσφατων ενημερώσεων" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "Σφάλμα κατά τη ρύθμιση των αυτόματων ενημερώσεων: {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "Oι αυτόματες ενημερώσεις ενεργοποιήθηκαν" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "Oι αυτόματες ενημερώσεις απενεργοποιήθηκαν" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "Ξεκίνησε η διαδικασία αναβάθμισης." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "Η εκκίνηση της αναβάθμισης απέτυχε." +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6655,7 +6884,7 @@ msgstr "Χρήστες και ομάδες" msgid "Access to all services and system settings" msgstr "Πρόσβαση σε όλες τις υπηρεσίες και τις ρυθμίσεις συστήματος" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Ελέγξτε την καταχώρηση LDAP \"{search_item}\"" @@ -6670,16 +6899,12 @@ msgstr "Το όνομα χρήστη είναι δεσμευμένο." msgid "Enter a valid username." msgstr "Μη έγκυρο όνομα διακομιστή" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "Δικαιώματα" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6701,20 +6926,20 @@ msgstr "" "υπηρεσίες. Μπορούν επίσης να συνδεθούν στο σύστημα μέσω του SSH και να έχουν " "δικαιώματα διαχειριστή (sudo)." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "Η δημιουργία χρήστη LDAP απέτυχε." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Απέτυχε η προσθήκη νέου χρήστη στην ομάδα {group}." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Εξουσιοδοτημένα κλειδιά SSH" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6725,43 +6950,43 @@ msgstr "" "Μπορείτε να εισαγάγετε πολλαπλά κλειδιά, ένα σε κάθε γραμμή. Οι κενές " "γραμμές και οι γραμμές που ξεκινούν με # θα αγνοηθούν." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "Η μετονομασία του χρήστη LDAP απέτυχε." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "Απέτυχε η κατάργηση του χρήστη από την ομάδα." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "Απέτυχε η προσθήκη χρήστη στην ομάδα." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "Δεν ήταν δυνατό να προστεθούν τα κλειδιά SSH." -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "Απέτυχε η αλλαγή της κατάστασης χρήστη." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "Δεν είναι δυνατή η διαγραφή του μοναδικού διαχειριστή στο σύστημα." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "Η αλλαγή του κωδικού πρόσβασης χρήστη LDAP απέτυχε." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Αποτυχία προσθήκης νέου χρήστη στην ομάδα διαχειριστών." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "Απέτυχε ο περιορισμός της πρόσβασης στην κονσόλα." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "Ο λογαριασμός χρήστη δημιουργήθηκε, τώρα είστε συνδεδεμένοι" @@ -6894,7 +7119,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -7028,7 +7253,7 @@ msgid "Add a new peer" msgstr "Προσθέστε νέο εισαγωγέα" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -7061,7 +7286,7 @@ msgid "Add a new server" msgstr "Προσθέστε νέο εισαγωγέα" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" msgid "Add Connection to Server" @@ -7167,83 +7392,83 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 #, fuzzy #| msgid "Add new introducer" msgid "Added new client." msgstr "Προσθέστε νέο εισαγωγέα" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy #| msgid "A share with this name already exists." msgid "Client with public key already exists" msgstr "Υπάρχει ήδη ένα μέρισμα με αυτό το όνομα." -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 #, fuzzy #| msgid "Email Client" msgid "Allowed Client" msgstr "Πρόγραμμα-πελάτης ηλεκτρονικού ταχυδρομείου" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "Ενημέρωση ρυθμίσεων" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy #| msgid "Email Client" msgid "Modify Client" msgstr "Πρόγραμμα-πελάτης ηλεκτρονικού ταχυδρομείου" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "Archive deleted." msgid "Client deleted." msgstr "Το αρχείο διαγράφηκε." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 #, fuzzy #| msgid "Repository not found" msgid "Client not found" msgstr "Το αποθετήριο δεν βρέθηκε" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added custom service" msgid "Added new server." msgstr "Προστέθηκε τροποποιημένη υπηρεσία" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "Τύπος σύνδεσης" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "Ενημέρωση ρυθμίσεων" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Edit Connection" msgid "Modify Connection to Server" msgstr "Επεξεργασία σύνδεσης" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "Διαγραφή σύνδεσης" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "Share deleted." msgid "Server deleted." @@ -7257,23 +7482,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Γενικός" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "Σφάλμα κατά την εγκατάσταση" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "Εγκαθίσταται" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "Λήψη" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "Αλλαγή μέσου" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "αρχείο ρυθμίσεων: {file}" @@ -7557,17 +7782,57 @@ msgstr "Δεν υπάρχει πιστοποιητικό" msgid "Port Forwarding" msgstr "Προώθηση θυρών" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Ίσως θελήσετε να ελέγξετε την εγκατάσταση του " +"δικτύου και να την τροποποιήσετε, εάν είναι απαραίτητο." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, fuzzy, python-format +#| msgid "" +#| "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 " +#| "%(service_name)s:" +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" msgstr "" "Αν το FreedomBox είναι πίσω από ένα router, θα πρέπει να ρυθμίσετε την " "προώθηση των θυρών στο δρομολογητή σας. Θα πρέπει να προωθήσετε τις " "ακόλουθες θύρες για %(service_name)s:" +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "Πρωτόκολλο" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "Ρύθμιση του %(box_name)s" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "Να εγκατασταθεί αυτή η εφαρμογή;" @@ -7615,6 +7880,115 @@ msgstr "ολοκληρώθηκε το %(percentage)s%%" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "To Coquelicot είναι ένα πρόγραμμα που επιτρέπει το διαμοιρασμό αρχείων με " +#~ "ένα κλικ και εστιάζει στην προστασία της ιδιωτικής ζωής των χρηστών. " +#~ "Μπορείται να το χρησιμοποιήσετε όταν θέλετε να ανταλλάξετε ένα μεμονωμένο " +#~ "αρχειο. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Η υπηρεσία του Coquelicot γίνεται διαθέσιμη στο διαδίτυο αλλά απαιτεί " +#~ "κωδικό για την προστασία της από μη εξουσιοδοτημένη πρόσβαση. Μπορείτε να " +#~ "ρυθμίσετε ένα νέο κωδικό για ανέβασμα αρχείων στη φόρμα που θα εμφανιστεί " +#~ "μετά την εγκατάσταση. Ο κωδικός είναι \"test\" αν δεν αλλαχθεί." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "Αποστολή κωδικού πρόσβασης" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Ορίστε καινούριο κωδικό αποστολής για το Coquelicot. Αφήστε το κενό για " +#~ "να διατηρηθεί ο ήδη υπάρχων." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Μέγιστο μέγεθος αρχείου (ΜΙΒ)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Ρυθμίστε το μέγιστο μέγεθος των αρχείων που μπορούν να αποσταλούν στο " +#~ "Coquelicot." + +#~ msgid "coquelicot" +#~ msgstr "coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Ο κωδικός πρόσβασης ρυθμίστηκε" + +#~ msgid "Failed to update upload password" +#~ msgstr "Απέτυχε η ενημέρωση του κωδικού πρόσβασης" + +#~ msgid "Maximum file size updated" +#~ msgstr "Το μέγιστο μέγεθος αρχείου Ενημερώθηκε" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "Δεν ήταν δυνατή η ενημέρωση του μέγιστου μεγέθους αρχείου" + +#~ msgid "Riot" +#~ msgstr "Riot" + +#~ msgid "Security Notice" +#~ msgstr "Ειδοποίηση ασφαλείας" + +#, fuzzy +#~| msgid "" +#~| "You are using packages from Debian backports. Please note that these " +#~| "packages do not have security support from Debian. However, they are " +#~| "maintained on a best-effort basis by contributors in Debian and " +#~| "FreedomBox community." +#~ msgid "" +#~ "Backports are enabled. Please note that packages from the backports " +#~ "repository do not have security support from Debian. However, they are " +#~ "maintained on a best-effort basis by contributors in Debian and " +#~ "FreedomBox community." +#~ msgstr "" +#~ "Χρησιμοποιείτε πακέτα από τo αποθετήριο του Debian Backports. " +#~ "Παρακαλείστε να σημειώσετε ότι αυτά τα πακέτα δεν διαθέτουν υποστήριξη " +#~ "ασφαλείας από το Debian. Ωστόσο, διατηρούνται με βάση την καλύτερη δυνατή " +#~ "προσπάθεια από τους συνεισφέροντες στην Κοινότητα του Debian και τoυ " +#~ "Freedombox." + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Αντίγραφα ασφαλείας" + +#, fuzzy +#~| msgid "" +#~| "You are using packages from Debian backports. Please note that these " +#~| "packages do not have security support from Debian. However, they are " +#~| "maintained on a best-effort basis by contributors in Debian and " +#~| "FreedomBox community." +#~ msgid "" +#~ "Please note that backports packages do not have security support from " +#~ "Debian. However, they are maintained on a best-effort basis by " +#~ "contributors in Debian and FreedomBox community." +#~ msgstr "" +#~ "Χρησιμοποιείτε πακέτα από τo αποθετήριο του Debian Backports. " +#~ "Παρακαλείστε να σημειώσετε ότι αυτά τα πακέτα δεν διαθέτουν υποστήριξη " +#~ "ασφαλείας από το Debian. Ωστόσο, διατηρούνται με βάση την καλύτερη δυνατή " +#~ "προσπάθεια από τους συνεισφέροντες στην Κοινότητα του Debian και τoυ " +#~ "Freedombox." + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "Ενεργοποίηση" + #~ msgid "Restoring" #~ msgstr "Επαναφορά αντιγράφων ασφαλείας" diff --git a/plinth/locale/es/LC_MESSAGES/django.po b/plinth/locale/es/LC_MESSAGES/django.po index cdb4b081b..0d097847d 100644 --- a/plinth/locale/es/LC_MESSAGES/django.po +++ b/plinth/locale/es/LC_MESSAGES/django.po @@ -7,23 +7,23 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: 2020-06-24 11:41+0000\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-08-30 18:23+0000\n" "Last-Translator: Fioddor Superconcentrado \n" "Language-Team: Spanish \n" +"freedombox/es/>\n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.2-dev\n" +"X-Generator: Weblate 4.2.1-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" msgstr "Página origen" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "FreedomBox" @@ -136,13 +136,13 @@ msgstr "Detección de servicios" msgid "Local Network Domain" msgstr "Dominio de Red Local" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "" "Copias de seguridad le permite crear y gestionar archivos de copia de " "seguridad." -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "Copias de seguridad" @@ -151,6 +151,12 @@ msgstr "Copias de seguridad" msgid "{app} (No data to backup)" msgstr "{app} (Sin datos que respaldar)" +#: plinth/modules/backups/forms.py:50 +#, fuzzy +#| msgid "Create Repository" +msgid "Repository" +msgstr "Crear repositorio" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -219,7 +225,17 @@ msgstr "" "\"Clave en el repositorio\" significa que una clave protegida por contraseña " "está almacenada con la copia de seguridad." -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +#, fuzzy +#| msgid "Create Repository" +msgid "Key in Repository" +msgstr "Crear repositorio" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "Ninguno" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "Clave de acceso" @@ -394,6 +410,7 @@ msgid "Delete Archive %(name)s" msgstr "Eliminar el archivo %(name)s" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -616,6 +633,190 @@ msgstr "¡No se pudo desmontar!" msgid "Mounting failed" msgstr "Montaje fallido" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" +"Bepasty es una aplicación web que permite subir y compartir archivos " +"grandes. Se puede también pegar y compartir recortes de texto o código " +"fuente. Los textos, imágenes, audios, vídeos y documentos PDF se pueden " +"previsualizar en el navegador. Se puede establecer que los archivos " +"compartidos expiren al cabo de un tiempo." + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" +"Bepasty no usa nombres de usuario para ingresar. Solo usa contraseñas. Para " +"cada contraseña se pueden seleccionar un conjunto de permisos. Una vez " +"creada una contraseña puedes compartirla con otros usuarios, que tendrán los " +"permisos asociados." + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" +"También puedes crear múltiples contraseñas con los mismos privilegios y " +"distribuirlas a gente o grupos. Así podrás revocar más tarde el acceso a una " +"persona o grupo determinados eliminando su contraseña de la lista." + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "Leer un fichero, si se dispone de un enlace web al mismo" + +#: plinth/modules/bepasty/__init__.py:43 +msgid "Create or upload files" +msgstr "Crear o subir archivos" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "Listar todos los archivos y sus enlaces web" + +#: plinth/modules/bepasty/__init__.py:45 +msgid "Delete files" +msgstr "Eliminar archivos" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "Administrar archivos: (des)bloquear archivos" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "Ninguno, se requiere contraseña siempre" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "Listar y leer todos los archivos" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "bepasty" + +#: plinth/modules/bepasty/__init__.py:67 +msgid "File & Snippet Sharing" +msgstr "Compartir archivos y recortes" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "Acceso público (permisos por omisión)" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "Permisos para usuarios anónimos que no han puesto contraseña." + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "Permisos" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +#, fuzzy +#| msgid "Change Password" +msgid "Manage Passwords" +msgstr "Cambiar clave de acceso" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +#, fuzzy +#| msgid "Show password" +msgid "Add password" +msgstr "Mostrar clave de acceso" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +#, fuzzy +#| msgid "No shares currently configured." +msgid "No passwords currently configured." +msgstr "Actualmente no hay comparticiones configuradas." + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "Clave de acceso" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "Crear" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "Eliminar" + +#: plinth/modules/bepasty/views.py:46 +#, fuzzy +#| msgid "admin" +msgid "Admin" +msgstr "admin" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "Configuración actualizada." + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "Ha habido un error en la configuración." + +#: plinth/modules/bepasty/views.py:97 +#, fuzzy +#| msgid "Password updated" +msgid "Password added." +msgstr "Clave actualizada" + +#: plinth/modules/bepasty/views.py:102 +#, fuzzy +#| msgid "Password" +msgid "Add Password" +msgstr "Clave de acceso" + +#: plinth/modules/bepasty/views.py:119 +#, fuzzy +#| msgid "Password updated" +msgid "Password deleted." +msgstr "Clave actualizada" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -636,11 +837,11 @@ msgstr "" "solicitadas por otros dispositivos conectados a su red local. Todavía no es " "compatible con el servicio para compartir la conexión a Internet." -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "Servidor de Nombres de Dominio" @@ -669,6 +870,7 @@ msgstr "Dominios en servicio" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -691,9 +893,9 @@ msgstr "Direcciones IP" msgid "Refresh IP address and domains" msgstr "Actualizar direcciones IP y dominios" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -779,12 +981,13 @@ msgid "Configure" msgstr "Configurar" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "Nombre de dominio" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "Nombre de dominio no válido" @@ -859,7 +1062,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "Mostrar aplicaciones y funciones avanzadas" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "" "Muestra aplicaciones y funciones que requieren mayor conocimiento técnico." @@ -904,78 +1107,6 @@ msgstr "Mostrando aplicaciones y funciones avanzadas" msgid "Hiding advanced apps and features" msgstr "Ocultando aplicaciones y funciones avanzadas" -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" -"Coquelicot es una aplicación web para compartir archivos \"con un click\", " -"enfocada en proteger la privacidad del usuario. Es muy usada para compartir " -"rápidamente un solo archivo. " - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" -"Esta instancia de Coquelicot está accesible públicamente pero requiere una " -"clave para prevenir accesos no autorizados. Puede definir una nueva clave en " -"el formulario que aparece justo después de la instalación. La clave por " -"defecto es \"test\"." - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "Coquelicot" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "Compartir archivos" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "Clave para compartir" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" -"Definir una clave nueva para Coquelicot. Deje este campo en blanco para " -"conservar la clave actual." - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "Tamaño máximo de archivo (en MiB)" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" -"Define el tamaño máximo de los archivos que pueden compartirse con " -"Coquelicot." - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "coquelicot" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "Clave para compartir actualizada" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "Falló la actualización de la clave para compartir" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "Tamaño máximo actualizado" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "Falló al actualizar el tamaño máximo" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -997,11 +1128,11 @@ msgstr "" "servidores como matrix-synapse tienen que configurarse con los detalles que " "se proporcionan aquí." -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "Asistente VoIP" @@ -1037,7 +1168,7 @@ msgstr "" msgid "Date & Time" msgstr "Fecha y hora" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "Hora sincronizada con el servidor NTP" @@ -1100,7 +1231,7 @@ msgstr "Directorio de descarga" msgid "Bittorrent client written in Python/PyGTK" msgstr "Cliente BitTorrent escrito en Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1108,10 +1239,26 @@ msgstr "" "El test de diagnóstico del sistema ejecuta una serie de comprobaciones para " "confirmar que las aplicaciones y servicios están funcionando como se espera." -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "Diagnósticos" +#: plinth/modules/diagnostics/__init__.py:102 +#, fuzzy +#| msgid "Quassel" +msgid "passed" +msgstr "Quassel" + +#: plinth/modules/diagnostics/__init__.py:103 +#, fuzzy +#| msgid "Setup failed." +msgid "failed" +msgstr "Ha fallado la configuración." + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1255,7 +1402,7 @@ msgstr "Cliente de DNS dinámico" msgid "Dynamic Domain Name" msgstr "Nombre de dominio dinámico" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1265,7 +1412,7 @@ msgstr "" "pueden usar en la URL. Para más información consulte las plantillas para " "actualizar URL de los ejemplos incluidos." -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1275,7 +1422,7 @@ msgstr "" "el protocolo GnuDIP o no aparece en el listado deberá usar la URL de " "actualización de su proveedor." -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1283,17 +1430,17 @@ msgstr "" "Por favor no introduzca una URL (\"https://ejemplo.com/\"), solo el nombre " "de su servidor GnuDIP (\"ejemplo.com\")." -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" "Nombre de dominio público que quiere usar para identificar su {box_name}." -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "Elija esta opción si su proveedor usa certificados autofirmados." -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1301,11 +1448,11 @@ msgstr "" "Si selecciona esta opción su nombre de usuaria/o y clave se emplearán en la " "autenticación básica de HTTP." -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "Deje vacío este campo si quiere conservar su clave actual." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1318,70 +1465,76 @@ msgstr "" "número IP real. La URL debería devolver simplemente el número IP del cliente " "(p.e. http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "El nombre de usuaria/o que empleó al crear la cuenta." +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +#, fuzzy +#| msgid "Update URL" +msgid "other update URL" +msgstr "URL de actualización" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "Activar DNS dinámico" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "Tipo de servicio" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "Dirección del servidor GnuDIP" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "Nombre de servidor no válido" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "URL de actualización" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "Aceptar todos los certificados SSL" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "Usar autenticación básica de HTTP" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "Nombre de usuaria/o" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "Clave de acceso" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "Mostrar clave de acceso" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "URL para consultar la IP pública" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" "Por favor indique una URL de actualización o la dirección de un servidor " "GnuDIP" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "Por favor indique un nombre de usuaria/o GnuDIP" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "Por favor indique un nombre de dominio GnuDIP" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "Por favor indique una clave de acceso" @@ -1453,7 +1606,7 @@ msgstr "" msgid "Last update" msgstr "Última actualización" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Acerca de" @@ -1501,12 +1654,12 @@ msgstr "" "target='_blank'>cliente XMPP. Cuando se activa, ejabberd está disponible " "para cualquier usuario con acceso a {box_name}." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Servidor de Chat" @@ -1564,11 +1717,11 @@ msgstr "" "crear nuevas cuentas en servidores XMPP públicos (incluyendo vía Tor), o " "incluso conectarse a su propio servidor para mayor seguridad." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "Gajim" @@ -1583,11 +1736,11 @@ msgstr "" "será parecida a username@%(domainname)s. Puede configurar su dominio " "en la página de sistema Configurar." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "Gestión activa de mensajes activada" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "Gestión activa de mensajes desactivada" @@ -1644,12 +1797,14 @@ msgstr "Servicio/Puerto" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Activado" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Desactivado" @@ -1778,51 +1933,61 @@ msgstr "Gitweb" msgid "Simple Git Hosting" msgstr "Alojamiento simple para Git" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "URL de repositorio no válida." -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "Nombre de repositorio no válido." -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" "Nombre de un nuevo repositorio o URL para importar un repositorio existente." -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "Descripción del repositorio" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "Opcional, para mostrar en Gitweb." -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Nombre del dueño del repositorio" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "Repositorio privado" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "Permitir acceder a este repositorio sólo a usuarios autorizados." -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "Ya existe un repositorio con este nombre." -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "Nombre del repositorio" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "Una cadena alfanumérica que identifica unívocamente un repositorio." +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default Skin" +msgid "Default branch" +msgstr "Tema por defecto" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "Git" @@ -1885,11 +2050,6 @@ msgstr "Repositorio editado." msgid "Edit repository" msgstr "Editar repositorio" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "Ha habido un error en la configuración." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1900,33 +2060,35 @@ msgstr "{name} eliminado." msgid "Could not delete {name}: {error}" msgstr "No se pudo eliminar {name}: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Documentación" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Manual" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" -msgstr "Obtener soporte" +msgstr "Obtener ayuda" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Enviar Comentarios" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "Contribuír" @@ -1975,8 +2137,7 @@ msgid "" "package." msgstr "" "Hay una serie de distintos proyectos trabajando en un futuro de servicios " -"distribuidos. %(box_name)s trata de ofrecerlos juntos y convenientemente " -"empaquetados." +"distribuidos. %(box_name)s trata de ofrecerlos juntos en un cómodo paquete." #: plinth/modules/help/templates/help_about.html:51 #, python-format @@ -1985,7 +2146,7 @@ msgid "" "\"https://wiki.debian.org/FreedomBox\">%(box_name)s Wiki." msgstr "" "Para ampliar información sobre el proyecto %(box_name)s, consulte la Wiki de %(box_name)s." +"\"https://wiki.debian.org/es/FreedomBox\">Wiki de %(box_name)s." #: plinth/modules/help/templates/help_about.html:60 msgid "Learn more »" @@ -2006,22 +2167,6 @@ msgstr "Hay una nueva versión de %(box_name)s disponible." msgid "%(box_name)s is up to date." msgstr "%(box_name)s está actualizado." -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "Aviso de seguridad" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" -"Está Ud. empleando paquetes de Debian backports. Por favor tenga en cuenta " -"que estos paquetes ya no tienen soporte de seguridad por parte de Debian. No " -"obstante, los mantienen contribuyentes de Debian y la comunidad Freedombox a " -"su propio criterio." - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2214,16 +2359,16 @@ msgstr "" "Por favor elimine las contraseñas y cualquier información personal del " "registro antes de enviar el informe de fallos." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "Documentación y Preguntas frecuentes" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "Acerca de {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "Manual de {box_name}" @@ -2256,19 +2401,19 @@ msgstr "" "La primer visita a la interfaz web provista iniciará el proceso de " "configuración." -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "Administrar la aplicación I2P" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "Red anónima" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "Proxy I2P" @@ -2441,11 +2586,11 @@ msgstr "" "seleccione \"Conectar al servidor\" e introduzca el nombre de dominio de su " "{box_name}." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Servidor Gobby" @@ -2571,16 +2716,6 @@ msgstr "No certificado" msgid "Re-obtain" msgstr "Volver a obtener" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Eliminar" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Revocar" @@ -2634,7 +2769,7 @@ msgstr "El certificado para el dominio {domain} ha sido eliminado con éxito" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Falló la eliminación del certificado para el dominio {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2651,17 +2786,22 @@ msgstr "" "funcionar. La federación de los servidores permite que las/os usuarias/os de " "un servidor Matrix contacten con los de otro servidor." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 +#, fuzzy +#| msgid "" +#| "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" "Para comunicarse puede usar los clientes disponibles para móvil, escritorio y la web. Se recomienda " "el cliente Riot." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -2680,8 +2820,8 @@ msgstr "" "prefiere que solo las/los usuarias/os existentes puedan usarla." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "Riot" +msgid "Element" +msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2753,11 +2893,11 @@ msgstr "" "TLS válido. Vaya a Let's Encrypt para " "obtener uno." -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "Registro público activado" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "Registro público desactivado" @@ -2890,12 +3030,12 @@ msgstr "" "defecto (30000). Para acceder al servidor necesitará un Cliente Minetest." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Sandbox de bloques" @@ -2944,7 +3084,7 @@ msgstr "" "ningún tipo." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Dirección" @@ -2953,19 +3093,19 @@ msgstr "Dirección" msgid "Port" msgstr "Puerto" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "Configuración de número máximo de jugadoras/es actualizada" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "Configuración del modo creativo actualizada" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "Configuración PVP actualizada" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "Configuración de daño actualizada" @@ -3273,11 +3413,11 @@ msgstr "" "disponibles Clientes para conectar desde " "sus dispositivos de escritorio o Android." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "Chat de voz" @@ -3305,7 +3445,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "Mumla" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "Clave de administración cambiada con éxito." @@ -3334,6 +3474,12 @@ msgstr "Todos" msgid "All web apps" msgstr "Todas las apps web" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Servicio" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3350,36 +3496,36 @@ msgstr "" "Los dispositivos administrados mediante otros métodos quizá no estén " "disponibles para configurarse aquí." -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Redes" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC en uso sobre IPv{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Tipo de conexión" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Nombre de conexión" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "Interfaz de red" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "Dispositivo de red al que se debería unir esta conexión." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Zona Firewall" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3387,21 +3533,21 @@ msgstr "" "La zona del firewall controlará qué servicios están disponibles en estas " "interfaces. Seleccione Interna solo para redes de confianza." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Externa" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Interna" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "Direccionamiento IPv4" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3413,19 +3559,26 @@ msgstr "" "{box_name} se comporte como un router, configure los clientes de esta red y " "comparta su conexión a Internet." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "Automático (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Compartido" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Manual" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Máscara de red" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3433,21 +3586,21 @@ msgstr "" "Valor opcional. Si no se especifica, se usará una máscara de red por defecto " "basada en la dirección asignada." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Puerta de enlace" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "Valor opcional." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "Servidor DNS" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3455,11 +3608,11 @@ msgstr "" "Valor opcional. Si se especifica y el método de direccionamiento IPv4 es " "\"Automático\", se ignorará el servidor DNS ofrecido por el servidor DHCP." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "Servidor DNS secundario" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3467,11 +3620,11 @@ msgstr "" "Valor opcional. Si se especifica y el método de direccionamiento IPv4 es " "\"Automático\", se ignorará el servidor DNS ofrecido por el servidor DHCP." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "Direccionamiento IPv6" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3480,27 +3633,27 @@ msgstr "" "Los métodos \"automáticos\" harán que {box_name} solicite su configuración a " "la red y actúe como cualquier otro cliente." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Automática" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "Automático, solo DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "Ignorar" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "Prefijo" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "Valor entre 1 y 128." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3508,7 +3661,7 @@ msgstr "" "Valor opcional. Si se especifica y el método de direccionamiento IPv6 es " "\"Automático\", se ignorará el servidor DNS ofrecido por el servidor DHCP." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3516,54 +3669,54 @@ msgstr "" "Valor opcional. Si se especifica y el método de direccionamiento IPv6 es " "\"Automático\", se ignorará el servidor DNS ofrecido por el servidor DHCP." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- seleccionar --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "Nombre visible de la red." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Modo" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Infraestructura" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Punto de acceso" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Banda de frecuencia" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Canal" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3571,11 +3724,11 @@ msgstr "" "Valor opcional. Canal inalámbrico para restringir en la frecuencia " "seleccionada. Valor 0 o en blanco implica selección automática." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3585,11 +3738,11 @@ msgstr "" "a un punto de acceso si su BSSID coincide con el facilitado. Ejemplo: " "00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Modo de autenticación" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3597,20 +3750,20 @@ msgstr "" "Seleccione WPA si la red inalámbrica está protegida y se necesita una clave " "para conectar." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Abierto" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "Especifique cómo su {box_name} está conectada a la red" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3621,7 +3774,7 @@ msgstr "" "Internet a través de su router vía Wi-Fi o cable Ethernet. Esta es la " "configuración doméstica habitual.

" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3634,7 +3787,7 @@ msgstr "" "Fi. {box_name} se conecta directamente a Internet y el resto de sus " "dispositivos acceden a través de su {box_name}.

" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3645,11 +3798,11 @@ msgstr "" "conecta directamente a Internet y no hay más dispositivos en la red local. " "Esta situación puede darse en instalaciones comunitarias o para la nube.

" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "Elija su tipo de conexión a Internet" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3668,16 +3821,8 @@ msgstr "" "pública pero no sabe si cambia cada cierto tiempo, elegir esta opción es lo " "más seguro.

" -#: plinth/modules/networks/forms.py:357 -#, fuzzy, python-brace-format -#| msgid "" -#| "I have a public IP address that does not change overtime (recommended)

This means that devices on the Internet can reach " -#| "you when you are connected to the Internet. Every time you connect to the " -#| "Internet with your Internet Service Provider (ISP), you always get the " -#| "same IP address. This is the most trouble-free setup for many {box_name} " -#| "services but very few ISPs offer this. You may be able to get this " -#| "service from your ISP by making an additional payment.

" +#: plinth/modules/networks/forms.py:360 +#, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

This means that devices on the Internet can reach you " @@ -3687,15 +3832,15 @@ msgid "" "but very few ISPs offer this. You may be able to get this service from your " "ISP by making an additional payment.

" msgstr "" -"Tengo una dirección IP pública que no cambia (recomendada)

Implica que otros dispositivos pueden acceder a su equipo cuando " "éste está conectado a Internet. Cada vez que se conecta a Internet a través " "de su proveedor de servicios (ISP) obtiene la misma dirección IP. Es la " "configuración más estable para muchos servicios de {box_name} pero muy pocos " -"ISP la ofrecen. Puede que su proveedor ofrezca esta posibilidad con un pago " -"adicional.

" +"proveedores la ofrecen. Puede que su proveedor ofrezca esta posibilidad con " +"coste adicional.

" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3715,7 +3860,7 @@ msgstr "" "{box_name} proporciona algunas soluciones pero todas presentan algunas " "limitaciones.

" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" @@ -3723,11 +3868,11 @@ msgstr "" "No sé qué tipo de conexión me da mi proveedor.

Se le " "sugerirán las opciones más conservadoras.

" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "Configuración del router preferida" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3951,13 +4096,15 @@ msgid "" "This interface is not maintained by %(box_name)s. For security, it is " "automatically assigned to the external zone." msgstr "" +"Este interfaz no lo mantiene %(box_name)s. Por seguridad, se asigna " +"automáticamente a la zona externa." #: plinth/modules/networks/templates/connections_create.html:19 msgid "Create Connection" msgstr "Crear conexión" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Eliminar conexión" @@ -4002,7 +4149,7 @@ msgid "Computer" msgstr "Ordenador" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Editar conexión" @@ -4012,13 +4159,13 @@ msgstr "Conexiones" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "Redes Wi-Fi cercanas" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Añadir conexión" @@ -4061,6 +4208,7 @@ msgstr "Saltar este paso" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "Siguiente" @@ -4098,7 +4246,7 @@ msgstr "No sé qué tipo de conexión me da mi proveedor de Internet." #: plinth/modules/networks/templates/internet_connectivity_main.html:41 #: plinth/modules/networks/templates/network_topology_main.html:41 msgid "Update..." -msgstr "Actualización..." +msgstr "Ajustar..." #: plinth/modules/networks/templates/network_topology_content.html:10 #, python-format @@ -4231,73 +4379,73 @@ msgstr "" "Internet el manual de su modelo de router, que le proporcionará las " "instrucciones necesarias sobre cómo hacerlo." -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Conexiones de red" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "No se puede mostrar la conexión: no se encontró." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "Información de la conexión" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "No se puede editar la conexión: no se encontró." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "Este tipo de conexión no está aún soportada." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "Activar conexión {name}." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "Ha fallado la activación de la conexión: no se encontró." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Ha fallado la activación de la conexión {name}: no hay ningún dispositivo " "disponible." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Conexión {name} desactivada." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "Ha fallado la desactivación de la conexión: no se encontró." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "Añadir nueva conexión genérica" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "Añadir nueva conexión Ethernet" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "Añadir nueva conexión PPPoE" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "Añadir nueva conexión Wi-Fi" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "Conexión {name} eliminada." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "Ha fallado la eliminación de la conexión: no se encontró." @@ -4318,16 +4466,16 @@ msgstr "" "forma privada. También puede acceder a Internet a través de su {box_name} " "para añadir protección y anonimato." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Red privada virtual" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4398,11 +4546,11 @@ msgstr "" msgid "Download my profile" msgstr "Descargar mi perfil" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Configuración completada." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Ha fallado la configuración." @@ -4620,6 +4768,19 @@ msgstr "" msgid "Performance" msgstr "Rendimiento" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "Monitorización del sistema" @@ -4724,7 +4885,7 @@ msgstr "Privoxy" msgid "Web Proxy" msgstr "Proxy Web" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Acceso a {url} con proxy {proxy} en tcp {kind}" @@ -4758,11 +4919,11 @@ msgstr "" "quassel-irc.org/downloads\">escritorio y móvil." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "Cliente IRC" @@ -4770,7 +4931,7 @@ msgstr "Cliente IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4785,7 +4946,7 @@ msgstr "" "supported-clients\">aplicación cliente soportada. Cualquier persona " "autenticada en {box_name} puede acceder a Radicale." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4795,12 +4956,12 @@ msgstr "" "de nuevos calendarios y agendas. No soporta añadir eventos o contactos, que " "debe hacerse usando un cliente separado." -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "Calendario y Contactos" @@ -4827,6 +4988,12 @@ msgstr "" "Cualquier usuario dado de alta en {box_name} puede ver o hacer cambios en " "cualquier calendario/agenda." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Punto de acceso" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "DAVx5" @@ -5072,32 +5239,32 @@ msgstr "Nombre de compartición" msgid "Action" msgstr "Acción" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "Compartir en abierto" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "Compartir con grupo" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "Compartir con cuenta" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "Compartición activada." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Error al activar compartición: {error_message}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "Compartición desactivada." -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Error al desactivar compartición: {error_message}" @@ -5140,10 +5307,6 @@ msgstr "" "Seleccione la familia de filtros que se aplicarán por defecto a los " "resultados de su búsqueda." -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "Ninguno" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "Moderado" @@ -5161,11 +5324,6 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Permitir que esta aplicación la use cualquiera que pueda acceder a ella." -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "Configuración actualizada." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "Acceso a consola restringido (recomendada)" @@ -5199,8 +5357,46 @@ msgstr "" msgid "Show security report" msgstr "Mostrar informe de seguridad" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "Actualizaciones funcionales frecuentes" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +#, fuzzy +#| msgid "Frequent feature updates are enabled." +msgid "Frequent feature updates are activated." +msgstr "Las actualizaciones funcionales frecuentes están habilitadas." + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, fuzzy, python-format +#| msgid "" +#| "This will allow a very limited set of software, including FreedomBox " +#| "service, to be updated to receive newer features regularly instead of " +#| "once every 2 years or so. Note that packages with frequent feature " +#| "updates do not have support from Debian Security Team. They are instead " +#| "maintained by contributors to Debian and the FreedomBox community." +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" +"Esto permitirá que un conjunto limitado de software, incluído el Servicio " +"FreedomBox se actualize para recibir nuevas funcionalidades regularmente en " +"vez de cada 2 años más o menos. Sepa que los paquetes con actualizaciones " +"funcionales frequentes no tienen soporte del Equipo de Seguridad de Debian, " +"sino de contribuyentes a Debian y de la comunidad de FreedomBox." + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "Informe de Seguridad" @@ -5277,12 +5473,12 @@ msgstr "No" msgid "Not running" msgstr "No se está ejecutando" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Error al definir el acceso restringido: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "Configuración de seguridad actualizada" @@ -5515,7 +5711,7 @@ msgstr "" #: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" -msgstr "Almacén de instantáneas" +msgstr "Instantáneas" #: plinth/modules/snapshot/forms.py:12 msgid "Free Disk Space to Maintain" @@ -5590,9 +5786,13 @@ msgid "Yearly Snapshots Limit" msgstr "Límite anual de instantáneas" #: plinth/modules/snapshot/forms.py:49 +#, fuzzy +#| msgid "" +#| "Keep a maximum of this many yearly snapshots. The default value is 0 " +#| "(disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" "Conservar el máximo número de instantáneas anuales. El valor predeterminado " "es 0 (desactivado)." @@ -5678,7 +5878,7 @@ msgstr "Instantánea creada." #: plinth/modules/snapshot/views.py:144 msgid "Storage snapshots configuration updated" -msgstr "Configuración de almacenamiento de instantáneas actualizada" +msgstr "Configuración de instantáneas actualizada" #: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:60 #, python-brace-format @@ -5719,7 +5919,7 @@ msgstr "" "realizar tareas de administración, copiar archivos o ejecutar otros " "servicios a través de esas conexiones." -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "Servidor de intérprete de órdenes seguro (SSH)" @@ -5765,7 +5965,7 @@ msgstr "Acceso SSH con clave desactivado." msgid "SSH authentication with password enabled." msgstr "Acceso SSH con clave activado." -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "Inicio de sesión único" @@ -5784,105 +5984,105 @@ msgstr "" "{box_name}. Puede ver el medio de almacenamiento que está usando, montar y " "desmontar medios extraíbles, ampliar la partición raíz, etc." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" -msgstr "Almacén" +msgstr "Almacenamiento" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "Falló la operación." -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "Se ha cancelado la operación." -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "El dispositivo ya se está desmontando." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "No se soporta esta operación por falta de un driver o herramienta." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "La operación agotó el tiempo." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "La operación podría activar un disco que está en estado de reposo." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "Tratando de desmontar un dispositivo ocupado." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "Ya se ha cancelado la operación." -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "No tiene autorización para la operación solicitada." -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "El dispositivo ya está montado." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "El dispositivo no está montado." -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "La operación solicitada no está permitida." -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "El dispositivo está ya montado por otro usuario." -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Poco espacio en la partición del sistema: {percent_used}% usado, " "{free_space} libre." -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "Poco espacio en disco" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "Fallo de disco inminente" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6071,11 +6271,11 @@ msgstr "" "defecto. Se pueden añadir presentadores adicionales, los cuales presentarán " "este nodo a los otros nodos de almacenamiento." -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "Almacén de archivos distribuido" @@ -6118,7 +6318,7 @@ msgstr "Presentadores conectados" msgid "Remove" msgstr "Eliminar" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6132,40 +6332,40 @@ msgstr "" "download/download-easy.html.en\">Navegador Tor para tener la mejor " "protección cuando navega por la red." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "Servicio Tor Onion" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "Proxy Socks para Tor" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "Puente de retransmisión Tor" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "Puerto de servidor Tor disponible" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Transporte Obfs3 registrado" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Transporte Obfs4 registrado" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Acceso a URL {url} sobre tcp {kind} vía Tor" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Confirmar uso de Tor en {url} sobre tcp {kind}" @@ -6319,7 +6519,7 @@ msgstr "" "Un puerto SOCKS de Tor está disponible en su %(box_name)s en el puerto TCP " "9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Configuración sin cambio" @@ -6380,30 +6580,30 @@ msgstr "Lector de noticias" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Bifurcación)" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" "Buscar y aplicar las últimas actualizaciones del software y de seguridad." -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " "to be unavailable briefly. If system reboot is deemed necessary, it is done " "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -"Las actualizaciones se ejecutan a las 06:00 h. cada día, de acuerdo con la " -"zona local de tiempo. Puede configurar su zona de tiempo con la aplicación " +"Las actualizaciones se ejecutan a las 06:00 h. cada día, de acuerdo con el " +"huso horario local. Puede configurar su huso horario con la aplicación " "\"Fecha y Hora\". Las aplicaciones se reinician después de cada " "actualización, lo que provoca que estén inaccesibles durante un breve " "tiempo. Si se decide retrasar el reinicio del sistema, éste se hará de forma " "automática a las 02:00 h." -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "Actualización" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" msgstr "FreedomBox actualizado" @@ -6416,6 +6616,32 @@ msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" "Si está activado, FreedomBox se actualiza automáticamente una vez al día." +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "Activar las actualizaciones funcionales frecuentes (recomendado)" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +#, fuzzy +#| msgid "" +#| "Warning! Once frequent feature updates are activated, " +#| "they cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" +"¡Advertencia! Una vez que se activan las actualizaciones " +"funcionales frecuentes no se pueden desactivar. Antes de continuar quizá " +"quiera Ud. hacer una copia de respaldo usando Instantáneas ." + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -6435,61 +6661,90 @@ msgstr "" msgid "Dismiss" msgstr "Descartar" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" +"Se pueden activar las actualizaciones funcionales frecuentes. Se recomienda " +"activarlas." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +#, fuzzy +#| msgid "" +#| "Frequent feature updates can be activated. Activating them is recommended." +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" +"Se pueden activar las actualizaciones funcionales frecuentes. Se recomienda " +"activarlas." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" +"¡Advertencia! Una vez que se activan las actualizaciones " +"funcionales frecuentes no se pueden desactivar. Antes de continuar quizá " +"quiera Ud. hacer una copia de respaldo usando Instantáneas ." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" msgstr "Actualización manual" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "Actualizando..." -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "Actualizar ahora" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 -#, fuzzy -#| msgid "" -#| "This may take a long time to complete. During an update, " -#| "you cannot install apps. Also, this web interface may be temporarily " -#| "unavailable and show an error. In that case, refresh the page to continue." +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -"Esto puede tardar un buen rato en finalizar. Durante una " +"Esto puede tardar un buen rato en finalizar.. Durante una " "actualización no puede instalar aplicaciones. Además, esta interfaz web " "puede estar temporalmente inaccesible y mostrar un error. En ese caso, " "vuelva a cargar la página para continuar." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 -#, fuzzy -#| msgid "Toggle recent update logs" +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" -msgstr "Alternar los registros de las actualizaciones recientes" +msgstr "Mostrar los registros de las actualizaciones recientes" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "Error al configurar las actualizaciones desatendidas: {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "Actualizaciones automáticas activadas" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "Actualizaciones automáticas desactivadas" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "Proceso de actualización iniciado." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "No se ha podido iniciar la actualización." +#: plinth/modules/upgrades/views.py:91 +#, fuzzy +#| msgid "Frequent feature updates are enabled." +msgid "Frequent feature updates activated." +msgstr "Las actualizaciones funcionales frecuentes están habilitadas." + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6521,7 +6776,7 @@ msgstr "Usuarias/os y grupos" msgid "Access to all services and system settings" msgstr "Acceso a todos los servicios y configuraciones del sistema" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Comprobar la entrada LDAP \"{search_item}\"" @@ -6534,16 +6789,12 @@ msgstr "El nombre de usuaria/o está en uso o reservado." msgid "Enter a valid username." msgstr "Indique un nombre de usuario válido." -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "Obligatorio. Hasta 150 caracteres. Solo letras, números y @/./-/_ ." -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "Permisos" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6558,20 +6809,20 @@ msgstr "" "servicios, también podrán acceder al sistema por SSH con privilegios de " "administración (sudo)." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "Ha fallado la creación de usuaria/o LDAP." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Ha fallado añadir usuaria/o nuevo al grupo {group}." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Claves de SSH autorizadas" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6581,43 +6832,43 @@ msgstr "" "de una clave. Puede introducir más de una clave, cada una en una línea. Las " "líneas en blanco y las que empiecen por # se ignorarán." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "Ha fallado renombrar al o la usuaria LDAP." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "Ha fallado la eliminación del o de la usuaria del grupo." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "Ha fallado añadir al o la usuaria al grupo." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "No es posible configurar las claves SSH." -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "Ha fallado al cambiar el estado del usuario." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "No se puede eliminar la única cuenta de administración del sistema." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "Ha fallado cambiar la clave del o de la usuaria LDAP." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Ha fallado añadir usuaria/o nueva/o al grupo admin." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "Falló al restringir el acceso a la consola." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "Creada cuenta de usuaria/o, ya está usted en el sistema" @@ -6754,7 +7005,7 @@ msgstr "" "se viaja. Cuando se conecta a una red Wi-Fi pública se puede asegurar el " "tráfico a través de {box_name}." -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -6892,7 +7143,7 @@ msgid "Add a new peer" msgstr "Añadir nuevo par" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "Añadir cliente autorizado" @@ -6919,7 +7170,7 @@ msgid "Add a new server" msgstr "Añadir nuevo servidor" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Añadir conexión a servidor" @@ -7012,59 +7263,59 @@ msgstr "Clave pública para este dispositivo:" msgid "IP address of this machine:" msgstr "Dirección IP para este dispositivo:" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "Nuevo cliente añadido." -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "Ya existe un cliente con esa clave pública" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "Cliente autorizado" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "Cliente actualizado." -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "Modificar cliente" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "Eliminar cliente autorizado" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "Cliente eliminado." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "Cliente no encontrado" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "Nuevo servidor añadido." -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "Conexión al servidor" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "Servidor actualizado." -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "Cambiar conexión al servidor" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "Eliminar conexión al servidor" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "Servidor eliminado." @@ -7076,23 +7327,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Genérica" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "Error durante la instalación" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "instalando" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "descargando" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "cambio de medio" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "archivo de configuración: {file}" @@ -7358,17 +7609,57 @@ msgstr "Notificaciones" msgid "Port Forwarding" msgstr "Redirección de Puertos" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Puede que quiera comprobar la configuración de " +"red y modificarla si es necesario." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, fuzzy, python-format +#| msgid "" +#| "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 " +#| "%(service_name)s:" +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" msgstr "" "Si tu FreedomBox está detrás de un router, deberás configurar la redirección " "de puertos de tu router. Deberás redireccionar los siguientes puertos para " "%(service_name)s:" +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "protocolo" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "Configuración de %(box_name)s" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "¿Instalar esta aplicación?" @@ -7415,6 +7706,107 @@ msgstr "%(percentage)s%% completado" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Backports activated." +#~ msgstr "Backports habilitado." + +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot es una aplicación web para compartir archivos \"con un click" +#~ "\", enfocada en proteger la privacidad del usuario. Es muy usada para " +#~ "compartir rápidamente un solo archivo. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Esta instancia de Coquelicot está accesible públicamente pero requiere " +#~ "una clave para prevenir accesos no autorizados. Puede definir una nueva " +#~ "clave en el formulario que aparece justo después de la instalación. La " +#~ "clave por defecto es \"test\"." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "Clave para compartir" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Definir una clave nueva para Coquelicot. Deje este campo en blanco para " +#~ "conservar la clave actual." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Tamaño máximo de archivo (en MiB)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Define el tamaño máximo de los archivos que pueden compartirse con " +#~ "Coquelicot." + +#~ msgid "coquelicot" +#~ msgstr "coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Clave para compartir actualizada" + +#~ msgid "Failed to update upload password" +#~ msgstr "Falló la actualización de la clave para compartir" + +#~ msgid "Maximum file size updated" +#~ msgstr "Tamaño máximo actualizado" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "Falló al actualizar el tamaño máximo" + +#~ msgid "Riot" +#~ msgstr "Riot" + +#~ msgid "Security Notice" +#~ msgstr "Aviso de seguridad" + +#~ msgid "" +#~ "Backports are enabled. Please note that packages from the backports " +#~ "repository do not have security support from Debian. However, they are " +#~ "maintained on a best-effort basis by contributors in Debian and " +#~ "FreedomBox community." +#~ msgstr "" +#~ "Backports está habilitado. Por favor tenga en cuenta que los paquetes del " +#~ "repositorio Backports ya no tienen soporte de seguridad por parte de " +#~ "Debian. No obstante, contribuyentes de Debian y la comunidad Freedombox " +#~ "los mantienen lo mejor que pueden." + +#~ msgid "Backports" +#~ msgstr "Backports" + +#~ msgid "" +#~ "Backports can be activated. This will allow a limited set of software, " +#~ "including FreedomBox service, to be upgraded to newer versions from " +#~ "Debian %(dist)s-backports repository." +#~ msgstr "" +#~ "Se puede activar Backports. Esto permitirá a un conjunto limitado de " +#~ "software, que incluye al servicio FreedomBox, actualizarse a nuevas " +#~ "versiones del repositorio Debian %(dist)s-backports." + +#~ msgid "" +#~ "Please note that backports packages do not have security support from " +#~ "Debian. However, they are maintained on a best-effort basis by " +#~ "contributors in Debian and FreedomBox community." +#~ msgstr "" +#~ "Por favor tenga en cuenta que los paquetes de Backports ya no tienen " +#~ "soporte de seguridad por parte de Debian. No obstante, contribuyentes de " +#~ "Debian y la comunidad Freedombox los mantienen lo mejor que pueden." + +#~ msgid "Activate backports" +#~ msgstr "Activar Backports" + #~ msgid "Restoring" #~ msgstr "Restaurar" @@ -7727,9 +8119,6 @@ msgstr "Gujarati" #~ msgid "Manage" #~ msgstr "Gestionar" -#~ msgid "Create" -#~ msgstr "Crear" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "El cupón que recibió con su {box_name} Danube Edition" @@ -8070,9 +8459,6 @@ msgstr "Gujarati" #~ msgid "Location to upload the archive to" #~ msgstr "Ubicación para subir el archivo" -#~ msgid "Backup archives" -#~ msgstr "Copias de seguridad" - #~ msgid "" #~ "No apps that support backup are currently installed. Backup can be " #~ "created after an app supporting backups is installed." @@ -8272,9 +8658,6 @@ msgstr "Gujarati" #~ msgid "BitTorrent" #~ msgstr "BitTorrent" -#~ msgid "admin" -#~ msgstr "admin" - #~ msgid "wiki" #~ msgstr "wiki" diff --git a/plinth/locale/fa/LC_MESSAGES/django.po b/plinth/locale/fa/LC_MESSAGES/django.po index f3bafc2ba..fe8beb5ca 100644 --- a/plinth/locale/fa/LC_MESSAGES/django.po +++ b/plinth/locale/fa/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2016-08-12 15:51+0000\n" "Last-Translator: Masoud Abkenar \n" "Language-Team: Persian user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 #, fuzzy #| msgid "Web Server" msgid "Chat Server" @@ -1564,11 +1704,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1580,11 +1720,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1643,12 +1783,14 @@ msgstr "سرویس/پورت" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "فعال" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "غیرفعال" @@ -1759,58 +1901,68 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository URL." msgstr "نام میزبان معتبر نیست" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "نام میزبان معتبر نیست" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 #, fuzzy #| msgid "Create Connection" msgid "Private repository" msgstr "ساختن اتصال" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 #, fuzzy #| msgid "Create Connection" msgid "Name of the repository" msgstr "ساختن اتصال" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default" +msgid "Default branch" +msgstr "پیش‌فرض" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1888,11 +2040,6 @@ msgstr "" msgid "Edit repository" msgstr "ساختن اتصال" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1903,33 +2050,35 @@ msgstr "{name} پاک شد." msgid "Could not delete {name}: {error}" msgstr "نشد که {name} پاک شود: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "راهنما" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "کتاب راهنما" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -2011,20 +2160,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "راه‌اندازی %(box_name)s" -#: plinth/modules/help/templates/help_about.html:79 -#, fuzzy -#| msgid "Security" -msgid "Security Notice" -msgstr "امنیت" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2186,16 +2321,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "راهنما و پرسش‌های رایج" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "دربارهٔ {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "کتاب راهنمای {box_name}" @@ -2226,21 +2361,21 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 #, fuzzy msgid "Manage I2P application" msgstr "فعال‌سازی برنامه" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 #, fuzzy msgid "Anonymity Network" msgstr "رفتن به تنظیمات شبکه" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2407,11 +2542,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -2558,16 +2693,6 @@ msgstr "بدون گواهی دیجیتال" msgid "Re-obtain" msgstr "بازپس‌گیری" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "پاک‌کردن" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "باطل کردن" @@ -2620,7 +2745,7 @@ msgstr "گواهی دامنهٔ {domain} با موفقیت باطل شد" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "باطل‌کردن گواهی دامنهٔ {domain} شکست خورد: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2630,14 +2755,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2654,7 +2779,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2707,11 +2832,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 #, fuzzy msgid "Public registration disabled" msgstr "برنامه نصب شد." @@ -2836,12 +2961,12 @@ msgstr "" "برای اتصال به سرور به یک برنامهٔ ماین‌تست نیاز است." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 #, fuzzy msgid "Block Sandbox" msgstr "بازی مکعب‌ها (Minetest)" @@ -2888,7 +3013,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "نشانی" @@ -2897,25 +3022,25 @@ msgstr "نشانی" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "پیکربندی به‌روز شد" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" @@ -3207,11 +3332,11 @@ msgstr "" "\"http://mumble.info\">نرم‌افزارهایی برای اتصال به سرور مامبل برای " "کامپیوتر رومیزی و دستگاه‌های اندروید در دسترس است." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" @@ -3241,7 +3366,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -3266,6 +3391,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "سرویس" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3278,38 +3409,38 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "شبکه‌ها" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "در حال استفاده از DNSSEC روی IPv{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "نوع اتصال" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "نام اتصال" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 #, fuzzy #| msgid "Interface" msgid "Network Interface" msgstr "واسط" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "دستگاه شبکه‌ای که این اتصال باید به آن مربوط شود." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "ناحیهٔ فایروال" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3317,22 +3448,22 @@ msgstr "" "ناحیهٔ فایروال مشخص می‌کند که چه سرویس‌هایی روی این درگاه‌ها در دسترس باشند. " "گزینهٔ «داخلی» را تنها برای شبکه‌های مورد اعتماد انتخاب کنید." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 #, fuzzy msgid "IPv4 Addressing Method" msgstr "روش نشانی‌دهی IPv4" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3343,40 +3474,47 @@ msgstr "" "شبکه شمرده می‌شود. در روش «اشتراکی» {box_name} به عنوان روتر عمل می‌کند، " "کاربران شبکه را تنظیم می‌کند و اتصال اینترنت خود را با آن‌ها به اشتراک می‌گذارد." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "خودکار (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "مشترک" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "کتاب راهنما" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "ماسک شبکه" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" "اختیاری. اگر خالی بماند، یک ماسک شبکهٔ پیش‌فرض بر اساس نشانی به‌کار خواهد رفت." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "دروازه" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "اختیاری." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "دی‌ان‌اس" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3384,11 +3522,11 @@ msgstr "" "اختیاری. اگر وارد شود و شیوهٔ نشانی‌دهی آی‌پی نسخهٔ ۴ روی «خودکار» تنظیم شده " "باشد، سرورهای دی‌ان‌اس که سرور DHCP در اختیار می‌گذارد نادیده گرفته خواهند شد." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "دی‌ان‌اس دوم" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3396,12 +3534,12 @@ msgstr "" "اختیاری. اگر وارد شود و شیوهٔ نشانی‌دهی آی‌پی نسخهٔ ۴ روی «خودکار» تنظیم شده " "باشد، سرورهای دی‌ان‌اس که سرور DHCP در اختیار می‌گذارد نادیده گرفته خواهند شد." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 #, fuzzy msgid "IPv6 Addressing Method" msgstr "روش نشانی‌دهی IPv4" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, fuzzy, python-brace-format #| msgid "" #| "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3416,29 +3554,29 @@ msgstr "" "شبکه شمرده می‌شود. در روش «اشتراکی» {box_name} به عنوان روتر عمل می‌کند، " "کاربران شبکه را تنظیم می‌کند و اتصال اینترنت خود را با آن‌ها به اشتراک می‌گذارد." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "خودکار" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 #, fuzzy #| msgid "Automatic (DHCP)" msgid "Automatic, DHCP only" msgstr "خودکار (DHCP)" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 addressing method is " @@ -3450,7 +3588,7 @@ msgstr "" "اختیاری. اگر وارد شود و شیوهٔ نشانی‌دهی آی‌پی نسخهٔ ۴ روی «خودکار» تنظیم شده " "باشد، سرورهای دی‌ان‌اس که سرور DHCP در اختیار می‌گذارد نادیده گرفته خواهند شد." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 Addressing Method is " @@ -3462,55 +3600,55 @@ msgstr "" "اختیاری. اگر وارد شود و شیوهٔ نشانی‌دهی آی‌پی نسخهٔ ۴ روی «خودکار» تنظیم شده " "باشد، سرورهای دی‌ان‌اس که سرور DHCP در اختیار می‌گذارد نادیده گرفته خواهند شد." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- برگزینید --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 #, fuzzy msgid "SSID" msgstr "شناسه" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "نام قابل رویت شبکه." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "حالت" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "سازمانی" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "نقطهٔ دسترسی" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "موردی" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "باند بسامد" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (۵ گیگاهرتز)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (۲٫۴ گیگاهرتز)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "کانال" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3518,11 +3656,11 @@ msgstr "" "اختیاری. کانال بی‌سیم برای محدودکردن باند بسامدی. خالی گذاشتن یا مقدار صفر به " "معنی گزینش خودکار است." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "شناسهٔ اصلی (BSSID)" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3531,32 +3669,32 @@ msgstr "" "اختیاری. شناسهٔ یکتا برای نقطهٔ دسترسی. اتصال تنها وقتی برقرار می‌شود که شناسهٔ " "اصلی (BSSID) نقطهٔ دسترسی مطابق مقدار واردشده باشد." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "حالت تأیید هویت" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "اگر شبکهٔ بی‌سیم امن است و از کاربران رمز می‌خواهد، WPA را برگزینید." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 #, fuzzy msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "باز" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, fuzzy, python-brace-format #| msgid "Direct connection to the Internet." msgid "Specify how your {box_name} is connected to your network" msgstr "اتصال مستقیم به اینترنت." -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3564,7 +3702,7 @@ msgid "" "typical home setup.

" msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3573,7 +3711,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

" msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3581,11 +3719,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

" msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3596,7 +3734,7 @@ msgid "" "over time or not, it is safer to choose this option.

" msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3620,19 +3758,19 @@ msgid "" "workaround solutions but each solution has some limitations.

" msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "Current Network Configuration" msgid "Preferred router configuration" msgstr "پیکربندی فعلی شبکه" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3846,7 +3984,7 @@ msgid "Create Connection" msgstr "ساختن اتصال" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "پاک‌کردن اتصال" @@ -3892,7 +4030,7 @@ msgid "Computer" msgstr "کامپیوتر" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "ویرایش اتصال" @@ -3904,13 +4042,13 @@ msgstr "اتصال" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "شبکه‌های بی‌سیم در نزدیکی" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "افزودن اتصال" @@ -3951,6 +4089,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -4093,71 +4232,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "اتصال‌های شبکه" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "نمی‌توان اتصال را نشان داد: اتصالی پیدا نشد." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "اطلاعات اتصال" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "نمی‌توان اتصال را ویراست: اتصالی پیدا نشد." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "از این نوع اتصال هنوز پشتیبانی نمی‌شود." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "اتصال {name} فعال شد." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "فعال‌سازی اتصال شکست خورد: اتصالی پیدا نشد." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "فعال‌سازی اتصال {name} شکست خورد: دستگاه مناسبی موجود نیست." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "اتصال {name} غیرفعال شد." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "غیرفعال‌سازی اتصال شکست خورد: اتصالی پیدا نشد." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "افزودن یک اتصال عام تازه" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "افزودن اتصال اترنت تازه" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "افزودن اتصال PPPoE تازه" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "افزودن اتصال Wi-Fi تازه" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "اتصال {name} پاک شد." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "پاک‌کردن اتصال شکست خورد: اتصال پیدا نشد." @@ -4172,18 +4311,18 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 #, fuzzy #| msgid "Open" msgid "OpenVPN" msgstr "باز" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4239,11 +4378,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -4440,6 +4579,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4525,7 +4677,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4549,11 +4701,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4561,7 +4713,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4571,19 +4723,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4605,6 +4757,12 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "نقطهٔ دسترسی" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4822,43 +4980,43 @@ msgstr "مشترک" msgid "Action" msgstr "کنش‌ها" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 #, fuzzy #| msgid "Shared" msgid "Open Share" msgstr "مشترک" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 #, fuzzy #| msgid "Shared" msgid "Group Share" msgstr "مشترک" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Shared" msgid "Home Share" msgstr "مشترک" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} پاک شد." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "خطا هنگام نصب برنامه: {error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "مشترک" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4898,10 +5056,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 #, fuzzy #| msgid "Mode" @@ -4920,11 +5074,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4954,8 +5103,33 @@ msgstr "" msgid "Show security report" msgstr "امنیت" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -5030,13 +5204,13 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" msgid "Error setting restricted access: {exception}" msgstr "خطا در هنگام تنظیم منطقهٔ زمانی: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 #, fuzzy #| msgid "General Configuration" msgid "Updated security configuration" @@ -5337,8 +5511,8 @@ msgstr "پاک‌کردن %(name)s" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5461,7 +5635,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5508,7 +5682,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -5524,109 +5698,109 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, fuzzy, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size} بایت" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, fuzzy, python-brace-format #| msgid "{disk_size} TiB" msgid "{disk_size:.1f} TiB" msgstr "{disk_size} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 #, fuzzy #| msgid "The requested domain is already registered." msgid "The device is already mounted." msgstr "دامنهٔ درخواستی از قبل ثبت شده است." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5797,11 +5971,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5844,7 +6018,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5853,40 +6027,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6014,7 +6188,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -6065,11 +6239,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6077,11 +6251,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy msgid "FreedomBox Updated" msgstr "FreedomBox" @@ -6095,6 +6269,23 @@ msgstr "فعال‌سازی برنامه" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s Setup" @@ -6113,54 +6304,77 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 #, fuzzy #| msgid "Last update" -msgid "Manual update" +msgid "Manual Update" msgstr "آخرین به‌روزرسانی" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 #, fuzzy #| msgid "Update URL" msgid "Update now" msgstr "نشانی به‌روزرسانی" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6184,7 +6398,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6199,16 +6413,12 @@ msgstr "" msgid "Enter a valid username." msgstr "نام کاربری معتبر نیست" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6217,65 +6427,65 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "ساختن کاربر LDAP شکست خورد." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 #, fuzzy #| msgid "Failed to add new user to admin group." msgid "Failed to change user status." msgstr "افزودن کاربر به گروه مدیران شکست خورد." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "افزودن کاربر به گروه مدیران شکست خورد." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "حساب کاربری ساخته شد، شما الان وارد سیستم هستید" @@ -6407,7 +6617,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6537,7 +6747,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6565,7 +6775,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" msgid "Add Connection to Server" @@ -6664,75 +6874,75 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 #, fuzzy msgid "Allowed Client" msgstr "برنامهٔ DNS متغیر (Dynamic DNS Client)" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "به‌روزرسانی وضعیت" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy msgid "Modify Client" msgstr "برنامهٔ DNS متغیر (Dynamic DNS Client)" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 #, fuzzy #| msgid "Delete" msgid "Delete Allowed Client" msgstr "پاک‌کردن" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "{name} deleted." msgid "Client deleted." msgstr "{name} پاک شد." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "نوع اتصال" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "به‌روزرسانی وضعیت" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Edit Connection" msgid "Modify Connection to Server" msgstr "ویرایش اتصال" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "پاک‌کردن اتصال" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "{name} deleted." msgid "Server deleted." @@ -6746,23 +6956,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7014,14 +7224,43 @@ msgstr "بدون گواهی دیجیتال" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." msgstr "" +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "راه‌اندازی %(box_name)s" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "" @@ -7066,6 +7305,36 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Create" +#~ msgid "Backports activated." +#~ msgstr "ساختن" + +#, fuzzy +#~| msgid "Password" +#~ msgid "Upload Password" +#~ msgstr "رمز" + +#, fuzzy +#~| msgid "Password" +#~ msgid "Upload password updated" +#~ msgstr "رمز" + +#, fuzzy +#~| msgid "Configuration updated" +#~ msgid "Maximum file size updated" +#~ msgstr "پیکربندی به‌روز شد" + +#, fuzzy +#~| msgid "Security" +#~ msgid "Security Notice" +#~ msgstr "امنیت" + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "فعال‌سازی" + #~ msgid "" #~ "This interface is not maintained by %(box_name)s. Its security status is " #~ "unknown to %(box_name)s. Many %(box_name)s services may not be available " @@ -7154,9 +7423,6 @@ msgstr "" #~ msgid "Manage" #~ msgstr "مدیریت" -#~ msgid "Create" -#~ msgstr "ساختن" - #, fuzzy #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "کوپنی که همراه با {box_name} Danube Edition خود تحویل گرفتید." @@ -7312,11 +7578,6 @@ msgstr "" #~ msgid "Disk" #~ msgstr "دیسک‌ها" -#, fuzzy -#~| msgid "Create" -#~ msgid "Backup archives" -#~ msgstr "ساختن" - #, fuzzy #~| msgid "Create" #~ msgid "Create archive" diff --git a/plinth/locale/fake/LC_MESSAGES/django.po b/plinth/locale/fake/LC_MESSAGES/django.po index 32b2509a0..6006fe730 100644 --- a/plinth/locale/fake/LC_MESSAGES/django.po +++ b/plinth/locale/fake/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Plinth 0.6\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2016-01-31 22:24+0530\n" "Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Plinth Developers XMPP CLIENT." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 #, fuzzy #| msgid "Web Server" msgid "Chat Server" @@ -1667,11 +1815,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1686,11 +1834,11 @@ msgstr "" "LIKE USERNAME@%(domainname)s. YOU CAN SETUP YOUR DOMAIN ON THE SYSTEM " "CONFIGURE PAGE." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1755,12 +1903,14 @@ msgstr "SERVICE/PORT" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "ENABLED" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "DISABLED" @@ -1873,62 +2023,72 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository URL." msgstr "INVALID HOSTNAME" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "INVALID HOSTNAME" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "packages not found" msgid "Repository's owner name" msgstr "PACKAGES NOT FOUND" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 #, fuzzy #| msgid "Create User" msgid "Private repository" msgstr "CREATE USER" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 #, fuzzy #| msgid "This service already exists" msgid "A repository with this name already exists." msgstr "THIS SERVICE ALREADY EXISTS" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 #, fuzzy #| msgid "Create User" msgid "Name of the repository" msgstr "CREATE USER" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default" +msgid "Default branch" +msgstr "DEFAULT" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -2010,11 +2170,6 @@ msgstr "PACKAGES NOT FOUND" msgid "Edit repository" msgstr "CREATE USER" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "AN ERROR OCCURRED DURING CONFIGURATION." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -2025,33 +2180,35 @@ msgstr "{name} DELETED." msgid "Could not delete {name}: {error}" msgstr "COULD NOT DELETE {name}: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "DOCUMENTATION" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "MANUAL" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -2132,20 +2289,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "%(box_name)s SETUP" -#: plinth/modules/help/templates/help_about.html:79 -#, fuzzy -#| msgid "Security" -msgid "Security Notice" -msgstr "SECURITY" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2315,16 +2458,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "DOCUMENTATION AND FAQ" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "ABOUT {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} MANUAL" @@ -2355,23 +2498,23 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 #, fuzzy #| msgid "Applications" msgid "Manage I2P application" msgstr "APPLICATIONS" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "TOR ANONYMITY NETWORK" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "I2P Proxy" @@ -2531,11 +2674,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -2685,16 +2828,6 @@ msgstr "NO CERTFICATE" msgid "Re-obtain" msgstr "RE-OBTAIN" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "DELETE" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "REVOKE" @@ -2747,7 +2880,7 @@ msgstr "CERTIFICATE SUCCESSFULLY REVOKED FOR DOMAIN {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "FAILED TO REVOKE CERTIFICATE FOR DOMAIN {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2757,14 +2890,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 #, fuzzy #| msgid "Chat Server (XMPP)" msgid "Matrix Synapse" @@ -2784,7 +2917,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2844,13 +2977,13 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 #, fuzzy #| msgid "Applications" msgid "Public registration enabled" msgstr "APPLICATIONS" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 #, fuzzy #| msgid "Applications" msgid "Public registration disabled" @@ -2981,12 +3114,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 #, fuzzy #| msgid "Blocked" msgid "Block Sandbox" @@ -3035,7 +3168,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "ADDRESS" @@ -3044,25 +3177,25 @@ msgstr "ADDRESS" msgid "Port" msgstr "PORT" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "CONFIGURATION UPDATED" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" @@ -3406,11 +3539,11 @@ msgstr "" "href=\"http://mumble.info\">CLIENTS TO CONNECT TO MUMBLE FROM YOUR " "DESKTOP AND ANDROID DEVICES ARE AVAILABLE." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" @@ -3440,7 +3573,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3467,6 +3600,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "SERVICE" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3479,38 +3618,38 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "NETWORKS" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "USING DNSSEC ON IPV{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "CONNECTION TYPE" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "CONNECTION NAME" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 #, fuzzy #| msgid "Interface" msgid "Network Interface" msgstr "INTERFACE" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "THE NETWORK DEVICE THAT THIS CONNECTION SHOULD BE BOUND TO." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "FIREWALL ZONE" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3518,21 +3657,21 @@ msgstr "" "THE FIREWALL ZONE WILL CONTROL WHICH SERVICES ARE AVAILABLE OVER THIS " "INTERFACES. SELECT INTERNAL ONLY FOR TRUSTED NETWORKS." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "EXTERNAL" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "INTERNAL" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "IPV4 ADDRESSING METHOD" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3540,19 +3679,26 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "MANUAL" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "NETMASK" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3560,21 +3706,21 @@ msgstr "" "OPTIONAL VALUE. IF LEFT BLANK, A DEFAULT NETMASK BASED ON THE ADDRESS WILL " "BE USED." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "GATEWAY" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "OPTIONAL VALUE." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS SERVER" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3582,11 +3728,11 @@ msgstr "" "OPTIONAL VALUE. IF THIS VALUE IS GIVEN AND IPV4 ADDRESSING METHOD IS " "\"AUTOMATIC\", THE DNS SERVERS PROVIDED BY A DHCP SERVER WILL BE IGNORED." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "SECOND DNS SERVER" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3594,44 +3740,44 @@ msgstr "" "OPTIONAL VALUE. IF THIS VALUE IS GIVEN AND IPV4 ADDRESSING METHOD IS " "\"AUTOMATIC\", THE DNS SERVERS PROVIDED BY A DHCP SERVER WILL BE IGNORED." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 #, fuzzy #| msgid "IPv4 Addressing Method" msgid "IPv6 Addressing Method" msgstr "IPV4 ADDRESSING METHOD" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 #, fuzzy #| msgid "Automatic Upgrades" msgid "Automatic" msgstr "AUTOMATIC UPGRADES" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 #, fuzzy #| msgid "Automatic Upgrades" msgid "Automatic, DHCP only" msgstr "AUTOMATIC UPGRADES" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 addressing method is " @@ -3643,7 +3789,7 @@ msgstr "" "OPTIONAL VALUE. IF THIS VALUE IS GIVEN AND IPV4 ADDRESSING METHOD IS " "\"AUTOMATIC\", THE DNS SERVERS PROVIDED BY A DHCP SERVER WILL BE IGNORED." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 #, fuzzy #| msgid "" #| "Optional value. If this value is given and IPv4 Addressing Method is " @@ -3655,77 +3801,77 @@ msgstr "" "OPTIONAL VALUE. IF THIS VALUE IS GIVEN AND IPV4 ADDRESSING METHOD IS " "\"AUTOMATIC\", THE DNS SERVERS PROVIDED BY A DHCP SERVER WILL BE IGNORED." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- SELECT --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "THE VISIBLE NAME OF THE NETWORK." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "MODE" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "CHANNEL" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 #, fuzzy #| msgid "SSID" msgid "BSSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "AUTHENTICATION MODE" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3733,23 +3879,23 @@ msgstr "" "SELECT WPA IF THE WIRELESS NETWORK IS SECURED AND REQUIRES CLIENTS TO HAVE " "THE PASSWORD TO CONNECT." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 #, fuzzy #| msgid "OpenVPN" msgid "Open" msgstr "OPENVPN" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, fuzzy, python-brace-format #| msgid "Direct connection to the Internet." msgid "Specify how your {box_name} is connected to your network" msgstr "DIRECT CONNECTION TO THE INTERNET." -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3757,7 +3903,7 @@ msgid "" "typical home setup.

" msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3766,7 +3912,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

" msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3774,11 +3920,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

" msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3789,7 +3935,7 @@ msgid "" "over time or not, it is safer to choose this option.

" msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3813,19 +3959,19 @@ msgid "" "workaround solutions but each solution has some limitations.

" msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "Current Network Configuration" msgid "Preferred router configuration" msgstr "CURRENT NETWORK CONFIGURATION" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -4039,7 +4185,7 @@ msgid "Create Connection" msgstr "CREATE CONNECTION" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "DELETE CONNECTION" @@ -4084,7 +4230,7 @@ msgid "Computer" msgstr "COMPUTER" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "EDIT CONNECTION" @@ -4096,13 +4242,13 @@ msgstr "CONNECTION" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "NEARBY WI-FI NETWORKS" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "ADD CONNECTION" @@ -4143,6 +4289,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "NEXT" @@ -4285,75 +4432,75 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "NETWORK CONNECTIONS" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "CANNOT SHOW CONNECTION: CONNECTION NOT FOUND." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 #, fuzzy #| msgid "Show Connection information" msgid "Connection Information" msgstr "SHOW CONNECTION INFORMATION" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "CANNOT EDIT CONNECTION: CONNECTION NOT FOUND." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "THIS TYPE OF CONNECTION IS NOT YET UNDERSTOOD." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "ACTIVATED CONNECTION {name}." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "FAILED TO ACTIVATE CONNECTION: CONNECTION NOT FOUND." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "FAILED TO ACTIVATE CONNECTION {name}: NO SUITABLE DEVICE IS AVAILABLE." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "DEACTIVATED CONNECTION {name}." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "FAILED TO DE-ACTIVATE CONNECTION: CONNECTION NOT FOUND." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 #, fuzzy #| msgid "Adding New Ethernet Connection" msgid "Adding New Generic Connection" msgstr "ADDING NEW ETHERNET CONNECTION" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "ADDING NEW ETHERNET CONNECTION" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "ADDING NEW PPPOE CONNECTION" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "ADDING NEW WI-FI CONNECTION" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "CONNECTION {name} DELETED." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "FAILED TO DELETE CONNECTION: CONNECTION NOT FOUND." @@ -4381,20 +4528,20 @@ msgstr "" "YOU CAN ALSO ACCESS THE REST OF THE INTERNET VIA %(box_name)s FOR ADDED " "SECURITY AND ANONYMITY." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 #, fuzzy #| msgid "OpenVPN" msgid "OpenVPN" msgstr "OPENVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "VIRTUAL PRIVATE NETWORK (OPENVPN)" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4469,11 +4616,11 @@ msgstr "PROFILE IS SPECIFIC TO EACH USER OF %(box_name)s. KEEP IT A SECRET." msgid "Download my profile" msgstr "DOWNLOAD MY PROFILE" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "SETUP COMPLETED." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "SETUP FAILED." @@ -4724,6 +4871,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 #, fuzzy #| msgid "System Configuration" @@ -4838,7 +4998,7 @@ msgstr "ENABLE PRIVOXY" msgid "Web Proxy" msgstr "PRIVOXY WEB PROXY" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "ACCESS {url} WITH PROXY {proxy} ON TCP{kind}" @@ -4879,11 +5039,11 @@ msgstr "" "downloads\">DESKTOP AND MOBILE DEVICES ARE AVAILABLE." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 #, fuzzy #| msgid "Quassel IRC Client" msgid "IRC Client" @@ -4893,7 +5053,7 @@ msgstr "QUASSEL IRC CLIENT" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4903,19 +5063,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4937,6 +5097,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -5187,43 +5351,43 @@ msgstr "KITE NAME" msgid "Action" msgstr "ACTIONS" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "ADD SERVICE" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 #, fuzzy #| msgid "Add Service" msgid "Group Share" msgstr "ADD SERVICE" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Add Service" msgid "Home Share" msgstr "ADD SERVICE" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} DELETED." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing packages: {string} {details}" msgid "Error enabling share: {error_message}" msgstr "ERROR INSTALLING PACKAGES: {string} {details}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "{name} deleted." msgid "Share disabled." msgstr "{name} DELETED." -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing packages: {string} {details}" msgid "Error disabling share: {error_message}" @@ -5265,10 +5429,6 @@ msgstr "SAVE SERVICES" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 #, fuzzy #| msgid "Mode" @@ -5287,11 +5447,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "CONFIGURATION UPDATED." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -5321,8 +5476,33 @@ msgstr "" msgid "Show security report" msgstr "SECURITY" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -5401,13 +5581,13 @@ msgstr "" msgid "Not running" msgstr "TOR IS NOT RUNNING" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" msgid "Error setting restricted access: {exception}" msgstr "ERROR SETTING TIME ZONE: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 #, fuzzy #| msgid "General Configuration" msgid "Updated security configuration" @@ -5720,8 +5900,8 @@ msgstr "DELETE %(name)s" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5848,7 +6028,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "SECURE SHELL (SSH) SERVER" @@ -5895,7 +6075,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -5911,111 +6091,111 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 #, fuzzy #| msgid "reStore" msgid "Storage" msgstr "RESTORE" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 #, fuzzy #| msgid "repro service is running" msgid "The device is already unmounting." msgstr "REPRO SERVICE IS RUNNING" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 #, fuzzy #| msgid "This service already exists" msgid "The device is already mounted." msgstr "THIS SERVICE ALREADY EXISTS" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "REPRO SERVICE IS NOT RUNNING" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6189,11 +6369,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -6236,7 +6416,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 #, fuzzy #| msgid "" #| "Tor is an anonymous communication system. You can learn more about it " @@ -6257,42 +6437,42 @@ msgstr "" "THE " "TOR BROWSER." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "TOR HIDDEN SERVICE" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "TOR BRIDGE RELAY" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "TOR RELAY PORT AVAILABLE" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "OBFS3 TRANSPORT REGISTERED" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "OBFS4 TRANSPORT REGISTERED" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "ACCESS URL {url} ON TCP{kind} VIA TOR" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "CONFIRM TOR USAGE AT {url} ON TCP{kind}" @@ -6445,7 +6625,7 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "A TOR SOCKS PORT IS AVAILABLE ON YOUR %(box_name)s ON TCP PORT 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "SETTING UNCHANGED" @@ -6505,11 +6685,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6517,13 +6697,13 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 #, fuzzy #| msgid "Update URL" msgid "Update" msgstr "UPDATE URL" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox Manual" msgid "FreedomBox Updated" @@ -6539,6 +6719,23 @@ msgstr "ENABLE AUTOMATIC UPGRADES" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s Setup" @@ -6557,23 +6754,42 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 #, fuzzy #| msgid "Last update" -msgid "Manual update" +msgid "Manual Update" msgstr "LAST UPDATE" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 #, fuzzy #| msgid "Update URL" msgid "Update now" msgstr "UPDATE URL" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 #, fuzzy #| msgid "" #| "Depending on the number of packages to install, this may take a long time " @@ -6590,31 +6806,35 @@ msgstr "" "OTHER PACKAGES. DURING THE UPGRADE, THIS WEB INTERFACE MAY BE TEMPORARILY " "UNAVAILABLE AND SHOW AN ERROR. REFRESH THE PAGE TO CONTINUE." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "ERROR WHEN CONFIGURING UNATTENDED-UPGRADES: {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "AUTOMATIC UPGRADES ENABLED" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "AUTOMATIC UPGRADES DISABLED" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "UPGRADE PROCESS STARTED." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "STARTING UPGRADE FAILED." +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6638,7 +6858,7 @@ msgstr "USERS AND GROUPS" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "CHECK LDAP ENTRY \"{search_item}\"" @@ -6653,18 +6873,12 @@ msgstr "" msgid "Enter a valid username." msgstr "INVALID SERVER NAME" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -#, fuzzy -#| msgid "Transmission BitTorrent" -msgid "Permissions" -msgstr "TRANSMISSION BITTORRENT" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6685,20 +6899,20 @@ msgstr "" "ABLE TO LOG IN TO ALL SERVICES. THEY CAN ALSO LOG IN TO THE SYSTEM THROUGH " "SSH AND HAVE ADMINISTRATIVE PRIVILEGES (SUDO)." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "CREATING LDAP USER FAILED." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "FAILED TO ADD NEW USER TO {group} GROUP." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6708,45 +6922,45 @@ msgstr "" "SYSTEM WITHOUT USING A PASSWORD. YOU MAY ENTER MULTIPLE KEYS, ONE ON EACH " "LINE. BLANK LINES AND LINES STARTING WITH # WILL BE IGNORED." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "RENAMING LDAP USER FAILED." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "FAILED TO REMOVE USER FROM GROUP." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "FAILED TO ADD USER TO GROUP." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "FAILED TO ADD USER TO GROUP." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "CHANGING LDAP USER PASSWORD FAILED." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "FAILED TO ADD NEW USER TO ADMIN GROUP." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "USER ACCOUNT CREATED, YOU ARE NOW LOGGED IN" @@ -6880,7 +7094,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -7010,7 +7224,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -7039,7 +7253,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" msgid "Add Connection to Server" @@ -7141,83 +7355,83 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy #| msgid "This service already exists" msgid "Client with public key already exists" msgstr "THIS SERVICE ALREADY EXISTS" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 #, fuzzy #| msgid "Email Client (Roundcube)" msgid "Allowed Client" msgstr "EMAIL CLIENT (ROUNDCUBE)" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "UPDATE SETUP" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy #| msgid "Email Client (Roundcube)" msgid "Modify Client" msgstr "EMAIL CLIENT (ROUNDCUBE)" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 #, fuzzy #| msgid "Delete" msgid "Delete Allowed Client" msgstr "DELETE" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "{name} deleted." msgid "Client deleted." msgstr "{name} DELETED." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 #, fuzzy #| msgid "packages not found" msgid "Client not found" msgstr "PACKAGES NOT FOUND" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added custom service" msgid "Added new server." msgstr "ADDED CUSTOM SERVICE" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "CONNECTION TYPE" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "UPDATE SETUP" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Edit Connection" msgid "Modify Connection to Server" msgstr "EDIT CONNECTION" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "DELETE CONNECTION" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "{name} deleted." msgid "Server deleted." @@ -7231,27 +7445,27 @@ msgstr "PPPOE" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 #, fuzzy #| msgid "Installation" msgid "installing" msgstr "INSTALLATION" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 #, fuzzy #| msgid "Setting unchanged" msgid "media change" msgstr "SETTING UNCHANGED" -#: plinth/package.py:150 +#: plinth/package.py:162 #, fuzzy, python-brace-format #| msgid "Configuration" msgid "configuration file: {file}" @@ -7534,14 +7748,45 @@ msgstr "NO CERTFICATE" msgid "Port Forwarding" msgstr "ENABLE TOR" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." msgstr "" +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "PROTOCOL" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "%(box_name)s SETUP" + #: plinth/templates/setup.html:24 #, fuzzy #| msgid "Installation" @@ -7588,6 +7833,36 @@ msgstr "%(percentage)s%% COMPLETE" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Create User" +#~ msgid "Backports activated." +#~ msgstr "CREATE USER" + +#, fuzzy +#~| msgid "Save Password" +#~ msgid "Upload Password" +#~ msgstr "SAVE PASSWORD" + +#, fuzzy +#~| msgid "Password" +#~ msgid "Upload password updated" +#~ msgstr "PASSWORD" + +#, fuzzy +#~| msgid "Configuration updated" +#~ msgid "Maximum file size updated" +#~ msgstr "CONFIGURATION UPDATED" + +#, fuzzy +#~| msgid "Security" +#~ msgid "Security Notice" +#~ msgstr "SECURITY" + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "ACTIVATE" + #, fuzzy #~| msgid "reStore" #~ msgid "Restoring" @@ -7851,9 +8126,6 @@ msgstr "" #~ msgid "Manage" #~ msgstr "MANAGE" -#~ msgid "Create" -#~ msgstr "CREATE" - #, fuzzy #~| msgid "This connection is not active." #~ msgid "This code is not valid" @@ -8028,11 +8300,6 @@ msgstr "" #~ msgid "Restore apps" #~ msgstr "RESTORE" -#, fuzzy -#~| msgid "Create User" -#~ msgid "Backup archives" -#~ msgstr "CREATE USER" - #~ msgid "Software Upgrades" #~ msgstr "SOFTWARE UPGRADES" @@ -8165,9 +8432,6 @@ msgstr "" #~ msgid "BitTorrent" #~ msgstr "DELUGE BITTORRENT" -#~ msgid "admin" -#~ msgstr "ADMIN" - #~ msgid "wiki" #~ msgstr "WIKI" diff --git a/plinth/locale/fr/LC_MESSAGES/django.po b/plinth/locale/fr/LC_MESSAGES/django.po index 76c65ca06..d3f67024d 100644 --- a/plinth/locale/fr/LC_MESSAGES/django.po +++ b/plinth/locale/fr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2020-07-02 22:41+0000\n" "Last-Translator: J. Lavoie \n" "Language-Team: French utilisateur disposant d’un compte sur la " "{box_name}." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Serveur de discussion" @@ -1587,11 +1733,11 @@ msgstr "" "via Tor), ou même vous connecter à votre propre serveur pour plus de " "sécurité." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "Gajim" @@ -1607,11 +1753,11 @@ msgstr "" "Vous pouvez configurer le domaine de votre système sur la page Configurer." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "Gestion des archives de messages activée" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "Gestion des archives de messages désactivée" @@ -1670,12 +1816,14 @@ msgstr "Service/Port" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Activé" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Désactivé" @@ -1801,51 +1949,61 @@ msgstr "Gitweb" msgid "Simple Git Hosting" msgstr "Hébergement Git simple" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "Adresse du dépôt invalide." -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "Nom de dépôt invalide." -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" "Nom du dépôt à créer, ou adresse (URL) d’un dépôt existant pour l’importer." -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "Description du dépôt" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "Paramètre optionnel, pour affichage dans Gitweb." -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Propriétaire du dépôt" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "Dépôt privé" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "Ne permet l'accès à ce dépôt qu'aux utilisateurs autorisés." -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "Un dépôt existe déjà avec ce nom." -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "Nom du dépôt" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "Une chaîne alpha-numérique qui identifie de manière unique le dépôt." +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default Skin" +msgid "Default branch" +msgstr "Thème par défaut" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "Git" @@ -1908,11 +2066,6 @@ msgstr "Dépôt modifié." msgid "Edit repository" msgstr "Modifier le dépôt" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "Une erreur est survenue pendant la configuration." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1923,33 +2076,35 @@ msgstr "{name} supprimé." msgid "Could not delete {name}: {error}" msgstr "La suppression de {name} n'a pas abouti : {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Documentation" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Manuel" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Obtenir de l’aide" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Faire un retour d'utilisation" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "Participer" @@ -2034,22 +2189,6 @@ msgstr "Une nouvelle version de %(box_name)s est disponible." msgid "%(box_name)s is up to date." msgstr "Votre %(box_name)s est à jour." -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "Information de sécurité" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" -"Vous utilisez des paquets du projet « Debian backports ». Veuillez noter que " -"ces paquets ne disposent pas du suivi de sécurité de Debian. Toutefois, ils " -"sont mis à jour par des membres de la communauté Debian et FreedomBox du " -"mieux qu'ils le peuvent." - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2251,16 +2390,16 @@ msgstr "" "Veuillez retirer les éventuels mots de passe et autres informations " "personnelles du journal avant de soumettre le rapport d’erreur." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "Documentation et FAQ" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "À propos de la {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "Manuel {box_name}" @@ -2293,19 +2432,19 @@ msgstr "" "La configuration aura lieu lors de la première visite à l’interface web mise " "à disposition." -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "Gérer l'application I2P" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "Réseau d'anonymisation" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "Serveur mandataire I2P" @@ -2480,11 +2619,11 @@ msgstr "" "Gobby et installez-le. Lancez ensuite Gobby, sélectionnez « Connect to " "Server » et saisissez le nom de domaine de la {box_name}." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Serveur Gobby" @@ -2611,16 +2750,6 @@ msgstr "Aucun certificat" msgid "Re-obtain" msgstr "Obtenir à nouveau" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Supprimer" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Révoquer" @@ -2676,7 +2805,7 @@ msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" "Échec de la suppression du certificat pour le domaine {domain} : {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2694,17 +2823,22 @@ msgstr "" "un serveur Matrix donné peuvent converser avec des utilisateurs sur tous les " "autres serveurs Matrix grâce la fédération." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 +#, fuzzy +#| msgid "" +#| "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" "Pour communiquer, vous pouvez utiliser les clients disponibles pour mobile, ordinateur de bureau et " "web. Le client Riot est recommandé." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -2723,8 +2857,8 @@ msgstr "" "vous souhaitez que seuls les utilisateurs existants puissent se connecter." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "Riot" +msgid "Element" +msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2797,11 +2931,11 @@ msgstr "" "valide. Rendez-vous sur Let’s Encrypt " "pour en obtenir un." -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "Inscription publique activée" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "Inscription publique désactivée" @@ -2937,12 +3071,12 @@ msgstr "" "au serveur, vous devez disposer d'un client Minetest." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Bac à sable cubique" @@ -2992,7 +3126,7 @@ msgstr "" "manière." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Adresse" @@ -3001,19 +3135,19 @@ msgstr "Adresse" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "Configuration du nombre maximum de joueurs mise à jour" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "Configuration du mode créatif mise à jour" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "Configuration PVP mise à jour" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "Configuration des blessures mise à jour" @@ -3327,11 +3461,11 @@ msgstr "" "64738. Il existe des clients permettant " "de se connecter à Mumble depuis un ordinateur ou un appareil Android." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "Tchat vocal" @@ -3360,7 +3494,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "Mumla" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "Mot de passe du super utilisateur mis à jour avec succès." @@ -3390,6 +3524,12 @@ msgstr "Tous" msgid "All web apps" msgstr "Toutes les applications web" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Service" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3407,36 +3547,36 @@ msgstr "" "Les périphériques gérés par d’autres méthodes pourraient ne pas être " "disponibles pour être configurés ici." -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Réseaux" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Utilise DNSSEC sur IPv{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Type de connexion" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Nom Connexion" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "Interface réseau" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "Le périphérique réseau auquel cette connexion doit être liée." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Zone pare-feu" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3444,21 +3584,21 @@ msgstr "" "La zone pare-feu contrôlera quels services sont disponibles via ces " "interfaces. Sélectionnez « Interne » seulement pour des réseaux de confiance." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Externe" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Interne" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "Méthode d'adressage IPv4" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3470,19 +3610,26 @@ msgstr "" "la {box_name} un routeur, en charge de configurer les clients sur ce réseau " "et de partager sa connexion à Internet." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "Automatique (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Partagée" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Manuel" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Masque de sous-réseau" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3490,21 +3637,21 @@ msgstr "" "Paramètre optionnel. Si laissée vide, un masque de sous-réseau basé sur " "l’adresse sera utilisé par défaut." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Passerelle" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "Paramètre optionnel." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "Serveur DNS" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3513,11 +3660,11 @@ msgstr "" "d’adressage IPv4 est « Automatique (DHCP) », les serveurs DNS obtenus via " "DHCP seront ignorés." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "Second Serveur DNS" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3526,11 +3673,11 @@ msgstr "" "d’adressage IPv4 est « Automatique (DHCP) », les serveurs DNS obtenus via " "DHCP seront ignorés." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "Méthode d’adressage IPv6" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3539,27 +3686,27 @@ msgstr "" "Les méthodes « Automatiques » feront en sorte que la {box_name} obtienne sa " "configuration depuis ce réseau en tant que client." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Automatique" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "Automatique, DHCP uniquement" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "Ignorer" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "Préfixe" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "Valeur entre 1 et 128." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3567,7 +3714,7 @@ msgstr "" "Paramètre optionnel. Si ce champ est renseigné et que la méthode d’adressage " "IPv6 est « Automatique », les serveurs DNS obtenus via DHCP seront ignorés." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3575,54 +3722,54 @@ msgstr "" "Paramètre optionnel. Si ce champ est renseigné et que la méthode d’adressage " "IPv6 est « Automatique », les serveurs DNS obtenus via DHCP seront ignorés." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- sélectionner --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "Le nom visible du réseau." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Mode" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Infrastructure" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Point d’accès" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "Ad hoc" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Bande de fréquences" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Canal" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3631,11 +3778,11 @@ msgstr "" "fréquence sélectionnée. Une valeur vide ou égale à 0 correspond à une " "sélection automatique." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3645,11 +3792,11 @@ msgstr "" "connexion à un point d'accès, ne se connecter que si le BSSID du point " "d’accès correspond à celui saisi ici. Exemple : 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Mode Authentification" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3657,20 +3804,20 @@ msgstr "" "Sélectionner WPA si votre réseau sans fil est sécurisé et s'il demande aux " "clients un mot de passe pour se connecter." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Ouvert" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "Précisez comment votre {box_name} est connectée à votre réseau" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3681,7 +3828,7 @@ msgstr "" "accès à Internet de votre routeur grâce au Wi-Fi ou à un câble Ethernet. Il " "s’agit de la configuration domestique classique.

" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3695,7 +3842,7 @@ msgstr "" "tous vos appareils se connectent à la {box_name} pour leur connectivité " "Internet.

" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3707,11 +3854,11 @@ msgstr "" "réseau. C’est le cas en général avec une installation sur un hébergement " "communautaire ou dans les nuages (« cloud »).

" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "Choisissez votre type de connexion à Internet" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3730,7 +3877,7 @@ msgstr "" "mais ne savez pas si celle-ci peut changer dans le temps, il est plus sûr de " "choisir cette option.

" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, fuzzy, python-brace-format #| msgid "" #| "I have a public IP address that does not change overtime (recommended)

" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3777,7 +3924,7 @@ msgstr "" "des services à domicile. La {box_name} propose plusieurs solutions de " "contournement mais chaque solution a ses limites.

" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" @@ -3786,11 +3933,11 @@ msgstr "" "procure

Les actions les plus conservatrices vous " "seront proposées.

" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "Configuration préférée de routeur" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -4025,7 +4172,7 @@ msgid "Create Connection" msgstr "Créer Connexion" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Supprimer Connexion" @@ -4070,7 +4217,7 @@ msgid "Computer" msgstr "Machine" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Modifier connexion" @@ -4080,13 +4227,13 @@ msgstr "Connexions" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "Réseaux Wi-Fi à proximité" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Ajouter connexion" @@ -4130,6 +4277,7 @@ msgstr "Passer cette étape" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "Suivant" @@ -4306,74 +4454,74 @@ msgstr "" "Elle vous donnera les instructions détaillées sur comment réaliser cette " "opération." -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Connexions réseau" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" "Impossible d’afficher les détails de la connexion : connexion introuvable." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "Informations sur la connexion" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "Impossible de modifier la connexion : connexion introuvable." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "Ce type de connexion n'est pas encore supporté." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "Connexion {name} activée." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "Échec d’activation de la connexion : connexion introuvable." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Échec d’activation de la connexion {name} : pas de périphérique adéquat " "disponible." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Connexion {name} désactivée." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "Échec de désactivation de la connexion : connexion introuvable." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "Ajout d'une nouvelle connexion générique" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "Ajout d’une nouvelle connexion Ethernet" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "Ajout d’une nouvelle connexion PPPoE" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "Ajout d’une nouvelle connexion Wi-Fi" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "Connexion {name} supprimée." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "Échec de suppression de la connexion : connexion introuvable." @@ -4395,16 +4543,16 @@ msgstr "" "d’accéder au reste d’Internet au travers de la {box_name} pour une sécurité " "et un anonymat accrus." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Réseau privé virtuel" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4477,11 +4625,11 @@ msgstr "" msgid "Download my profile" msgstr "Télécharger mon profil" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Installation terminée." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Échec de l’installation." @@ -4703,6 +4851,19 @@ msgstr "" msgid "Performance" msgstr "Performance" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "Contrôle Système" @@ -4810,7 +4971,7 @@ msgstr "Privoxy" msgid "Web Proxy" msgstr "Serveur mandataire web" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Accéder à l'URL {url} avec le mandataire {proxy} sur tcp{kind}" @@ -4846,11 +5007,11 @@ msgstr "" "quasseldroid.iskrembilen.com/\">mobile sont disponibles pour " "téléchargement." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "Client IRC" @@ -4858,7 +5019,7 @@ msgstr "Client IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4879,7 +5040,7 @@ msgstr "" "nécessaire. N’importe quel utilisateur disposant d’un compte sur la " "{box_name} peut accéder à Radicale." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4890,12 +5051,12 @@ msgstr "" "l’ajout d'événements ou de contacts, qui doivent être réalisés avec un " "client dédié." -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "Agenda et carnet d’adresses" @@ -4924,6 +5085,12 @@ msgstr "" "N’importe quel utilisateur disposant d’un compte sur la {box_name} peut " "visualiser et modifier n’importe quel agenda/carnet d’adresses." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Point d’accès" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "DAVx5" @@ -5173,32 +5340,32 @@ msgstr "Nom du partage" msgid "Action" msgstr "Action" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "Ouvrir un partage" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "Partage de groupe" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "Partage de dossier personnel" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "Partage activé." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Erreur lors de l'activation du partage : {error_message}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "Partage désactivé." -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Erreur lors de la désactivation du partage : {error_message}" @@ -5242,10 +5409,6 @@ msgstr "" "Choisissez le filtre de famille à appliquer par défaut à vos résultats de " "recherche." -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "Aucun" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "Modéré" @@ -5263,11 +5426,6 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Permettre à tous ceux qui peuvent accéder à cette application de l'utiliser." -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "Configuration mise à jour." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "Restreindre les sessions console (recommandé)" @@ -5302,8 +5460,33 @@ msgstr "" msgid "Show security report" msgstr "Afficher le rapport de sécurité" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "Rapport de sécurité" @@ -5382,12 +5565,12 @@ msgstr "Non" msgid "Not running" msgstr "Inactif" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Erreur lors de la mise en place de l’accès restreint : {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "Configuration de sécurité mise à jour" @@ -5701,9 +5884,13 @@ msgid "Yearly Snapshots Limit" msgstr "Instantanés annuels à conserver" #: plinth/modules/snapshot/forms.py:49 +#, fuzzy +#| msgid "" +#| "Keep a maximum of this many yearly snapshots. The default value is 0 " +#| "(disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" "Conserver au maximum ce nombre d’instantanés pris tous les ans. La valeur " "par défaut est de 0 (désactivé)." @@ -5831,7 +6018,7 @@ msgstr "" "effectuer des tâches d'administration, copier des fichiers ou bien faire " "fonctionner d’autres services en utilisant de telles connexions." -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "Serveur Secure Shell (SSH)" @@ -5877,7 +6064,7 @@ msgstr "Authentification SSH par mot de passe désactivée." msgid "SSH authentication with password enabled." msgstr "Authentification SSH par mot de passe activée." -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "Authentification unique" @@ -5897,108 +6084,108 @@ msgstr "" "d’utilisation, monter et démonter des médias amovibles, étendre la partition " "racine, etc." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "Stockage" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} octets" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} Kio" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} Mio" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} Gio" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} Tio" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "L'opération a échoué." -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "L'opération a été annulée." -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "Le périphérique est déjà en train d’être démonté." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "L’opération n’est pas gérée par manque d'un pilote ou d'un outil adapté." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "L'opération ne s'est pas terminée." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "L'opération devrait réveiller un disque qui se trouve dans un état " "d'endormissement profond." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "Tentative de démontage d’un périphérique en cours d’utilisation." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "L'opération a déjà été annulée." -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "Vous n'êtes pas autorisé à effectuer l'opération demandée." -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "Le périphérique est déjà monté." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "Le périphérique n’est pas monté." -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "Vous n'êtes pas autorisé à utiliser l'option demandée." -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "Le périphérique est monté par un autre utilisateur." -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Espace faible sur la partition système : {percent_used}% utilisés, " "{free_space} libre." -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "Espace disque faible" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "Erreur disque imminente" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6187,11 +6374,11 @@ msgstr "" "Des introducteurs supplémentaires peuvent être ajoutés, afin de faire " "découvrir ce nœud aux autres nœuds de stockage." -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "Stockage distribué de fichiers" @@ -6235,7 +6422,7 @@ msgstr "Introducteurs connectés" msgid "Remove" msgstr "Supprimer" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6249,40 +6436,40 @@ msgstr "" "recommande l’utilisation du Navigateur Tor." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "Service onion Tor" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "Mandataire Socks Tor" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "Relais Tor de type pont (« bridge relay »)" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "Le port du relais Tor est disponible" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Abonné au transport obfs3" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Abonné au transport obfs4" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Accédez à l'URL {url} sur tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Confirmez l'utilisation de Tor pour {url} sur tcp{kind}" @@ -6435,7 +6622,7 @@ msgstr "" "Un port SOCKS pour Tor est accessible sur votre %(box_name)s sur le port TCP " "9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Paramètre inchangé" @@ -6498,13 +6685,13 @@ msgstr "Lecteur de flux d'informations" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" "Rechercher et installer les dernières mises à jour logicielles et les " "correctifs de sécurité." -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6517,11 +6704,11 @@ msgstr "" "interruptions. Si le redémarrage du système est nécessaire, il sera effectué " "à 2h00, causant brièvement l'interruption de toutes les applications." -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "Mises à jour" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" msgstr "FreedomBox mise à jour" @@ -6535,6 +6722,23 @@ msgstr "" "En activant cette option, la FreedomBox se mettra à jour automatiquement une " "fois par jour." +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -6554,19 +6758,40 @@ msgstr "" msgid "Dismiss" msgstr "Fermer" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +#, fuzzy +#| msgid "Manual update" +msgid "Manual Update" msgstr "Mise à jour manuelle" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "Mise à jour en cours…" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "Mettre à jour immédiatement" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 #, fuzzy #| msgid "" #| "This may take a long time to complete. During an update, " @@ -6582,35 +6807,39 @@ msgstr "" "web pourrait aussi être temporairement indisponible ou afficher une erreur. " "Si cela se produit, rafraîchissez la page pour continuer." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 #, fuzzy #| msgid "Toggle recent update logs" msgid "Show recent update logs" msgstr "Basculer les journaux de modification récents" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" "Erreur lors de la configuration du système de mise à jour automatique " "« unattended-upgrades » : {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "Mises à niveau automatiques activées" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "Mises à niveau automatiques désactivées" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "Mise à niveau initiée." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "Le lancement de la mise à niveau a échoué." +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6642,7 +6871,7 @@ msgstr "Utilisateurs et groupes" msgid "Access to all services and system settings" msgstr "Accès à tous les services et à la configuration du système" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Vérification de l’entrée LDAP « {search_item} »" @@ -6655,18 +6884,14 @@ msgstr "Le nom d'utilisateur est déjà pris ou est réservé." msgid "Enter a valid username." msgstr "Entrez un nom d’utilisateur valide." -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" "Requis. 150 caractères ou moins. Lettres anglaises, chiffres et @/./-/_ " "uniquement." -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "Permissions" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6681,20 +6906,20 @@ msgstr "" "peuvent également se connecter au système avec Secure Shell (SSH) et obtenir " "les privilèges de superutilisateur (sudo)." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "La création de l’utilisateur LDAP a échoué." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Échec de l’ajout du nouvel utilisateur au groupe {group}." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Clés SSH autorisées" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6705,43 +6930,43 @@ msgstr "" "plusieurs clefs, une sur chaque ligne. Les lignes vides et celles commençant " "par # sont ignorées." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "Le changement du nom de l’utilisateur LDAP a échoué." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "Échec du retrait de l'utilisateur du groupe." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "Échec de l'ajout de l'utilisateur au groupe." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "Échec du paramétrage des clefs SSH." -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "Échec du changement de statut de l'utilisateur." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "Impossible de supprimer le seul administrateur de ce système." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "Le changement du mot de passe de l’utilisateur LDAP a échoué." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Échec de l'ajout du nouvel utilisateur au groupe admin." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "Échec de la restriction de l'accès à la console." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "Compte utilisateur créé, vous êtes maintenant connecté." @@ -6881,7 +7106,7 @@ msgstr "" "public, tout votre trafic sera alors relayé via votre {box_name} de manière " "sécurisée." -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -7023,7 +7248,7 @@ msgid "Add a new peer" msgstr "Ajouter un nouveau pair" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "Ajouter un client autorisé" @@ -7050,7 +7275,7 @@ msgid "Add a new server" msgstr "Ajouter un nouveau serveur" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Ajouter une connexion à un serveur" @@ -7143,59 +7368,59 @@ msgstr "Clé publique de cette machine :" msgid "IP address of this machine:" msgstr "Adresse IP de cette machine :" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "Nouveau client ajouté." -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "Un client existe déjà avec cette clé publique" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "Client autorisé" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "Client mis à jour." -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "Modifier le client" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "Supprimer un client autorisé" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "Client supprimé." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "Client introuvable" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "Nouveau serveur ajouté." -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "Connexion au seveur" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "Serveur mis à jour." -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "Modifier la connexion à un serveur" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "Supprimer la connexion à un serveur" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "Serveur supprimé." @@ -7207,23 +7432,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Générique" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "Erreur pendant l’installation" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "installation en cours" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "téléchargement en cours" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "changement de support" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "fichier de configuration : {file}" @@ -7491,17 +7716,57 @@ msgstr "Notifications" msgid "Port Forwarding" msgstr "Redirection de port" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Vous pouvez vérifier la configuration du " +"réseau et la modifier si nécessaire." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, fuzzy, python-format +#| msgid "" +#| "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 " +#| "%(service_name)s:" +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" msgstr "" "Si votre FreedomBox se situe derrière un routeur, vous aurez besoin de " "mettre en place une redirection de port sur votre routeur. Vous devriez " "rediriger les ports suivants pour %(service_name)s :" +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "protocole" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "Configuration initiale de la %(box_name)s" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "Installer cette application ?" @@ -7550,6 +7815,118 @@ msgstr "%(percentage)s%% effectué" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Backup archives" +#~ msgid "Backports activated." +#~ msgstr "Archives de sauvegarde" + +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot est une application web de partage de fichiers « en un clic » " +#~ "se concentrant sur la protection de la vie privée des utilisateurs. C’est " +#~ "l’outil idéal pour partager rapidement un fichier. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Cette instance de Coquelicot est à disposition du public mais nécessite " +#~ "un mot de passe de téléversement pour prévenir les accès non-autorisés. " +#~ "Vous pourrez définir un nouveau mot de passe de téléversement dans le " +#~ "formulaire qui apparaîtra ci-dessous une fois installation terminée. Le " +#~ "mot de passe de téléversement pas défaut est « test »." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "Mot de passe de téléversement" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Définir un nouveau mot de passe de téléversement pour Coquelicot. Laissez " +#~ "ce champ vide pour conserver le mot de passe actuel." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Taille de fichier maximale (en Mio)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Définissez la taille maximale des fichiers pouvant être téléversés vers " +#~ "Coquelicot." + +#~ msgid "coquelicot" +#~ msgstr "coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Le mot de passe de téléversement a été mis à jour" + +#~ msgid "Failed to update upload password" +#~ msgstr "Échec de la mise à jour du mot de passe de téléversement" + +#~ msgid "Maximum file size updated" +#~ msgstr "Taille maximale des fichiers mise à jour" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "Échec de la mise à jour de la taille maximale des fichiers" + +#~ msgid "Riot" +#~ msgstr "Riot" + +#~ msgid "Security Notice" +#~ msgstr "Information de sécurité" + +#, fuzzy +#~| msgid "" +#~| "You are using packages from Debian backports. Please note that these " +#~| "packages do not have security support from Debian. However, they are " +#~| "maintained on a best-effort basis by contributors in Debian and " +#~| "FreedomBox community." +#~ msgid "" +#~ "Backports are enabled. Please note that packages from the backports " +#~ "repository do not have security support from Debian. However, they are " +#~ "maintained on a best-effort basis by contributors in Debian and " +#~ "FreedomBox community." +#~ msgstr "" +#~ "Vous utilisez des paquets du projet « Debian backports ». Veuillez noter " +#~ "que ces paquets ne disposent pas du suivi de sécurité de Debian. " +#~ "Toutefois, ils sont mis à jour par des membres de la communauté Debian et " +#~ "FreedomBox du mieux qu'ils le peuvent." + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Sauvegardes" + +#, fuzzy +#~| msgid "" +#~| "You are using packages from Debian backports. Please note that these " +#~| "packages do not have security support from Debian. However, they are " +#~| "maintained on a best-effort basis by contributors in Debian and " +#~| "FreedomBox community." +#~ msgid "" +#~ "Please note that backports packages do not have security support from " +#~ "Debian. However, they are maintained on a best-effort basis by " +#~ "contributors in Debian and FreedomBox community." +#~ msgstr "" +#~ "Vous utilisez des paquets du projet « Debian backports ». Veuillez noter " +#~ "que ces paquets ne disposent pas du suivi de sécurité de Debian. " +#~ "Toutefois, ils sont mis à jour par des membres de la communauté Debian et " +#~ "FreedomBox du mieux qu'ils le peuvent." + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "Activer" + #~ msgid "Restoring" #~ msgstr "Restauration en cours" @@ -7861,9 +8238,6 @@ msgstr "Gujarati" #~ msgid "Manage" #~ msgstr "Gérer" -#~ msgid "Create" -#~ msgstr "Créer" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "Le récépissé reçu avec votre {box_name}, Edition Danube." @@ -8220,9 +8594,6 @@ msgstr "Gujarati" #~ msgid "Apps data to restore from the backup" #~ msgstr "Données des applications à restaurer de la sauvegarde" -#~ msgid "Backup archives" -#~ msgstr "Archives de sauvegarde" - #~ msgid "" #~ "No apps that support backup are currently installed. Backup can be " #~ "created after an app supporting backups is installed." @@ -8383,9 +8754,6 @@ msgstr "Gujarati" #~ msgid "BitTorrent" #~ msgstr "BitTorrent" -#~ msgid "admin" -#~ msgstr "admin" - #~ msgid "wiki" #~ msgstr "wiki" diff --git a/plinth/locale/gl/LC_MESSAGES/django.po b/plinth/locale/gl/LC_MESSAGES/django.po index 0675d5994..3c7fd933f 100644 --- a/plinth/locale/gl/LC_MESSAGES/django.po +++ b/plinth/locale/gl/LC_MESSAGES/django.po @@ -7,23 +7,23 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: 2019-07-11 08:01+0000\n" -"Last-Translator: Miguel A. Bouzada \n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-08-12 16:32+0000\n" +"Last-Translator: Xosé M \n" "Language-Team: Galician \n" +"freedombox/gl/>\n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.8-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" msgstr "" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "FreedomBox" @@ -130,11 +130,11 @@ msgstr "Descubrimento de servizo" msgid "Local Network Domain" msgstr "" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "" -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "" @@ -143,6 +143,10 @@ msgstr "" msgid "{app} (No data to backup)" msgstr "" +#: plinth/modules/backups/forms.py:50 +msgid "Repository" +msgstr "" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -208,7 +212,15 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +msgid "Key in Repository" +msgstr "" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "" @@ -371,6 +383,7 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -398,7 +411,7 @@ msgstr "" #: plinth/modules/backups/templates/backups_repository.html:77 msgid "Download" -msgstr "" +msgstr "Descargar" #: plinth/modules/backups/templates/backups_repository.html:81 #: plinth/modules/backups/templates/backups_restore.html:27 @@ -573,6 +586,164 @@ msgstr "" msgid "Mounting failed" msgstr "" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +msgid "Create or upload files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +msgid "Delete files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +msgid "File & Snippet Sharing" +msgstr "" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +msgid "Manage Passwords" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +msgid "Add password" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "" + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "" + +#: plinth/modules/bepasty/views.py:97 +msgid "Password added." +msgstr "" + +#: plinth/modules/bepasty/views.py:102 +msgid "Add Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:119 +msgid "Password deleted." +msgstr "" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -587,11 +758,11 @@ msgid "" "connection from {box_name}." msgstr "" -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "" @@ -618,6 +789,7 @@ msgstr "" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -640,9 +812,9 @@ msgstr "" msgid "Refresh IP address and domains" msgstr "" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -714,12 +886,13 @@ msgid "Configure" msgstr "" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "" @@ -777,7 +950,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "Amosa aplicativos e funcións que requiren maior coñecemento técnico." @@ -821,67 +994,6 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -896,11 +1008,11 @@ msgid "" "need to be configured with the details provided here." msgstr "" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "" @@ -932,7 +1044,7 @@ msgstr "" msgid "Date & Time" msgstr "" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "" @@ -991,16 +1103,28 @@ msgstr "" msgid "Bittorrent client written in Python/PyGTK" msgstr "" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "" +#: plinth/modules/diagnostics/__init__.py:102 +msgid "passed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:103 +msgid "failed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1125,46 +1249,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1173,68 +1297,72 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "" +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +msgid "other update URL" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "" @@ -1288,10 +1416,10 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" -msgstr "" +msgstr "Acerca de" #: plinth/modules/dynamicdns/views.py:32 #: plinth/modules/firewall/templates/firewall.html:10 @@ -1330,12 +1458,12 @@ msgid "" "any user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1382,11 +1510,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1398,11 +1526,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1452,12 +1580,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1565,50 +1695,58 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1671,11 +1809,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1686,33 +1819,35 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Manual" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1773,18 +1908,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -1929,16 +2052,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1963,19 +2086,19 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2125,11 +2248,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2241,16 +2364,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2300,7 +2413,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2310,14 +2423,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2333,7 +2446,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2386,11 +2499,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "" @@ -2499,12 +2612,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2545,7 +2658,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2554,19 +2667,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2833,11 +2946,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -2863,7 +2976,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -2888,6 +3001,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service Discovery" +msgid "Services" +msgstr "Descubrimento de servizo" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -2900,56 +3019,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2957,185 +3076,192 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Manual" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3143,7 +3269,7 @@ msgid "" "typical home setup.

" msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3152,7 +3278,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

" msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3160,11 +3286,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

" msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3175,7 +3301,7 @@ msgid "" "over time or not, it is safer to choose this option.

" msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3199,17 +3325,17 @@ msgid "" "workaround solutions but each solution has some limitations.

" msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3417,7 +3543,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3462,7 +3588,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3472,13 +3598,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3519,6 +3645,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3655,71 +3782,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3734,16 +3861,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3799,11 +3926,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -3998,6 +4125,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4083,7 +4223,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4107,11 +4247,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4119,7 +4259,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4129,19 +4269,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4163,6 +4303,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4363,33 +4507,33 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Produciuse un erro ao instalar o aplicativo: {error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4427,10 +4571,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4447,11 +4587,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4479,8 +4614,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4547,12 +4707,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -4821,8 +4981,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -4937,7 +5097,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -4978,7 +5138,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -4994,103 +5154,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5249,11 +5409,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5292,7 +5452,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5301,40 +5461,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5460,7 +5620,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5511,11 +5671,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5523,11 +5683,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -5541,6 +5701,23 @@ msgstr "" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5558,50 +5735,75 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +#, fuzzy +#| msgid "Manual" +msgid "Manual Update" +msgstr "Manual" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5625,7 +5827,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5638,16 +5840,12 @@ msgstr "" msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5656,63 +5854,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -5839,7 +6037,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5961,7 +6159,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -5988,7 +6186,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -6076,59 +6274,59 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "" -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "" @@ -6140,23 +6338,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6398,12 +6596,40 @@ msgstr "" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 diff --git a/plinth/locale/gu/LC_MESSAGES/django.po b/plinth/locale/gu/LC_MESSAGES/django.po index 4ebdcc272..61201cc41 100644 --- a/plinth/locale/gu/LC_MESSAGES/django.po +++ b/plinth/locale/gu/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2018-02-05 18:37+0000\n" "Last-Translator: drashti kaushik \n" "Language-Team: Gujarati XMPP ક્લાયન્ટ. જ્યારે સક્ષમ કરેલ હોય, ઈઝબેબર્ડ ઍક્સેસ કરી શકાય છે " "કોઇપણ દ્વારા વપરાશકર્તાઓ સાથે{box_name}પ્રવેશ." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ઈઝબેબર્ડ" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "ચેટ સર્વર" @@ -1525,11 +1667,11 @@ msgstr "" "સર્વર્સ પર નવા એકાઉન્ટ્સ બનાવો (ટોર મારફત), અથવા તો વધારાની સુરક્ષા માટે તમારા " "પોતાના સર્વર સાથે જોડાણ કરો." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "ડિનો" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "ગજિમ" @@ -1544,11 +1686,11 @@ msgstr "" "દેખાશે username@%(domainname)s. તમે સિસ્ટમ પર તમારા ડોમેન સેટ કરી શકો છો રૂપરેખાંકિત કરો પાનું." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "સંદેશ આર્કાઇવ મેનેજમેંટ સક્ષમ કરો" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "સંદેશ આર્કાઇવ સંચાલન અક્ષમ કરો" @@ -1605,12 +1747,14 @@ msgstr "સેવા/પોર્ટ" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "સક્ષમ કરેલું" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "અક્ષમ કરેલું" @@ -1722,58 +1866,68 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository URL." msgstr "અમાન્ય હોસ્ટનું નામ" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "અમાન્ય હોસ્ટનું નામ" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 #, fuzzy #| msgid "Documentation" msgid "Private repository" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 #, fuzzy #| msgid "Documentation" msgid "Name of the repository" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Setting unchanged" +msgid "Default branch" +msgstr "સેટિંગ યથાવત" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1842,11 +1996,6 @@ msgstr "" msgid "Edit repository" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1857,33 +2006,35 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "દસ્તાવેજીકરણ" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "માર્ગદર્શિકા" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1944,18 +2095,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2102,16 +2241,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -2136,21 +2275,21 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "એપ્લીકેશનને પ્રસ્થાપિત કરો" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2300,11 +2439,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2416,16 +2555,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2475,7 +2604,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2485,14 +2614,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2510,7 +2639,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2563,11 +2692,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 #, fuzzy #| msgid "Application installed." msgid "Public registration disabled" @@ -2692,12 +2821,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2738,7 +2867,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2747,19 +2876,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -3028,11 +3157,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -3060,7 +3189,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -3085,6 +3214,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service Type" +msgid "Services" +msgstr "સેવા પ્રકાર" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3097,56 +3232,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3154,186 +3289,193 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "માર્ગદર્શિકા" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, fuzzy, python-brace-format #| msgid "Direct connection to the Internet." msgid "Specify how your {box_name} is connected to your network" msgstr "ઇન્ટરનેટ સાથે સીધો જોડાણ." -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3341,7 +3483,7 @@ msgid "" "typical home setup.

" msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3350,7 +3492,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

" msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3358,11 +3500,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

" msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3373,7 +3515,7 @@ msgid "" "over time or not, it is safer to choose this option.

" msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3397,19 +3539,19 @@ msgid "" "workaround solutions but each solution has some limitations.

" msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "General Configuration" msgid "Preferred router configuration" msgstr "સામાન્ય ગોઠવણી" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3617,7 +3759,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3662,7 +3804,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3674,13 +3816,13 @@ msgstr "વાતચીત" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3721,6 +3863,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3860,71 +4003,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3939,16 +4082,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4004,11 +4147,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -4203,6 +4346,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 #, fuzzy #| msgid "System Configuration" @@ -4290,7 +4446,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4314,11 +4470,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4326,7 +4482,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4336,19 +4492,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4370,6 +4526,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4572,35 +4732,35 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Application disabled" msgid "Share disabled." msgstr "એપ્લિકેશન અક્ષમ છે" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4638,10 +4798,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4658,11 +4814,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4690,8 +4841,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4758,12 +4934,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -5032,8 +5208,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5149,7 +5325,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5194,7 +5370,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -5210,103 +5386,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5467,11 +5643,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5510,7 +5686,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5519,40 +5695,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5680,7 +5856,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "સેટિંગ યથાવત" @@ -5735,11 +5911,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5747,11 +5923,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -5767,6 +5943,23 @@ msgstr "એપ્લીકેશનને પ્રસ્થાપિત કર msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5784,54 +5977,77 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 #, fuzzy #| msgid "Last update" -msgid "Manual update" +msgid "Manual Update" msgstr "છેલ્લો સુધારો" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 #, fuzzy #| msgid "Update URL" msgid "Update now" msgstr "URL અપડેટ કરો" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5855,7 +6071,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5870,16 +6086,12 @@ msgstr "" msgid "Enter a valid username." msgstr "અમાન્ય સર્વર નામ" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5888,63 +6100,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -6071,7 +6283,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6197,7 +6409,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6224,7 +6436,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -6320,69 +6532,69 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "સેટઅપ અપડેટ કરો" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "" -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Conversations" msgid "Connection to Server" msgstr "વાતચીત" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "સેટઅપ અપડેટ કરો" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Error installing application: {error}" msgid "Modify Connection to Server" msgstr "એપ્લીકેશન પ્રસ્થાપિત કરતાં ભૂલ થઇ છે: {error}" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Direct connection to the Internet." msgid "Delete Connection to Server" msgstr "ઇન્ટરનેટ સાથે સીધો જોડાણ." -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "" @@ -6394,23 +6606,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6660,12 +6872,45 @@ msgstr "રૂપરેખાંકન" msgid "Port Forwarding" msgstr "રવાના કરવાની પ્રક્રિયા શરુ કરો" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"તમે તપાસી શકો છો નેટવર્ક સેટઅપ અને જો જરૂરી હોય " +"તો તેને સુધારો." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 @@ -6712,6 +6957,11 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Password" +#~ msgid "Upload Password" +#~ msgstr "પાસવર્ડ" + #~ msgid "Enable application" #~ msgstr "એપ્લીકેશનને પ્રસ્થાપિત કરો" diff --git a/plinth/locale/hi/LC_MESSAGES/django.po b/plinth/locale/hi/LC_MESSAGES/django.po index d73ff4368..97c0f1e77 100644 --- a/plinth/locale/hi/LC_MESSAGES/django.po +++ b/plinth/locale/hi/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2020-04-03 20:11+0000\n" "Last-Translator: Allan Nordhøy \n" "Language-Team: Hindi . सक्षम होने पर एजाबेरड कोई यूसर एक {box_name} " "लोगिन से उपयोग कर सकते हैं." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "एजाबेरड" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "चाट सर्वर" @@ -1597,11 +1741,11 @@ msgstr "" "एन्क्रिप्शन है. आप एक मौजूदा Google अकाउंट बना सकता है, एक्सएमपिपि सर्वर पर नया अकाउंट " "बना सकता है और अपने स्वयं सर्वर पर कनेक्ट कर सकता है." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "डिनो" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "गाजिम" @@ -1616,11 +1760,11 @@ msgstr "" "दिखेगा username@%(domainname)s. आपका डोमेन सिसटेम पर सेटअप कर सकता है कॉन्फ़िगर पेजॅ." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "संदेश संग्रह प्रबंधन सक्षम किया गया है" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "संदेश संग्रह प्रबंधन अक्षम किया गया है" @@ -1679,12 +1823,14 @@ msgstr "सर्विस/पोर्ट" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "सक्षम किया गया है" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "अक्षम किया गया है" @@ -1801,57 +1947,57 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository URL." msgstr "अमान्य होस्टनाम" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "अमान्य होस्टनाम" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 #, fuzzy #| msgid "Create User" msgid "Private repository" msgstr "यूसर बनाये" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 #, fuzzy #| msgid "A share with this name already exists." msgid "A repository with this name already exists." msgstr "इस नाम का एक शयर पहले से मौजूद है." -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 #, fuzzy #| msgid "Name of the share" msgid "Name of the repository" msgstr "शेयर का नाम" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 #, fuzzy #| msgid "" #| "A lowercase alpha-numeric string that uniquely identifies a share. " @@ -1861,6 +2007,16 @@ msgstr "" "कोई लोअरकेस अल्फ़ा-सांख्यिक स्ट्रिंग जो विशिष्ट रूप से एक शेयर की पहचान करता है. उदाहरण:" "media." +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default" +msgid "Default branch" +msgstr "डिफ़ॉल्ट" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1938,11 +2094,6 @@ msgstr "" msgid "Edit repository" msgstr "यूसर बनाये" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1953,33 +2104,35 @@ msgstr "{name} हटा गया है." msgid "Could not delete {name}: {error}" msgstr "{name} नहीं हटा गया है: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "प्रलेखन" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "मैन्युअल" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -2054,20 +2207,6 @@ msgstr "एक नया %(box_name)s संस्करण उपलब्ध msgid "%(box_name)s is up to date." msgstr "%(box_name)s उद्दिनांकित है." -#: plinth/modules/help/templates/help_about.html:79 -#, fuzzy -#| msgid "Security" -msgid "Security Notice" -msgstr "सुरक्षा" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2234,16 +2373,16 @@ msgid "" "before submitting the bug report." msgstr "बग रिपोर्ट सबमिट करने से पहले कोई पासवर्ड या दूसरे व्यक्तिगत जानकारी निकालें." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "प्रलेखन और एफ़एक्यू" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "{box_name} के बारे में" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} मैनुअल" @@ -2274,21 +2413,21 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "एप्लिकेशन सक्षम करें" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "गुमनामी नेटवर्क" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 #, fuzzy #| msgid "Web Proxy" msgid "I2P Proxy" @@ -2462,11 +2601,11 @@ msgstr "" "डाउनलोड और इंस्टॉल करें. फिर गोबी शुरु करें, \"सर्वर से कनेक्ट\" चुनें और {box_name} " "कर डोमेन नाम दर्ज करें." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "इन्फिनोटेड़" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "गोबी सर्वर" @@ -2588,16 +2727,6 @@ msgstr "कोई प्रमाणपत्र नहीं" msgid "Re-obtain" msgstr "री-ओबटैन" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "हटाईये" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "रीवोकॅ" @@ -2654,7 +2783,7 @@ msgstr "डोमेन के लिए प्रमाणपत्र का msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "डोमेन के लिए प्रमाणपत्र नहीं हटाया गया {domain}:{error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2669,17 +2798,22 @@ msgstr "" "मल्टीपल डिवाइस सिंक्रनाइज़इज़ाशिन और काम करने के लिए फोन नंबर की ज़रुरत नहीं है. मैट्रिक्स " "सर्वर पर यूसरसॅ सारे मैट्रिक्स सर्वर के लेग से बात कर सकते है फ़ेडरेशिन उपयोग कर." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 +#, fuzzy +#| msgid "" +#| "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" "संवाद करने के लिए, आप इससे उपयोग कर सकते है उपलब्ध क्लाइंटमोबाइल, डेस्कटॉप और वेब के लिए. रेइट क्लाइंट संस्तुत है." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "मैट्रिक्स सिनापसॅ" @@ -2698,8 +2832,8 @@ msgstr "" "सकता है, इसे अक्षम करें." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "रेइट" +msgid "Element" +msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2763,11 +2897,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "सार्वजनिक रजिस्टरेशिन सक्षम किया गया" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "सार्वजनिक रजिस्टरेशिन अक्षम किया गया" @@ -2897,12 +3031,12 @@ msgstr "" "{box_name} पर चल सकवाते है, डिफ़ॉल्ट पोर्ट (३००००) पर. सर्वर से कनेक्ट करने के लिए, एक " "मैइनटेस्ट क्लायंटकी आवश्यकता है." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "मैइनटेस्ट" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "ब्लॉक सेंडबोक्स" @@ -2945,7 +3079,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "अक्षम होने पर खिलाड़ियों नहीं मर सकते या किसी चोट लग सकते." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "ऍड्रेस" @@ -2954,19 +3088,19 @@ msgstr "ऍड्रेस" msgid "Port" msgstr "पोर्ट" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "अधिकतम खिलाड़ी कॉन्फ़िगरेशन अपडेट किया गया" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "क्रिएटिव मोड कॉन्फ़िगरेशन अपडेट किया गया" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "पिवीपि कॉन्फ़िगरेशन अपडेट किया गया" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "क्षति कॉन्फ़िगरेशन अपडेट किया गया" @@ -3261,11 +3395,11 @@ msgstr "" "mumble.info\">Clients अापके डेस्कटॉप और एंड्रॉयड डिवाइस से ममबल से कनेक्ट होने के " "लिए उपलब्ध हैं." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "ममबल" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "वॉयस चैट" @@ -3293,7 +3427,7 @@ msgstr "ममबलफ्लाई" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3320,6 +3454,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "सर्विस" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3332,38 +3472,38 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "नेटवर्क्‍स" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC आईपीवी पर उपयोग कर रहा है{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "कनेक्शन टाइप" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "कनेक्शन का नाम" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 #, fuzzy #| msgid "Interface" msgid "Network Interface" msgstr "इंटरफ़ेस" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "जो नेटवर्क डिवाइस जिस को इस कनेक्शन बाउंड होना चाहिए." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "फ़ायरवॉल ज़ोन" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3371,21 +3511,21 @@ msgstr "" "इस इंटरफ़ेस में फ़ायरवॉल ज़ोन हैं जिसको नियंत्रित करेगा कि कौन-सी सेवाएं उपलब्ध है. सिर्फ " "भरोसेमंद नेटवर्क्स के लिए आंतरिक चुनिये." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "बाहरी" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "आंतरिक" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "आईपीवी 4 एड्रेसिंग मेथड" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3396,19 +3536,26 @@ msgstr "" "\"शएरड\" मेथड {box_name} राउटर के रूप में कार्य करेगा, इस नेटवर्क पर क्लाइंटस कॉंफ़िगरे " "करेगा और इंटरनेट कनेक्शन साझा करेगा." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "ऑटोमैटिक(DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "साझा किया गया" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "मैन्युअल" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "नेटमॉस्क" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3416,21 +3563,21 @@ msgstr "" "वैकल्पिक मूल्य. अगर इससे छोड़ा जाता है, एक एड्रेस पर आधारित डिफ़ॉल्ट नेटमॉस्क उपयोग किया " "जाएगा." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "गेटवे" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "वैकल्पिक मूल्य." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "डीएनएस सर्वर" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3438,11 +3585,11 @@ msgstr "" "वैकल्पिक मूल्य. अगर यह मूल्य दिया जाता है और आइपीवी4 एड्रेसिंग मेथड \"ऑटोमैटिक\" है, तो " "DHCP सर्वर द्वारा प्रदान किए गए DNS सर्वरों नज़रअंदाज़ किया जाएगा." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "दूसरा DNS सर्वर" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3450,11 +3597,11 @@ msgstr "" "वैकल्पिक मूल्य. अगर यह मूल्य दिया जाता है और आइपीवी4 एड्रेसिंग मेथड \"ऑटोमैटिक\" है, तो " "DHCP सर्वर द्वारा प्रदान किए गए DNS सर्वरों नज़रअंदाज़ किया जाएगा." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "आइपीवी एड्रेसिंग मेथड" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3463,27 +3610,27 @@ msgstr "" "\"ऑटोमैटिक\" मेथडस {box_name} को इस नेटवर्क से कॉंफ़िगरेशन प्राप्त करना पडेगा और एक " "क्लाइंट बना देगी." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "ऑटोमैटिक" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "ऑटोमैटिक, सिर्फ DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "नज़रअंदाज़ करे" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "उपसर्ग" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "1 और १२८ के बीच एक मूल्य." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3491,7 +3638,7 @@ msgstr "" "वैकल्पिक मूल्य.अगर यह मूल्य दिया जाता है और आइपीवी6 एड्रेसिंग मेथड \"ऑटोमैटिक\" है, तो " "DHCP सर्वर द्वारा प्रदान किए गए DNS सर्वरों नज़रअंदाज़ किया जाएगा." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3499,54 +3646,54 @@ msgstr "" "वैकल्पिक मूल्य. अगर यह मूल्य दिया जाता है और आइपीवी6 एड्रेसिंग मेथड \"ऑटोमैटिक\" है, तो " "DHCP सर्वर द्वारा प्रदान किए गए DNS सर्वरों नज़रअंदाज़ किया जाएगा." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- चुनिये --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "एसएसआईडी" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "यह नेटवर्क का दृश्य नाम." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "मोड" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "इंफ्रास्ट्रक्चर" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "अभिगम केंद्र" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "एड-हॉक" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "फ्रीक्वेंसी बैंड" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "ए ( 5 जीएचज़ि)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "बी/जी (२.४ जीएचज़ि)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "चैनल" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3554,11 +3701,11 @@ msgstr "" "वैकल्पिक मूल्य. चुने हूआ फ्रीक्वेंसी बैंड में वायरलेस चैनल, प्रतिबंधित करने के लिये. रिक्त या 0 मूल्य " "का मतलब है ऑटोमैटिक चुनाव." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "बिएसएसआई़़डी" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3568,32 +3715,32 @@ msgstr "" "एक्सेस पॉइंट का BSSID प्रदान की गई से मैच करते है तो कनेक्ट करें. उदाहरण: 00:11:22:aa:bb:" "cc." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "प्रमाणीकरण मोड" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" "अगर वायरलेस नेटवर्क सुरक्षित है और क्लाइंट को कनेक्ट करने के लिए पासवर्ड ज़रुरत है WPA चुनिये." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "खुला" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, fuzzy, python-brace-format #| msgid "Use upstream bridges to connect to Tor network" msgid "Specify how your {box_name} is connected to your network" msgstr "अपस्ट्रीम ब्रिजस उपयोग करके टो नेटवर्क से कनेक्ट करें" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

Your {box_name} gets its " @@ -3601,7 +3748,7 @@ msgid "" "typical home setup.

" msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

Your {box_name} has " @@ -3610,7 +3757,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

" msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

Your Internet " @@ -3618,11 +3765,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

" msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

This means that devices on the Internet can reach you when you are " @@ -3633,7 +3780,7 @@ msgid "" "over time or not, it is safer to choose this option.

" msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

This means that " @@ -3657,19 +3804,19 @@ msgid "" "workaround solutions but each solution has some limitations.

" msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

You will be suggested the most conservative actions.

" msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "An error occurred during configuration." msgid "Preferred router configuration" msgstr "कॉंफ़िगरेशन के दौरान कूछ त्रुटि हुई." -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

" msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

" msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3883,7 +4030,7 @@ msgid "Create Connection" msgstr "कनेक्शन बनाएँ" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "कनेक्शन हटाएँ" @@ -3928,7 +4075,7 @@ msgid "Computer" msgstr "कंप्यूटर" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "कनेक्शन संपादित करें" @@ -3940,13 +4087,13 @@ msgstr "कनेक्शन" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "पास के वाई-फाई नेटवर्क" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "कनेक्शन जोड़ें" @@ -3987,6 +4134,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -4129,71 +4277,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "नेटवर्क कनेक्शन्स" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "कनेक्शन नहीं दिखा सकता: कनेक्शन से नहीं मिला." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "कनेक्शन के बारे में जानकारी" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "कनेक्शन नहीं संपादित कर सकता: कनेक्शन से नहीं मिला." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "इस प्रकार का कनेक्शन अभी समझ में नहीं आता." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "कनेक्शन सक्रिय है {name}." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "कनेक्शन सक्रिय करने में विफल: कनेक्शन नहीं मिला." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "कनेक्शन सक्रिय करने में विफल {name}: कोई उपयुक्त डिवाइस उपलब्ध नहीं है." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "निष्क्रिय कनेक्शन {name}." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "कनेक्शन को निष्क्रिय करने में विफल: कनेक्शन नहीं मिला." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "नया जेनेरिक कनेक्शन जोड़ रहा है" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "नया ईथरनेट कनेक्शन जोड़ रहा है" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "नया PPPoE कनेक्शन जोड़ रहा है" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "नया वाई-फाई कनेक्शन जोड़ रहा है" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "कनेक्शन {name} हटाया गया." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "कनेक्शन हटाने में विफल: कनेक्शन नहीं मिला." @@ -4213,16 +4361,16 @@ msgstr "" "आंतरिक सर्विसस उपयोग करने के लिये. आप बाकी सब इंटरनेट {box_name} के जरिए उपयोग कर " "सकते हैं अगर अापको और सुरक्षा और गुमनामी चाहिये." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "ओपन वीपीएन" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "वर्चुअल प्राइवेट नेटवर्क" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4297,11 +4445,11 @@ msgstr "प्रोफ़ाइल हर %(box_name)s यूसर के ल msgid "Download my profile" msgstr "मेरी प्रोफ़ाइल डाउनलोड करें" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "सेटअप पूरा हो गया." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "सेटअप विफल." @@ -4533,6 +4681,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4634,7 +4795,7 @@ msgstr "प्रिवोक्सी" msgid "Web Proxy" msgstr "वेब प्रॉक्सी" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "{url} ऐकसेस करें प्रॉक्सी लेकर {proxy} टीसीपी पर{kind}" @@ -4667,11 +4828,11 @@ msgstr "" "quasseldroid.iskrembilen.com/\"> मोबाइल से कनेक्ट होने के लिए क्लाइंट्स उपलब्ध " "हैं." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "क्वासेल" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "आईआरसी क्लाइंट" @@ -4679,7 +4840,7 @@ msgstr "आईआरसी क्लाइंट" msgid "Quasseldroid" msgstr "क्वासेलड्रोइड" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4698,19 +4859,19 @@ msgstr "" "org/clients/\">समर्थित क्लाइंट एप्लिकेशन कि जरुरत है. राडिकैल किसी {box_name} " "यूसर पहुंचा जा सकता है एक लॉगिन के साथ." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "राडिकैल" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "कैलेंडर और पता पुस्तिका" @@ -4735,6 +4896,12 @@ msgid "" msgstr "" "किसी यूसर {box_name} लॉगिन के साथ कैलेंडर/पता पुस्तिका को परिवर्तन देख या कर सकता है." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "अभिगम केंद्र" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4989,43 +5156,43 @@ msgstr "शेयर जोड़ा गया." msgid "Action" msgstr "एक्सआयन" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 #, fuzzy #| msgid "Add Share" msgid "Open Share" msgstr "शेयर जोड़ें" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 #, fuzzy #| msgid "Add Share" msgid "Group Share" msgstr "शेयर जोड़ें" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Homepage" msgid "Home Share" msgstr "होमपेज" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "शेयर हटाया गया." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "एेरर इजेक्टिग्न डिवाइस: {error_message}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "शेयर संपादित किया गया." -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" @@ -5067,10 +5234,6 @@ msgstr "सेफ खोज" msgid "Select the default family filter to apply to your search results." msgstr "अपने खोज परिणामों पर अप्लाई करने के लिए डिफ़ॉल्ट परिवार फ़िल्टर चूनिये." -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "कोई नहीं" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "मॉडरेट" @@ -5087,11 +5250,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "कॉन्फ़िगरेशन अपडेट किया." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "कंसोल लॉगिन प्रतिबंधित करें (संस्तुत)" @@ -5125,8 +5283,33 @@ msgstr "" msgid "Show security report" msgstr "सुरक्षा" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -5207,12 +5390,12 @@ msgstr "कोई नहीं" msgid "Not running" msgstr "टोर चल रहा है" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "त्रुटि सेटिंग एक्सेस प्रतिबंधित: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "सुरक्षा कॉंफ़िगरेशन अपडेट किया गया" @@ -5522,8 +5705,8 @@ msgstr "वार्षिक स्नैपशॉट्स सीमा" #| msgid "" #| "Keep a maximum of this many yearly snapshots. The default is 0 (disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "इस कई वार्षिक स्नैपशॉट की एक अधिकतम रखों. डिफ़ॉल्ट 0 है (अक्षम)." #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5645,7 +5828,7 @@ msgstr "" "स्वीकार करने के लिये. एक अधिकार दिया गया रिमोट कंप्यूटर प्रशासन कार्य निष्पादित कर " "सकता है, फ़ाइलों की कॉपी कर सकता है या ऐसे कनेक्शंस का उपयोग करके अंय सर्विसस चलाएे." -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "सुरक्षित शैल (SSH) सर्वर" @@ -5692,7 +5875,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "एकल साइन-ऑन" @@ -5708,90 +5891,90 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "स्टोरेज" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} बाइट्स" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} किब" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} मेब" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} जिब" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} टीब" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "ऑपरेशन अनुत्तीर्ण हो गया." -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "ऑपरेशन रद्द किया गया." -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "यह डिवाइस पहले से अनमाउट किया जा रहा है." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "यह ऑपरेशन अनुपलब्ध है क्यैकि ड्राइवर/उपकरण टूल समर्थित नहीं है." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "ऑपरेशन टाइम आउट हो गया." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "यह ऑपरेशन गहरी नींद की स्थिति का डिस्क को जाग जाएगा." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "व्यस्त डिवाइस को अनमाउंट करने का प्रयास कर रहा है." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "ऑपरेशन पहले से रद्द किया गया." -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "अनुरोधित ऑपरेशन करने के लिए अधिकृत नहीं है." -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "यह डिवाइस पहले से माउंट किया गया." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "यह डिवाइस नहीं माउंट किया गया." -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "अनुरोधित विकल्प का उपयोग करने की अनुमति नहीं है." -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "किसी और यूसर ने डिवाइस माउंट किया गया है." -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -5801,15 +5984,15 @@ msgstr "" "वार्निंग: सिस्टम पार्टीशन पर कम जगह ({percent_used}% उपयोग किया गया, " "{free_space} free)." -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6005,11 +6188,11 @@ msgstr "" "यह {box_name} एक स्टोरेज नोड आैर इंट्रोड्यूसर डिफ़ॉल्ट से होस्ट करता है. अतिरिक्त " "इंट्रोड्यूसरस जोड़ा जा सकता है, जो इस नोड को अन्य स्टोरेज नोड्स में पेश करेगा." -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "टाहो-एलएएफएस" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "फ़ाइल स्टोरेज वितरित" @@ -6052,7 +6235,7 @@ msgstr "कनेक्टेड इंट्रोड्यूसरस" msgid "Remove" msgstr "निकालें" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6065,42 +6248,42 @@ msgstr "" "टो प्रोजेक्ट सिफारिश की है कि आप टो ब्राउज़र उपयोग करें." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "टोर" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "टोर हिडन सर्विस" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "टोर सोक्स प्रॉक्सी" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "टो ब्रिज रीले" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "टोर रीले पोर्ट उपलब्ध है" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Obfs3 ट्रांसपोर्ट पंजीकृत" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Obfs4 ट्रांसपोर्ट पंजीकृत" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "यूआरएल एक्सेस करें {url} टीसीपी पर {kind} टोर के माध्यम से" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "टोर उपयोग की पुष्टि करें {url} पर टीसीपी पर {kind}" @@ -6253,7 +6436,7 @@ msgstr "सॉक्स" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "एक टोर सॉक्स पोर्ट आपका %(box_name)s र उपलब्ध है, TCP पोर्ट ९०५० पर." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "सेटिंग स्थिर है" @@ -6322,11 +6505,11 @@ msgstr "समाचार फ़ीड रीडर" msgid "Tiny Tiny RSS (Fork)" msgstr "टैनी टैनी आरएसएस (फोर्क)" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6334,11 +6517,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "अपडेट" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6354,6 +6537,23 @@ msgstr "ऑटोमेटिक अपग्रेडस सक्षम कर msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s is up to date." @@ -6372,23 +6572,42 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 #, fuzzy #| msgid "Last update" -msgid "Manual update" +msgid "Manual Update" msgstr "अंतिम अपडेट" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 #, fuzzy #| msgid "Update" msgid "Update now" msgstr "अपडेट" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 #, fuzzy #| msgid "" #| "Depending on the number of packages to install, this may take a long time " @@ -6404,31 +6623,35 @@ msgstr "" "जब अपग्रेडस प्रगति पर हैं, दुसरे पैकेजस इंस्टॉल नहीं कर सकेगा. अपग्रेड करते समय, यह वेब इंटरफ़ेस " "शयद अस्थायी रूप से अनुपलब्ध है और एक त्रुटि दिखाएे. जारी रखने के लिए पेज रिफ्रेश करें." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "अनअटेंडेड-अपग्रेडस कॉन्फ़िगर करते समय त्रुटि: {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "ऑटोमेटिक अपग्रेडस सक्षम किया गया" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "ऑटोमेटिक अपग्रेडस अक्षम किया गया" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "अपग्रेड प्रक्रिया शुरू हुई." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "अपग्रेड प्रारंभ करना विफल रहा." +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6452,7 +6675,7 @@ msgstr "यूसरस और समूह" msgid "Access to all services and system settings" msgstr "सब सर्विसस और सिस्टम सेटिंग्स तक पहुंच" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "एलडीएपी प्रविष्टि चेक करें \"{search_item}\"" @@ -6467,16 +6690,12 @@ msgstr "यूसरनाम लिया है या आरक्षित msgid "Enter a valid username." msgstr "सर्वर नाम अमान्य है" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "अनुमतियाँ" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6496,20 +6715,20 @@ msgstr "" "

एडमिन ग्रुप के यूसरस सब सर्विसस पर लॉग इन कर सकेगें. SSH के माध्यम से भी " "सिस्टम पर लॉग इन कर सकते है अाैर उनको प्रशासनिक विशेषाधिकार (sudo) है." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "एलडीएपी यूसर बनाना विफल रहा." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "{group} समूह में नया यूसर जोड़ने में विफल." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6519,45 +6738,45 @@ msgstr "" "बिना सिस्टम में प्रवेश करने की अनुमति देगा. आप एकाधिक कीज़ दर्ज कर सकते हैं, हर लाइन रक " "एक. खाली लाइनस या # से प्रारंभ होने वाले लाइनस अनदेखा कर दिया जाएगा." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "एलडीएपी यूसर का नाम बदलना विफल रहा." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "समूह से यूसर को हटाने में विफल." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "समूह से यूसर को जोड़ने में विफल." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "एसएसएच कीज़ सेट करने में असमर्थ." -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "समूह से यूसर को जोड़ने में विफल." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "सिस्टम में केवल व्यवस्थापक को नहीं हटा सकता." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "एलडीएपी यूसर का पासवर्ड बदलना विफल रहा." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "व्यवस्थापक समूह में नया यूसर जोड़ने में विफल." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "कंसोल एक्सेस प्रतिबंधित करने में विफल." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "युसर अकाउंट बनाया, अब आप लॉगड इन हैं" @@ -6689,7 +6908,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6824,7 +7043,7 @@ msgid "Add a new peer" msgstr "नया इंट्रोड्यूसर जोड़ें" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6855,7 +7074,7 @@ msgid "Add a new server" msgstr "नया इंट्रोड्यूसर जोड़ें" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" msgid "Add Connection to Server" @@ -6957,83 +7176,83 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 #, fuzzy #| msgid "Add new introducer" msgid "Added new client." msgstr "नया इंट्रोड्यूसर जोड़ें" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy #| msgid "A share with this name already exists." msgid "Client with public key already exists" msgstr "इस नाम का एक शयर पहले से मौजूद है." -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 #, fuzzy #| msgid "Email Client" msgid "Allowed Client" msgstr "ईमेल क्लाइंट" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "सेटअप अपडेट" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy #| msgid "Email Client" msgid "Modify Client" msgstr "ईमेल क्लाइंट" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 #, fuzzy #| msgid "Delete All" msgid "Delete Allowed Client" msgstr "सब को हटाएँ" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "Archive deleted." msgid "Client deleted." msgstr "पुरालेख हटा गया है." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added custom service" msgid "Added new server." msgstr "जोड़ा गया कस्टम सर्विस" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "कनेक्शन टाइप" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "सेटअप अपडेट" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Edit Connection" msgid "Modify Connection to Server" msgstr "कनेक्शन संपादित करें" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "कनेक्शन हटाएँ" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "Share deleted." msgid "Server deleted." @@ -7047,23 +7266,23 @@ msgstr "पीपीपीअोइ" msgid "Generic" msgstr "जेनेरिक" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "इंस्टालेशन करते समय पर त्रुटि" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "इंस्टॉलिंग" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "डाउनलोडिंग" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "मीडिया बदलाव" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "कॉंफ़िगरेशन फ़ाइल: {file}" @@ -7336,14 +7555,50 @@ msgstr "कोई प्रमाणपत्र नहीं" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"आप नेटवर्क सेटअप जांचना चाह सकते है और अगर जरुरत " +"हू, इससे बदलें." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." msgstr "" +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "प्रोटोकॉल" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "%(box_name)s सेटअप" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "यह एप्लिकेशन इंस्टॉल करें?" @@ -7389,6 +7644,87 @@ msgstr "%(percentage)s%% पूर्ण" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports activated." +#~ msgstr "बैकअप" + +#, fuzzy +#~| msgid "" +#~| "Coquelicot is a “one-click” file sharing web application with a focus on " +#~| "protecting users’ privacy. It is best used for quickly sharing a single " +#~| "file. " +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "कोकेलिकॉट एक \"एक-क्लिक\" फ़ाइल शेयरइंग वेब एप्लिकेशन है जिसमे एकांत पर फोकस है. यह " +#~ "जल्दी से एक फ़ाइल साझा करने में सबसे अच्छा है. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "यह कोकेलिकॉट उदाहरण लोग से दिखाया गाया है लेकिन एक पासवर्ड अपलोड का ज़रुरत है " +#~ "ताकि अनजान लोग नहीं पहुंचेगें. स्थापना के बाद आप वो नया पासवर्ड सेट कर सकते है जो नीचे " +#~ "दिखाई देगा. डिफ़ॉल्ट पासवर्ड अपलोड एक परीक्षा है." + +#~ msgid "Coquelicot" +#~ msgstr "कोकेलिकॉट" + +#~ msgid "Upload Password" +#~ msgstr "पासवर्ड अपलोड" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "कोकेलिकॉट के लिये एक नया पासवर्ड अपलोड सेट करें. वर्तमान पासवर्ड रखने के लिये यह खाली " +#~ "चोड़िये." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "आधिकतम फ़ाइल आकार (एमआईबी में)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "आधिकतम फ़ाइल आकार सेट करें, जिसे कोकेलिकॉट पर अपलोड कर सकते है." + +#~ msgid "coquelicot" +#~ msgstr "कोकेलिकॉट" + +#~ msgid "Upload password updated" +#~ msgstr "अपलोड पासवर्ड अद्यतन किया गया" + +#~ msgid "Failed to update upload password" +#~ msgstr "पासवर्ड अपलोड अद्यतन नहीं किया गया था" + +#~ msgid "Maximum file size updated" +#~ msgstr "अधिकतम फ़ाइल आकार अद्यतन किया गया" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "अधिकतम फ़ाइल आकार नहीं अद्यतन किया गया" + +#~ msgid "Riot" +#~ msgstr "रेइट" + +#, fuzzy +#~| msgid "Security" +#~ msgid "Security Notice" +#~ msgstr "सुरक्षा" + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "बैकअप" + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "सक्रिय" + #, fuzzy #~| msgid "reStore" #~ msgid "Restoring" @@ -7682,9 +8018,6 @@ msgstr "" #~ msgid "Manage" #~ msgstr "प्रबंध" -#~ msgid "Create" -#~ msgstr "बनाइये" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "आपका {box_name} के साथ आपको प्राप्त वाउचर डेंयूब एडिशन" @@ -8068,11 +8401,6 @@ msgstr "" #~ msgid "Disk or removable storage where the backup archive will be saved." #~ msgstr "इस सर्वर पर उस फ़ोल्डर का डिस्क पाथ है जहां संग्रह निकाला जाएगा." -#, fuzzy -#~| msgid "Backups" -#~ msgid "Backup archives" -#~ msgstr "बैकअप" - #~ msgid "Export" #~ msgstr "निर्यात" diff --git a/plinth/locale/hu/LC_MESSAGES/django.po b/plinth/locale/hu/LC_MESSAGES/django.po index 6e539c163..620bdd03f 100644 --- a/plinth/locale/hu/LC_MESSAGES/django.po +++ b/plinth/locale/hu/LC_MESSAGES/django.po @@ -7,23 +7,23 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: 2020-05-29 18:41+0000\n" -"Last-Translator: Allan Nordhøy \n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-07-20 02:41+0000\n" +"Last-Translator: Doma Gergő \n" "Language-Team: Hungarian \n" +"freedombox/hu/>\n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.1-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" msgstr "Oldal forrása" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "FreedomBox" @@ -136,11 +136,11 @@ msgstr "Szolgáltatásfelderítés" msgid "Local Network Domain" msgstr "Helyi hálózati domain" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "Lehetővé teszi a biztonsági másolatok létrehozását és kezelését." -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "Biztonsági másolatok" @@ -149,6 +149,12 @@ msgstr "Biztonsági másolatok" msgid "{app} (No data to backup)" msgstr "{app} (Nincs mit menteni)" +#: plinth/modules/backups/forms.py:50 +#, fuzzy +#| msgid "Create Repository" +msgid "Repository" +msgstr "Tároló létrehozása" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -158,10 +164,8 @@ msgid "Name" msgstr "Név" #: plinth/modules/backups/forms.py:53 -#, fuzzy -#| msgid "Name for new backup archive." msgid "(Optional) Set a name for this backup archive" -msgstr "Az új biztonsági másolat neve." +msgstr "(Opcionális) Név beállítása ehhez a biztonsági másolathoz" #: plinth/modules/backups/forms.py:56 msgid "Included apps" @@ -218,7 +222,17 @@ msgstr "" "A \"Kulcs a tárolóban\" azt jelenti, hogy a jelszóval védett kulcs a " "biztonsági mentéssel együtt van tárolva." -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +#, fuzzy +#| msgid "Create Repository" +msgid "Key in Repository" +msgstr "Tároló létrehozása" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "Nincs" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "Jelszó" @@ -393,6 +407,7 @@ msgid "Delete Archive %(name)s" msgstr "%(name)s archívum törlése" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -403,32 +418,26 @@ msgid "Submit" msgstr "Küldés" #: plinth/modules/backups/templates/backups_repository.html:19 -#, fuzzy -#| msgid "Existing repository is not encrypted." msgid "This repository is encrypted" -msgstr "A meglévő tároló nem titkosított." +msgstr "Ez a tároló titkosított" #: plinth/modules/backups/templates/backups_repository.html:34 -#, fuzzy -#| msgid "Remove Location" msgid "Unmount Location" -msgstr "Hely eltávolítása" +msgstr "Hely lecsatolása" #: plinth/modules/backups/templates/backups_repository.html:45 -#, fuzzy -#| msgid "Mount Point" msgid "Mount Location" -msgstr "Csatolási pont" +msgstr "Hely felcsatolása" #: plinth/modules/backups/templates/backups_repository.html:56 msgid "Remove Backup Location. This will not delete the remote backup." msgstr "" +"Biztonsági mentési hely eltávolítása. Ez nem fogja kitörölni a távoli " +"biztonsági másolatot." #: plinth/modules/backups/templates/backups_repository.html:77 -#, fuzzy -#| msgid "downloading" msgid "Download" -msgstr "letöltés" +msgstr "Letöltés" #: plinth/modules/backups/templates/backups_repository.html:81 #: plinth/modules/backups/templates/backups_restore.html:27 @@ -622,6 +631,182 @@ msgstr "Lecsatolás sikertelen!" msgid "Mounting failed" msgstr "Felcsatolás sikertelen" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +#, fuzzy +#| msgid "Restore from uploaded file" +msgid "Create or upload files" +msgstr "Visszaállítás a feltöltött fájlból" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +#, fuzzy +#| msgid "Delete User" +msgid "Delete files" +msgstr "Felhasználó törlése" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +#, fuzzy +#| msgid "File Sharing" +msgid "File & Snippet Sharing" +msgstr "Fájlmegosztás" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "Engedélyek" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +#, fuzzy +#| msgid "Change Password" +msgid "Manage Passwords" +msgstr "Jelszómódosítás" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +#, fuzzy +#| msgid "Show password" +msgid "Add password" +msgstr "Jelszó mutatása" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +#, fuzzy +#| msgid "No shares currently configured." +msgid "No passwords currently configured." +msgstr "Jelenleg nincs beállított megosztás." + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "Jelszó" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "Létrehoz" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "Törlés" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "Beállítások frissítve." + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "Hiba történt a beállítás közben." + +#: plinth/modules/bepasty/views.py:97 +#, fuzzy +#| msgid "Password updated" +msgid "Password added." +msgstr "Jelszó frissítve" + +#: plinth/modules/bepasty/views.py:102 +#, fuzzy +#| msgid "Password" +msgid "Add Password" +msgstr "Jelszó" + +#: plinth/modules/bepasty/views.py:119 +#, fuzzy +#| msgid "Password updated" +msgid "Password deleted." +msgstr "Jelszó frissítve" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -642,11 +827,11 @@ msgstr "" "a helyi hálózaton lévő egyéb gépek DNS lekérdezéseit. Továbbá ez nem " "kompatibilis az {box_name} eszközről történő internet megosztással." -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "Tartománynév-kiszolgáló (DNS)" @@ -670,44 +855,37 @@ msgid "Enable Domain Name System Security Extensions" msgstr "Domain Name System Security Extensions engedélyezése" #: plinth/modules/bind/templates/bind.html:11 -#, fuzzy -#| msgid "Server domain" msgid "Serving Domains" -msgstr "Kiszolgáló domain" +msgstr "Kiszolgált tartományok" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" msgstr "Típus" #: plinth/modules/bind/templates/bind.html:17 -#, fuzzy -#| msgid "Domain Name" msgid "Domain Names" -msgstr "Domain név" +msgstr "Tartománynevek" #: plinth/modules/bind/templates/bind.html:18 -#, fuzzy -#| msgid "Service" msgid "Serving" -msgstr "Szolgáltatás" +msgstr "Kiszolgálás" #: plinth/modules/bind/templates/bind.html:19 -#, fuzzy -#| msgid "IP address" msgid "IP addresses" -msgstr "IP cím" +msgstr "IP címek" #: plinth/modules/bind/templates/bind.html:35 #: plinth/modules/bind/templates/bind.html:37 msgid "Refresh IP address and domains" -msgstr "" +msgstr "IP címek és tartományok frissítése" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -733,6 +911,10 @@ msgid "" "firewall ports and advanced networking such as bonding, bridging and VLAN " "management." msgstr "" +"A Cockpit fejlett tárolási műveletek elvégzésére használható, úgy mint lemez " +"particionálás és RAID kezelés. Továbbá felhasználható egyedi tűzfalportok " +"nyitására és olyan fejlett hálózati funkciókhoz mint az aggregált " +"interfészek, hidalás és VLAN kezelés." #: plinth/modules/cockpit/__init__.py:43 #, python-brace-format @@ -791,12 +973,13 @@ msgid "Configure" msgstr "Beállítások" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "Domain név" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "Érvénytelen domain név" @@ -871,7 +1054,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "Haladó szintű alkalmazások és funkciók mutatása" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "Több műszaki ismeretet igénylő alkalmazások és funkciók megjelenítése." @@ -915,79 +1098,6 @@ msgstr "Haladó szintű alkalmazások és funkciók megjelenítése" msgid "Hiding advanced apps and features" msgstr "Haladó szintű alkalmazások és funkciók elrejtése" -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" -"A Coquelicot egy „egy-kattintásos” fájlmegosztó webes alkalmazás, amely a " -"felhasználó magánszférájának védelmére koncentrál. Egy fájl gyors " -"megosztására használható a legjobban. " - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" -"A Coquelicot ezen példánya a nyilvánosságnak van kitéve, de feltöltési " -"jelszót követel, hogy megakadályozza az illetéktelen hozzáférést. Új " -"feltöltési jelszót tudsz beállítani azon az űrlapon, ami lentebb fog " -"megjelenni a telepítés után. Az alapértelmezett feltöltési jelszó \"test" -"\" (idézőjelek nélkül)." - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "Coquelicot" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "Fájlmegosztás" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "Feltöltési jelszó" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" -"Állíts be új feltöltési jelszót a Coquelicot számára. Ha szeretnéd " -"megtartani a jelenlegi jelszót, hagyd üresen ezt a mezőt." - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "" -"Maximális fájlméret (MiB, azaz Mebibájtban; 1MiB = 1024 KiB = 1024*1024 B)" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" -"Állítsd be a maximális fájlméretet ami még feltölthető a Coquelicot-ra." - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "coquelicot" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "Feltöltési jelszó frissítve" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "Feltöltési jelszó frissítése sikertelen" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "Maximális fájlméret frissítve" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "Maximális fájlméret frissítése sikertelen" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -995,42 +1105,49 @@ msgid "" "other communication servers can use it to establish a call between parties " "who are otherwise unable connect to each other." msgstr "" +"A Coturn egy olyan kiszolgáló, amely elősegíti a hang/videohívásokat és " +"konferenciákat a TURN és STUN protokollok megvalósításával. A WebRTC, SIP és " +"egyéb kommunikációs kiszolgálók arra tudják használni, hogy hívást tudjanak " +"felépíteni olyan felek között, akik egyébként nem tudnak csatlakozni " +"egymáshoz." #: plinth/modules/coturn/__init__.py:35 msgid "" "It is not meant to be used directly by users. Servers such as matrix-synapse " "need to be configured with the details provided here." msgstr "" +"Ezt nem a felhasználók általi közvetlen használatra szánták. Az olyan " +"kiszolgálók, mint a matrix-synapse, az itt megadott részletekkel kell " +"konfigurálni." -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" -msgstr "" +msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" -msgstr "" +msgstr "VoIP Segéd" #: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 -#, fuzzy -#| msgid "Subdomain" msgid "TLS domain" -msgstr "Aldomain" +msgstr "TLS tartomány" #: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." msgstr "" +"Válasszon ki egy tartományt, amelyhez a TLS-t használni szeretné. Ha ez a " +"lista üres, konfiguráljon legalább egy tanúsítványt is tartalmazó tartományt." #: plinth/modules/coturn/templates/coturn.html:15 msgid "Use the following URLs to configure your communication server:" msgstr "" +"A kommunikációs kiszolgáló konfigurálásához használja az alábbi URL-címeket:" #: plinth/modules/coturn/templates/coturn.html:26 -#, fuzzy -#| msgid "The following storage devices are in use:" msgid "Use the following shared authentication secret:" -msgstr "A következő tárolóeszközök vannak használatban:" +msgstr "Használja az alábbi megosztott hitelesítési titkos kulcsot:" #: plinth/modules/datetime/__init__.py:25 msgid "" @@ -1044,7 +1161,7 @@ msgstr "" msgid "Date & Time" msgstr "Dátum és idő" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "Az idő szinkronizálva van az NTP kiszolgálóhoz" @@ -1107,7 +1224,7 @@ msgstr "Letöltési könyvtár" msgid "Bittorrent client written in Python/PyGTK" msgstr "Bittorrent kliens amit Python/PyGTK programozási nyelven írtak" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1116,10 +1233,26 @@ msgstr "" "annak megerősítésére, hogy az alkalmazások és a szolgáltatások az elvárt " "módon működnek." -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "Hibaellenőrzés" +#: plinth/modules/diagnostics/__init__.py:102 +#, fuzzy +#| msgid "Quassel" +msgid "passed" +msgstr "Quassel" + +#: plinth/modules/diagnostics/__init__.py:103 +#, fuzzy +#| msgid "Setup failed." +msgid "failed" +msgstr "Beállítás sikertelen." + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1266,7 +1399,7 @@ msgstr "Dinamikus DNS ügyfél" msgid "Dynamic Domain Name" msgstr "Dinamikus Domain név" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1276,7 +1409,7 @@ msgstr "" "használhatók az URL-ben. Részletekért tekintsd meg a példa szolgáltatók " "frissítési URL sablonjait." -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1286,7 +1419,7 @@ msgstr "" "protokollt. Ha nem támogatja a GnuDIP-et, vagy nem található a listán, akkor " "használhatod a szolgáltató frissítési URL-jét." -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1294,20 +1427,20 @@ msgstr "" "Kérlek ide ne írj be URL-t (mint pl. „https://example.com/”), csak a GnuDIP " "kiszolgáló állomásnevét (mint pl. „example.com”)." -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" "A nyilvános domain név, amellyel el szeretnéd érni a te {box_name} " "eszközödet." -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Használd ezt az opciót, ha a szolgáltatód saját aláírású (self signed) " "tanúsítványokat használ." -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1315,12 +1448,12 @@ msgstr "" "Ha ez az opció ki van választva, a te felhasználóneved és jelszavad lesz " "használva HTTP alap hitelesítéshez." -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "" "Hagyd ezt a mezőt üresen, ha szeretnéd megtartani a jelenlegi jelszavad." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1334,68 +1467,74 @@ msgstr "" "egyszerűen visszaadja a kliens IP címét (például: http://myip.datasystems24." "de)." -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "A felhasználónév, amely a fiók létrehozása során lett megadva." +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +#, fuzzy +#| msgid "Update URL" +msgid "other update URL" +msgstr "Frissítési URL" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "Dynamic DNS engedélyezése" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "Szolgáltatás típusa" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "GnuDIP kiszolgáló címe" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "Érvénytelen kiszolgálónév" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "Frissítési URL" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "Minden SSL tanúsítvány elfogadása" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "HTTP alap hitelesítés használata" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "Felhasználónév" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "Jelszó" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "Jelszó mutatása" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "URL a nyilvános IP cím felderítéséhez" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Kérlek adj meg egy frissítési URL-t vagy egy GnuDIP kiszolgáló címet" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "Kérlek add meg a GnuDIP felhasználónevet" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "Kérlek add meg a GnuDIP domain nevet" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "Kérlek add meg a jelszót" @@ -1468,7 +1607,7 @@ msgstr "" msgid "Last update" msgstr "Legutolsó frissítés" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Leírás" @@ -1517,12 +1656,12 @@ msgstr "" "bármely felhasználó számára {box_name} " "felhasználónéven." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Chat szerver" @@ -1581,11 +1720,11 @@ msgstr "" "Tor-on keresztül is), sőt még akár a saját kiszolgálódhoz is kapcsolódhatsz " "az extra biztonság érdekében." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "Gajim" @@ -1600,11 +1739,11 @@ msgstr "" "így fognak kinézni: username@%(domainname)s. Beállíthatod a " "rendszered domain nevét a Beállítások lapon." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "Üzenetarchívum kezelése engedélyezve" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "Üzenetarchívum kezelése letiltva" @@ -1662,12 +1801,14 @@ msgstr "Szolgáltatás/port" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Engedélyezve" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Letiltva" @@ -1701,13 +1842,15 @@ msgstr "" #: plinth/modules/networks/templates/networks_configuration.html:49 #: plinth/modules/storage/templates/storage.html:94 msgid "Advanced" -msgstr "" +msgstr "Fejlett" #: plinth/modules/firewall/templates/firewall.html:98 msgid "" "Advanced firewall operations such as opening custom ports are provided by " "the Cockpit app." msgstr "" +"Fejlett tűzfal műveleteket, mint például egyedi portok megnyitását a Cockpit alkalmazás biztosítja." #: plinth/modules/first_boot/forms.py:14 #, python-brace-format @@ -1793,53 +1936,63 @@ msgstr "Gitweb" msgid "Simple Git Hosting" msgstr "Egyszerű Git hoszting" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "Érvénytelen tároló URL." -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "Érvénytelen tárolónév." -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "Az új tároló neve vagy URL egy már létező tároló importálásához." -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "Tároló leírása" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "Opcionális, a Gitweb-en történő megjelenítéshez." -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Tároló tulajdonosának a neve" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "Privát tároló" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" "Lehetővé teszi hogy csak az arra jogosult felhasználók férjenek hozzá ehhez " "a tárolóhoz." -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "Már létezik ilyen nevű tároló." -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "Tároló neve" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" "Olyan betűkből és számokból álló szöveg ami egyedien azonosítja a tárolót." +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default Skin" +msgid "Default branch" +msgstr "Alapértelmezett felszín" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "Git" @@ -1863,8 +2016,6 @@ msgid "Delete repository %(repo.name)s" msgstr "%(repo.name)s tároló törlése" #: plinth/modules/gitweb/templates/gitweb_configure.html:68 -#, fuzzy -#| msgid "Cloning..." msgid "Cloning…" msgstr "Klónozás…" @@ -1904,11 +2055,6 @@ msgstr "Tároló szerkesztve." msgid "Edit repository" msgstr "Tároló szerkesztése" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "Hiba történt a beállítás közben." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1919,33 +2065,35 @@ msgstr "{name} törölve." msgid "Could not delete {name}: {error}" msgstr "{name} nem törölhető: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentáció" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Kézikönyv" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Támogatás kérése" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Visszajelzés küldése" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "Hozzájárulás" @@ -2028,22 +2176,6 @@ msgstr "Új %(box_name)s verzió hozzáférhető." msgid "%(box_name)s is up to date." msgstr "A %(box_name)s naprakész." -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "Biztonsági értesítés" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" -"A Debian backports csomagjait használja. Felhívjuk figyelmét, hogy ezek a " -"csomagok nem kapnak biztonsági támogatást a Debian-tól. A Debian és a " -"FreedomBox közösség közreműködői azonban minden erőfeszítéssel fenntartják " -"őket." - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2079,6 +2211,13 @@ msgid "" "throughout the world. The FreedomBox Foundation would not exist without its " "supporters." msgstr "" +"A projektet pénzügyileg is segítheti, ha a FreedomBox Foundation-nak adományoz. A 2011-ben " +"alapított FreedomBox Foundation egy New York-i székhelyű, 501(c)(3) státuszú " +"non-profit szervezet, amely a FreedomBox támogatására szolgál. Technikai " +"infrastruktúrát és jogi szolgáltatásokat nyújt a projekthez, partnerségeket " +"köt, és támogatja a FreedomBox-ot az egész világon. A FreedomBox Foundation " +"nem létezhetne a támogatói nélkül." #: plinth/modules/help/templates/help_contribute.html:42 #: plinth/modules/power/templates/power_restart.html:27 @@ -2090,7 +2229,7 @@ msgstr "Bővebben..." #: plinth/modules/help/templates/help_feedback.html:12 #, python-format msgid "Your feedback will help us improve %(box_name)s!" -msgstr "" +msgstr "A visszajelzése elősegíti a %(box_name)s továbbfejlesztését!" #: plinth/modules/help/templates/help_feedback.html:18 msgid "" @@ -2098,6 +2237,9 @@ msgid "" "improve them on our discussion forum." msgstr "" +"Tudassa velünk a hiányzó funkciókat, a kedvenc alkalmazásait, és azt hogy " +"hogyan fejleszthetnénk őket a vitafórumunkon." #: plinth/modules/help/templates/help_feedback.html:26 msgid "" @@ -2106,10 +2248,16 @@ msgid "" "tracker to let our developers know. To report, first check if the issue " "is already reported and then use the \"New issue\" button." msgstr "" +"Ha bármilyen hibát vagy problémát talál, kérjük használja a hibabejelentőt, hogy tudathassa azt fejlesztőinkkel " +"(angolul). A jelentéskor először ellenőrizze, hogy a problémát már " +"jelentették-e, és amennyiben nem akkor használja a „New issue” (Új probléma) " +"gombot." #: plinth/modules/help/templates/help_feedback.html:36 msgid "Thank you!" -msgstr "" +msgstr "Köszönjük!" #: plinth/modules/help/templates/help_index.html:12 #: plinth/templates/help-menu.html:8 plinth/templates/help-menu.html:13 @@ -2162,10 +2310,8 @@ msgstr "" "csatornán az IRC webes felületét használva." #: plinth/modules/help/templates/help_manual.html:25 -#, fuzzy -#| msgid "Download" msgid "Download as PDF" -msgstr "Letöltés" +msgstr "Letöltés PDF-ként" #: plinth/modules/help/templates/help_support.html:12 #, python-format @@ -2174,12 +2320,17 @@ msgid "" "using %(box_name)s, you can ask for help from our community of users and " "contributors." msgstr "" +"Ha segítségre van szüksége a %(box_name)s használatával kapcsolatos " +"problémák megoldásához, akkor a felhasználóink és közreműködőink " +"közösségétől kérhet segítséget." #: plinth/modules/help/templates/help_support.html:20 msgid "" "Search for past discussions or post a new query on our discussion forum." msgstr "" +"Keressen korábbi beszélgetéseket, vagy tegyen közzé egy új hozzászólást a vitafórumunkon." #: plinth/modules/help/templates/help_support.html:27 msgid "" @@ -2188,28 +2339,27 @@ msgid "" "Or send an email to our mailing list." msgstr "" +"IRC és Matrix csatornáinkon (áthidalt) is cseveghet velünk:

    " +"
  • #freedombox az irc.oftc.net-en
  • #freedombox:matrix.org
  • Vagy küldjön egy e-mailt a levelezési listánkra." #: plinth/modules/help/templates/statuslog.html:10 msgid "Status Log" msgstr "Állapotnapló" #: plinth/modules/help/templates/statuslog.html:13 -#, fuzzy, python-format -#| msgid "" -#| "These are the last %(num_lines)s lines of the status log for this web " -#| "interface. If you want to report a bug, please use the bug tracker and " -#| "attach this status log to the bug report." +#, python-format msgid "" "These are the last %(num_lines)s lines of the status log for this web " "interface. If you want to report a bug, please use the bug tracker and " "attach this status log to the bug report." msgstr "" -"A webes felülethez tartozó állapotnapló utolsó %(num_lines)s sorát látod. Ha " -"szeretnél hibát bejelenteni, kérlek használd a hibabejelentőt és mellékeld " -"ezt az állapotnaplót a bejelentéshez." +"A webes felülethez tartozó állapotnapló utolsó %(num_lines)s sorát láthatja. " +"Ha szeretne hibát bejelenteni, kérjük használja a hibabejelentőt és " +"mellékelje ezt az állapotnaplót a bejelentéshez." #: plinth/modules/help/templates/statuslog.html:24 msgid "" @@ -2219,16 +2369,16 @@ msgstr "" "Kérlek távolíts el minden jelszót és személyes információt a naplóból " "mielőtt elküldenéd a bejelentést." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "Dokumentáció és GYIK" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "A {box_name} projektről" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} kézikönyv" @@ -2261,23 +2411,21 @@ msgstr "" "Az első látogatás a megadott webes felületen elindítja a konfigurálási " "folyamatot." -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "I2P alkalmazás kezelése" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "Anonim hálózat" -#: plinth/modules/i2p/__init__.py:88 -#, fuzzy -#| msgid "Web Proxy" +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" -msgstr "Web proxy" +msgstr "I2P proxy" #: plinth/modules/i2p/templates/i2p.html:12 msgid "I2P Proxies and Tunnels" @@ -2321,13 +2469,6 @@ msgstr "" "megosztásához." #: plinth/modules/ikiwiki/__init__.py:27 -#, fuzzy -#| msgid "" -#| "ikiwiki is a simple wiki and blog application. It supports several " -#| "lightweight markup languages, including Markdown, and common blogging " -#| "functionality such as comments and RSS feeds. When enabled, the blogs and " -#| "wikis will be available at /ikiwiki (once " -#| "created)." msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2335,9 +2476,7 @@ msgid "" msgstr "" "ikiwiki egy egyszerű wiki és blog alkalmazás. Számos könnyűsúlyú " "leírónyelvet támogat, beleértve a Markdown-t és olyan általános bloggolási " -"funkciókat, mint például a kommentek és az RSS-hírcsatornák. Ha " -"engedélyezett, a blogok és wikik itt lesznek elérhetők: /ikiwiki (ha már létre lett hozva)." +"funkciókat, mint például a kommentek és az RSS-hírcsatornák." #: plinth/modules/ikiwiki/__init__.py:31 #, python-brace-format @@ -2431,16 +2570,14 @@ msgid "Could not create blog: {error}" msgstr "Nem tudtam létrehozni a blog-ot: {error}" #: plinth/modules/ikiwiki/views.py:101 -#, fuzzy, python-brace-format -#| msgid "{name} deleted." +#, python-brace-format msgid "{title} deleted." -msgstr "{name} törölve." +msgstr "{title} törölve." #: plinth/modules/ikiwiki/views.py:105 -#, fuzzy, python-brace-format -#| msgid "Could not delete {name}: {error}" +#, python-brace-format msgid "Could not delete {title}: {error}" -msgstr "{name} nem törölhető: {error}" +msgstr "{title} nem törölhető: {error}" #: plinth/modules/infinoted/__init__.py:25 msgid "infinoted is a server for Gobby, a collaborative text editor." @@ -2459,11 +2596,11 @@ msgstr "" "\"Csatlakozás a kiszolgálóhoz\"-t (\"Connect to Server\") és írd be a " "{box_name} eszközöd domain nevét." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby kiszolgáló" @@ -2590,16 +2727,6 @@ msgstr "Nincs tanúsítvány" msgid "Re-obtain" msgstr "Újra beszerezni" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Törlés" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Visszavonás" @@ -2653,7 +2780,7 @@ msgstr "{domain} domain-on a tanúsítvány sikeresen törölve" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} domain-on nem sikerült kitörölni a tanúsítványt: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2671,17 +2798,22 @@ msgstr "" "beszélgetni az összes többi Matrix kiszolgáló felhasználóival a szövetségen " "keresztül." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 +#, fuzzy +#| msgid "" +#| "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" "A kommunikációhoz válassz az elérhető kliensek közül, akár mobil, asztali vagy webes felületűt. Riot kliens az ajánlott." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -2700,8 +2832,8 @@ msgstr "" "szeretnéd, hogy csak a már meglévő felhasználók használhassák." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "Riot" +msgid "Element" +msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2774,11 +2906,11 @@ msgstr "" "szükséged. Kérlek, látogasd meg a Let's " "Encrypt weboldalát ahhoz, hogy beszerezz egyet." -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "Szabad regisztráció engedélyezve" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "Szabad regisztráció letiltva" @@ -2864,16 +2996,16 @@ msgstr "" "is le lesz tiltva." #: plinth/modules/mediawiki/forms.py:42 -#, fuzzy -#| msgid "Default" msgid "Default Skin" -msgstr "Alapértelmezett" +msgstr "Alapértelmezett felszín" #: plinth/modules/mediawiki/forms.py:43 msgid "" "Choose a default skin for your MediaWiki installation. Users have the option " "to select their preferred skin." msgstr "" +"Válasszon alapértelmezett felszínt a MediaWiki telepítéséhez. A " +"felhasználóknak lehetőségük van kiválasztani a saját kedvelt felszínüket." #: plinth/modules/mediawiki/views.py:48 msgid "Password updated" @@ -2896,10 +3028,8 @@ msgid "Private mode disabled" msgstr "Privát mód letiltva" #: plinth/modules/mediawiki/views.py:86 -#, fuzzy -#| msgid "Setting unchanged" msgid "Default skin changed" -msgstr "A beállítás változatlan" +msgstr "Az alapértelmezett felszín megváltozott" #: plinth/modules/minetest/__init__.py:38 #, python-brace-format @@ -2915,12 +3045,12 @@ msgstr "" "kiszolgálóra egy Minetest " "kliensre is szükséged lesz." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Blokk sandbox" @@ -2966,7 +3096,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "Ha le van tiltva, a játékosok nem fognak meghalni ill. megsérülni." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Cím" @@ -2975,19 +3105,19 @@ msgstr "Cím" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "Maximális játékosszám beállítás frissítve" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "Kreatív mód beállítás frissítve" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "PVP beállítás frissítve" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "Sérülés beállítás frissítve" @@ -3001,22 +3131,29 @@ msgid "" "gaming systems (such as PS3 and Xbox 360) or applications such as totem and " "Kodi." msgstr "" +"A MiniDLNA egy egyszerű médiaszerver szoftver, azzal a céllal hogy teljes " +"mértékben kompatibilis legyen a DLNA/UPnP-AV ügyfelekkel. A MiniDNLA démon " +"médiafájlokat (zenéket, képeket és videókat) szolgál ki a hálózaton lévő " +"ügyfeleknek. A DNLA/UPnP konfigurációmentes protokoll, és kompatibilis " +"bármely DLNA minősítéssel rendelkező eszközzel, úgy mint hordozható " +"médialejátszók, okostelefonok, televíziók és játékkonzolok (például PS3 és " +"Xbox 360), vagy olyan alkalmazásokkal mint a totem és a Kodi." #: plinth/modules/minidlna/__init__.py:44 msgid "Media streaming server" -msgstr "" +msgstr "Médiaközvetítő (streaming) kiszolgáló" #: plinth/modules/minidlna/__init__.py:47 msgid "MiniDLNA" -msgstr "" +msgstr "MiniDLNA" #: plinth/modules/minidlna/__init__.py:48 msgid "Simple Media Server" -msgstr "" +msgstr "Egyszerű médiaszerver" #: plinth/modules/minidlna/forms.py:13 msgid "Media Files Directory" -msgstr "" +msgstr "Médiafájlok könyvtára" #: plinth/modules/minidlna/forms.py:14 msgid "" @@ -3025,30 +3162,35 @@ msgid "" "that the new directory exists and that is readable from the \"minidlna\" " "user. Any user media directories (\"/home/username/\") will usually work." msgstr "" +"Könyvtár, amiből a MiniDLNA szerver fogja olvasni a tartalmat. Ennek minden " +"alkönyvtára szintén át lesz keresve médiafájlok után. Ha megváltoztatja az " +"alapértelmezést akkor győződjön meg arról is, hogy az új könyvtár létezik és " +"olvasható a \"minidlna\" felhasználó által. Általában bármely felhasználói " +"médiakönyvtár (\"/home/felhasznalonev/\") működik." #: plinth/modules/minidlna/manifest.py:10 msgid "vlc" -msgstr "" +msgstr "vlc" #: plinth/modules/minidlna/manifest.py:49 msgid "kodi" -msgstr "" +msgstr "kodi" #: plinth/modules/minidlna/manifest.py:88 msgid "yaacc" -msgstr "" +msgstr "yaacc" #: plinth/modules/minidlna/manifest.py:99 msgid "totem" -msgstr "" +msgstr "totem" #: plinth/modules/minidlna/views.py:37 msgid "Specified directory does not exist." -msgstr "" +msgstr "A megadott könyvtár nem létezik." #: plinth/modules/minidlna/views.py:42 msgid "Updated media directory" -msgstr "" +msgstr "Médiakönyvtár frissítve" #: plinth/modules/mldonkey/__init__.py:27 msgid "" @@ -3288,25 +3430,26 @@ msgstr "" "kapcsolódhatsz. Mumble kliensek " "elérhetőek az asztali és Android eszközökhöz." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "Audiókonferencia" #: plinth/modules/mumble/forms.py:14 -#, fuzzy -#| msgid "SSH server password" msgid "Set SuperUser Password" -msgstr "SSH kiszolgáló jelszava" +msgstr "SuperUser jelszavának beállítása" #: plinth/modules/mumble/forms.py:17 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." msgstr "" +"Opcionális. Hagyja üresen ezt a mezőt a jelenlegi jelszó megtartásához. A " +"SuperUser jelszava használható a jogosultságok kezeléséhez a Mumble " +"alkalmazásban." #: plinth/modules/mumble/manifest.py:37 msgid "Plumble" @@ -3318,33 +3461,25 @@ msgstr "Mumblefly" #: plinth/modules/mumble/manifest.py:60 msgid "Mumla" -msgstr "" +msgstr "Mumla" -#: plinth/modules/mumble/views.py:29 -#, fuzzy -#| msgid "Password changed successfully." +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." -msgstr "A jelszó módosítása sikeres." +msgstr "A SuperUser jelszava sikeresen frissítve." #: plinth/modules/names/__init__.py:26 -#, fuzzy, python-brace-format -#| msgid "" -#| "Name Services provides an overview of the ways {box_name} can be reached " -#| "from the public Internet: domain name, Tor hidden service, and Pagekite. " -#| "For each type of name, it is shown whether the HTTP, HTTPS, and SSH " -#| "services are enabled or disabled for incoming connections through the " -#| "given name." +#, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " "from the public Internet: domain name, Tor onion service, and Pagekite. For " "each type of name, it is shown whether the HTTP, HTTPS, and SSH services are " "enabled or disabled for incoming connections through the given name." msgstr "" -"A Névszolgáltatások áttekintést nyújt azokról a módokról ahogyan a te " -"{box_name} eszközödet elérhetik a nyilvános internetről: domén név, Tor " -"rejtett szolgáltatás és PageKite. Minden egyes névtípushoz megmutatja hogy a " -"HTTP, HTTPS és az SSH szolgáltatások engedélyezettek-e vagy le vannak tiltva " -"a bejövő kapcsolatok számára az adott néven." +"A Névszolgáltatások áttekintést nyújt azokról a módokról ahogyan az Ön " +"{box_name} eszközét elérhetik a nyilvános internetről: domén név, Tor onion " +"szolgáltatás és PageKite. Minden egyes névtípushoz megmutatja hogy a HTTP, " +"HTTPS és az SSH szolgáltatások engedélyezettek-e vagy le vannak tiltva a " +"bejövő kapcsolatok számára az adott néven." #: plinth/modules/names/__init__.py:46 msgid "Name Services" @@ -3358,50 +3493,59 @@ msgstr "Összes" msgid "All web apps" msgstr "Összes webalkalmazás" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Szolgáltatás" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" +"Hálózati eszközök konfigurálása. Csatlakozzon az internethez Etherneten, Wi-" +"Fi-n vagy PPPoE-n keresztül. Ossza meg azt a kapcsolatot a hálózaton lévő " +"többi eszközzel." #: plinth/modules/networks/__init__.py:42 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" +"Előfordulhat, hogy más módszerekkel felügyelt eszközök itt nem lesznek a " +"konfiguráláshoz elérhetők." -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Hálózatok" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "DNSSEC használata IPv{kind} felett" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Kapcsolat típusa" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Kapcsolat neve" -#: plinth/modules/networks/forms.py:30 -#, fuzzy -#| msgid "Interface" -msgid "Network Interface" -msgstr "Interfész" - #: plinth/modules/networks/forms.py:31 +msgid "Network Interface" +msgstr "Hálózati interfész" + +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "A hálózati eszköz, amihez ez a kapcsolat kötve lesz." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Tűzfal zóna" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3409,21 +3553,21 @@ msgstr "" "A tűzfal zóna szabályozza, hogy mely szolgáltatások lesznek elérhetők ezen " "az interfészen. Csak a megbízható hálózatokhoz válaszd a „Belső”-t." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Külső" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Belső" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "IPv4 címzési módszer" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3435,19 +3579,26 @@ msgstr "" "módszertől a {box_name} eszközöd úgy fog viselkedni, mint egy router, " "beállítja a klienseket ezen a hálózaton és megosztja az internet kapcsolatát." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "Automatikus (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Megosztott" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Kézikönyv" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Hálózati maszk" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3455,21 +3606,21 @@ msgstr "" "Opcionális. Ha üresen hagyod, a címen alapuló alapértelmezett hálózati maszk " "lesz használva." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Átjáró" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "Opcionális." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS-kiszolgáló" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3478,11 +3629,11 @@ msgstr "" "DHCP-kiszolgáló által nyújtott DNS-kiszolgálók címei figyelmen kívül lesznek " "hagyva." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "Másodlagos DNS-kiszolgáló" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3491,11 +3642,11 @@ msgstr "" "DHCP-kiszolgáló által nyújtott DNS-kiszolgálók címei figyelmen kívül lesznek " "hagyva." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "IPv6 címzési módszer" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3504,27 +3655,27 @@ msgstr "" "Az „Automatikus” módszer esetén a {box_name} eszköz ügyfél lesz, amely során " "a beállításokat a csatlakoztatott hálózatról kéri le." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Automatikus" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "Automatikus, csak DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "Kihagyás" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "Előtag" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "Értéke 1 és 128 között." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3533,7 +3684,7 @@ msgstr "" "DHCP-kiszolgáló által nyújtott DNS-kiszolgálók címei figyelmen kívül lesznek " "hagyva." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3542,54 +3693,54 @@ msgstr "" "DHCP-kiszolgáló által nyújtott DNS-kiszolgálók címei figyelmen kívül lesznek " "hagyva." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- válassz --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "A név, amellyel a hálózat látható." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Mód" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Infrastuktúra" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Hozzáférési pont" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Frekvenciasáv" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Csatorna" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3598,11 +3749,11 @@ msgstr "" "korlátozódik a működés. Üresen hagyva vagy 0 értéket megadva automatikus " "választást jelent." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3612,11 +3763,11 @@ msgstr "" "ponthoz kapcsolódsz, csak akkor kapcsolódj ha a hozzáférési pont BSSID-je " "megegyezik az itt megadottal. Például: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Hitelesítési mód" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3624,29 +3775,33 @@ msgstr "" "Válaszd a WPA-t ha a vezeték nélküli hálózatod biztonságos és az ügyfelektől " "jelszót kér a csatlakozáshoz." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Nyílt" -#: plinth/modules/networks/forms.py:299 -#, fuzzy, python-brace-format -#| msgid "Use upstream bridges to connect to Tor network" +#: plinth/modules/networks/forms.py:302 +#, python-brace-format msgid "Specify how your {box_name} is connected to your network" -msgstr "Használj felmenő hidakat a Tor hálózatra kapcsolódáshoz" +msgstr "" +"Adja meg azt, hogy hogyan van az Ön {box_name} eszköze a hálózathoz " +"csatlakoztatva" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " "Internet connection from your router via Wi-Fi or Ethernet cable. This is a " "typical home setup.

    " msgstr "" +"Útválasztóhoz (router) csatlakoztatva

    Az Ön " +"{box_name} eszköze az internetkapcsolatát Wi-Fi-n vagy Ethernet vezetéken " +"keresztül kapja az útválasztótól. Ez egy tipikus otthoni kiépítés.

    " -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3654,20 +3809,29 @@ msgid "" "adapter. {box_name} is directly connected to the Internet and all your " "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" +"Az Ön {box_name} eszköze az útválasztó (router)

    Az " +"Ön {box_name} eszközének több hálózati interfésze van, úgy mint több " +"Ethernet csatlakozó vagy Wi-Fi adapter. {box_name} közvetlenül kapcsolódik " +"az internetre és az összes többi eszköze kapcsolódik az Ön {box_name} " +"eszközéhez internet kapcsolatért.

    " -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " "connection is directly attached to your {box_name} and there are no other " "devices on the network. This can happen on community or cloud setups.

    " msgstr "" +"Közvetlenül kapcsolódik az internetre

    Az internet " +"kapcsolata közvetlenül van az Ön {box_name} eszközéhez csatlakoztatva és " +"nincs más eszköz a hálózaton. Ez megtörténhet közösségi vagy felhő " +"kiépítéseknél.

    " -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" -msgstr "" +msgstr "Válassza ki az internetkapcsolat típusát" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3677,8 +3841,16 @@ msgid "" "connectivity. If you have a public IP address but are unsure if it changes " "over time or not, it is safer to choose this option.

    " msgstr "" +"Nyilvános IP-címem van, amely idővel megváltozhat

    Ez " +"azt jelenti, hogy az interneten lévő eszközök elérhetik Önt, amikor " +"csatlakozik az internethez. Minden alkalommal, amikor az " +"internetszolgáltatójával csatlakozik az internethez, előfordulhat, hogy egy " +"másik IP-címet kap, különösen egy hosszabb kapcsolat nélküli idő után. " +"Számos internetszolgáltató kínál ilyen típusú kapcsolatot. Ha nyilvános IP-" +"címmel rendelkezik, de nem biztos abban, hogy idővel változik-e vagy sem, " +"biztonságosabb ezt a lehetőséget választani.

    " -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" +"Nyilvános IP-címem van, amely nem változik az idő múlásával (ajánlott)

    Ez azt jelenti, hogy az interneten lévő eszközök " +"elérhetik Önt, amikor csatlakozik az internethez. Minden alkalommal, amikor " +"csatlakozik az internethez az internetszolgáltatójával, mindig ugyanazt az " +"IP-címet kapja. Ez a leginkább problémamentes beállítás sok {box_name} " +"szolgáltatásához, de nagyon kevés internetszolgáltató kínál ilyet. " +"Előfordulhat, hogy ezt a szolgáltatást az internetszolgáltatójától külön díj " +"fejében is igénybe veheti.

    " -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3701,20 +3881,29 @@ msgid "" "troublesome situation for hosting services at home. {box_name} provides many " "workaround solutions but each solution has some limitations.

    " msgstr "" +"Nincs nyilvános IP-címem

    Ez azt jelenti, hogy az " +"interneten lévő eszközök nem érhetik el Önt, amikor csatlakozik az " +"internethez. Minden alkalommal, amikor az internetszolgáltatójával " +"csatlakozik az internethez, olyan IP-címet kap, amely csak a helyi hálózatok " +"számára releváns. Számos internetszolgáltató kínál ilyen típusú kapcsolatot. " +"Ez a legproblémásabb helyzet otthonról hosztolt szolgáltatásokhoz. " +"{box_name} számos megkerülő megoldást kínál erre, de minden megoldásnak " +"vannak korlátai.

    " -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" +"Nem tudom hogy milyen típusú kapcsolatot biztosít az internetszolgáltatóm

    A legkonzervatívabb intézkedések lesznek Önnek " +"javasolva.

    " -#: plinth/modules/networks/forms.py:400 -#, fuzzy -#| msgid "An error occurred during configuration." +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" -msgstr "Hiba történt a beállítás közben." +msgstr "Előnyben részesített router konfiguráció" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3929,7 +4118,7 @@ msgid "Create Connection" msgstr "Kapcsolat létrehozása" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Kapcsolat törlése" @@ -3974,7 +4163,7 @@ msgid "Computer" msgstr "Számítógép" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Kapcsolat szerkesztése" @@ -3986,13 +4175,13 @@ msgstr "Kapcsolat" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi hálózatok a közelben" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Kapcsolat hozzáadása" @@ -4033,6 +4222,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -4175,73 +4365,73 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Hálózati kapcsolatok" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "Nem jeleníthető meg a kapcsolat, mivel az nem található." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "Információ a kapcsolatról" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "A kapcsolat nem szerkeszthető, mivel az nem található." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "Az ilyen típusú kapcsolat még nem ismert." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "{name} kapcsolat aktiválva." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "Kapcsolat aktiválása sikertelen: kapcsolat nem található." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "{name} kapcsolat aktiválása sikertelen: nem áll rendelkezésre megfelelő " "eszköz." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "{name} kapcsolat deaktiválva." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "Kapcsolat deaktiválása sikertelen: kapcsolat nem található." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "Új általános kapcsolat hozzáadása" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "Új Ethernet kapcsolat hozzáadása" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "Új PPPoE kapcsolat hozzáadása" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "Új Wi-Fi kapcsolat hozzáadása" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "Kapcsolat törölve: {name}." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "A kapcsolat törlése sikertelen, mivel az nem található." @@ -4263,16 +4453,16 @@ msgstr "" "eszközödön keresztül az Internetet is további biztonság és anonimitás " "érdekében." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Virtuális magánhálózat" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4350,11 +4540,11 @@ msgstr "" msgid "Download my profile" msgstr "Saját profilom letöltése" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Beállítás sikerült." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Beállítás sikertelen." @@ -4590,6 +4780,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 #, fuzzy #| msgid "System Configuration" @@ -4696,7 +4899,7 @@ msgstr "Privoxy" msgid "Web Proxy" msgstr "Web proxy" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4731,11 +4934,11 @@ msgstr "" "\">asztali és mobil " "eszközökhöz is." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "IRC kliens" @@ -4743,7 +4946,7 @@ msgstr "IRC kliens" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4763,7 +4966,7 @@ msgstr "" "clients/\">támogatott kliens alkalmazásra is. A Radicale elérhető " "bármely felhasználó számára „{box_name}” felhasználónév használatával." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4774,12 +4977,12 @@ msgstr "" "eseményeket vagy kapcsolatokat, ezeket egy külön kliens használatával " "teheted meg." -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "Naptár és címjegyzék" @@ -4806,6 +5009,12 @@ msgstr "" "Bármely, a(z) {box_name} eszközre bejelentkező felhasználó megtekintheti és " "módosíthatja is akármelyik naptárt/címjegyzéket." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Hozzáférési pont" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "DAVx5" @@ -5053,43 +5262,43 @@ msgstr "Megosztás hozzáadva." msgid "Action" msgstr "Műveletek" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 #, fuzzy #| msgid "Add Share" msgid "Open Share" msgstr "Megosztás hozzáadása" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 #, fuzzy #| msgid "Add Share" msgid "Group Share" msgstr "Megosztás hozzáadása" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Homepage" msgid "Home Share" msgstr "Honlap" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Megosztás törölve." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Hiba történt az eszköz kiadása során: {error_message}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Megosztás szerkesztve." -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" @@ -5133,10 +5342,6 @@ msgstr "" "Válaszd ki a felnőtt tartalmak alapértelmezett szűrési fokozatát, ez a " "keresési eredményeken lesz alkalmazva." -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "Nincs" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "Enyhe" @@ -5154,11 +5359,6 @@ msgid "Allow this application to be used by anyone who can reach it." msgstr "" "Engedélyezi ennek az alkalmazásnak a használatát bárkinek, aki el tudja érni." -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "Beállítások frissítve." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "Konzolon keresztüli bejelentkezések korlátozása (ajánlott)" @@ -5194,8 +5394,33 @@ msgstr "" msgid "Show security report" msgstr "Biztonsági rések megjelenítése" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 #, fuzzy #| msgid "Security Notice" msgid "Security Report" @@ -5286,12 +5511,12 @@ msgstr "Nincs" msgid "Not running" msgstr "A Tor fut" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Hiba a korlátozott hozzáférés beállítása során: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "Biztonsági beállítás frissítve" @@ -5610,9 +5835,13 @@ msgid "Yearly Snapshots Limit" msgstr "Évenkénti pillanatképek korlátja" #: plinth/modules/snapshot/forms.py:49 +#, fuzzy +#| msgid "" +#| "Keep a maximum of this many yearly snapshots. The default value is 0 " +#| "(disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" "Legfeljebb ennyi évenkénti pillanatkép legyen megtartva. Az alapértelmezett " "érték 0 (letiltva)." @@ -5744,7 +5973,7 @@ msgstr "" "számítógép felügyeleti feladatokat hajthat végre, fájlokat másolhat vagy " "egyéb szolgáltatásokat futtathat ilyen kapcsolat használatával." -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "Biztonságos parancsértelmező (SSH) kiszolgáló" @@ -5793,7 +6022,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "Sikertelen a hitelesítés a távoli kiszolgálóra." -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "Egyszeri bejelentkezés" @@ -5813,93 +6042,93 @@ msgstr "" "fel- és lecsatolhatsz cserélhető adathordozókat, kibővítheted a root " "partíciót, stb." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "Háttértár" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} byte" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "A művelet sikertelen." -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "A művelet meg lett szakítva." -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "Az eszköz leválasztása már folyamatban van." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "A művelet nem támogatott hiányzó eszközvezérlő/segédeszköz támogatás miatt." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "A művelet túllépte az időkorlátot." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" "A művelet fel fogja ébreszteni a lemezt, amely mély-alvó állapotban van." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" "Megpróbáltál leválasztani egy eszközt, amely jelenleg is használatban van." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "A művelet már meg lett szakítva." -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "Nem jogosult végrehajtani a kért műveletet." -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "Az eszköz már fel lett csatolva." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "Az eszköz nincs felcsatolva." -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "Nem használhatja a kért lehetőséget." -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "Az eszközt egy másik felhasználó felcsatolva." -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -5909,15 +6138,15 @@ msgstr "" "Figyelmeztetés: Kevés a szabad hely a rendszerpartíción ({percent_used}% " "felhasználva, {free_space} szabad)." -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6118,11 +6347,11 @@ msgstr "" "csomópontnak is otthont ad. További bevezető csomópontok is hozzáadhatók, " "melyek majd bemutatják ezt a csomópontot a többi adattároló csomópontnak." -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "Elosztott fájltároló" @@ -6166,7 +6395,7 @@ msgstr "Csatlakozott bevezetők" msgid "Remove" msgstr "Eltávolít" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6180,42 +6409,42 @@ msgstr "" "torproject.org/download/download-easy.html.en\">Tor böngésző használatát " "javasolja." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor rejtett szolgáltatás" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "Tor Socks proxy" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "Tor híd relay" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "Tor relay port elérhető" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Obfs3 átvitel regisztrálva" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Obfs4 átvitel regisztrálva" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Hozzáférés a {url} URL-hez tcp{kind}-on Tor használatával" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Hagyd jóvá a Tor használatát {url} célcímhez tcp{kind} protokollon" @@ -6375,7 +6604,7 @@ msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" "Egy Tor SOCKS port elérhető a te %(box_name)s eszközöd 9050-es TCP portján." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "A beállítás változatlan" @@ -6447,12 +6676,12 @@ msgstr "Hírcsatorna-olvasó" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" "A legfrissebb szoftver- és biztonsági frissítések ellenőrzése és alkalmazása." -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6460,11 +6689,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "Frissítés" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6479,6 +6708,23 @@ msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" "Ha engedélyezett, akkor a FreedomBox automatikusan frissít naponta egyszer." +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s is up to date." @@ -6497,19 +6743,40 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +#, fuzzy +#| msgid "Manual update" +msgid "Manual Update" msgstr "Kézi frissítés" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "Frissítés…" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "Frissítés most" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 #, fuzzy #| msgid "" #| "This may take a long time to complete. During an update, " @@ -6525,33 +6792,37 @@ msgstr "" "felület átmenetileg elérhetetlenné válhat és hibát jelezhet. Ebben az " "esetben frissítsd az oldalt a folytatáshoz." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 #, fuzzy #| msgid "Toggle recent update logs" msgid "Show recent update logs" msgstr "Frissítésnapló megjelenítése" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "Hiba az unattended-upgrades konfigurálása közben: {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "Automatikus frissítések engedélyezve" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "Automatikus frissítések kikapcsolva" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "A frissítési folyamat elkezdődött." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "A frissítést nem sikerült elindítani." +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6575,7 +6846,7 @@ msgstr "Felhasználók és csoportok" msgid "Access to all services and system settings" msgstr "Hozzáférés az összes szolgáltatáshoz és rendszerbeállításhoz" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP bejegyzés ellenőrzése: \"{search_item}\"" @@ -6590,16 +6861,12 @@ msgstr "A felhasználói név (már) foglalt." msgid "Enter a valid username." msgstr "Érvénytelen kiszolgálónév" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "Engedélyek" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6622,20 +6889,20 @@ msgstr "" "képesek bejelentkezni a rendszerbe, ahol adminisztrátori jogosultságokkal " "rendelkeznek (sudo)." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "LDAP felhasználó létrehozása sikertelen." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Nem sikerült hozzáadni az új felhasználót ehhez a csoporthoz: {group}." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Engedélyezett SSH kulcsok" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6645,45 +6912,45 @@ msgstr "" "jelszó nélkül jelentkezzen be. Több kulcs is megadható; soronként egy. Az " "üres, illetve # jellel kezdődő sorok nem számítanak." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "LDAP felhasználó átnevezése sikertelen." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "Nem sikerült eltávolítani a felhasználót a csoportból." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "Nem sikerült hozzáadni a felhasználót a csoporthoz." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "SSH kulcsok beállítása sikertelen." -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "Nem sikerült hozzáadni a felhasználót a csoporthoz." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "Nem lehet törölni a rendszer egyetlen rendszergazdáját." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "LDAP felhasználó jelszavának megváltoztatása sikertelen." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Nem sikerült hozzáadni az új felhasználót a rendszergazda csoporthoz." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "Nem sikerült a konzol hozzáférés korlátozása." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "Felhasználói fiók létrehozva, bejelentkezés sikeres" @@ -6816,7 +7083,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6950,7 +7217,7 @@ msgid "Add a new peer" msgstr "Új bevezető hozzáadása" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6983,7 +7250,7 @@ msgid "Add a new server" msgstr "Új bevezető hozzáadása" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" msgid "Add Connection to Server" @@ -7089,83 +7356,83 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 #, fuzzy #| msgid "Add new introducer" msgid "Added new client." msgstr "Új bevezető hozzáadása" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy #| msgid "A share with this name already exists." msgid "Client with public key already exists" msgstr "Egy megosztás ezzel a névvel már létezik." -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 #, fuzzy #| msgid "Email Client" msgid "Allowed Client" msgstr "E-mail kliens" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "Beállítások frissítése" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy #| msgid "Email Client" msgid "Modify Client" msgstr "E-mail kliens" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "Archive deleted." msgid "Client deleted." msgstr "Archívum törölve." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 #, fuzzy #| msgid "Repository not found" msgid "Client not found" msgstr "Tároló nem található" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added custom service" msgid "Added new server." msgstr "Egyedi szolgáltatás hozzáadva" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "Kapcsolat típusa" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "Beállítások frissítése" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Edit Connection" msgid "Modify Connection to Server" msgstr "Kapcsolat szerkesztése" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "Kapcsolat törlése" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "Share deleted." msgid "Server deleted." @@ -7179,23 +7446,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Általános" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "Hiba lépett fel a telepítés során" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "telepítés" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "letöltés" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "adathordozó csere" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurációs fájl: {file}" @@ -7219,43 +7486,32 @@ msgid "Requested page %(request_path)s was not found." msgstr "A kért %(request_path)s oldal nem található." #: plinth/templates/404.html:19 -#, fuzzy -#| msgid "" -#| "If you believe this missing page should exist, please file a bug at the " -#| "FreedomBox Service (Plinth) project issue tracker." msgid "" "If you believe this missing page should exist, please file a bug at the " "FreedomBox Service (Plinth) project issue tracker." msgstr "" -"Ha úgy gondolod hogy a hiányzó oldalnak léteznie kellene, akkor kérlek " -"jelentsd ezt a hibát a FreedomBox Service (Plinth) projekt hibabejelentőjében." +"Ha úgy gondolja hogy a hiányzó oldalnak léteznie kellene, akkor kérjük hogy " +"jelentse ezt a hibát a FreedomBox Service (Plinth) projekt hibabejelentőjében." #: plinth/templates/500.html:10 msgid "500" msgstr "500" #: plinth/templates/500.html:14 -#, fuzzy, python-format -#| msgid "" -#| "This is an internal error and not something you caused or can fix. Please " -#| "report the error on the bug tracker so we can fix it. Also, please " -#| "attach the status log to the bug " -#| "report." +#, python-format msgid "" "This is an internal error and not something you caused or can fix. Please " "report the error on the bug tracker so we can fix it. Also, please attach " "the status log to the bug report." msgstr "" -"Ez egy belső hiba, nem pedig valami, amit te okoztál, vagy meg tudnál " -"javítani. Kérlek jelentsd ezt a hibát a hibabejelentőn, így ki fogjuk tudni " -"javítani. Továbbá mellékeld a bejelentésben az állapotnapló tartalmát." +"Ez egy belső hiba, nem pedig valami, amit Ön okozott, vagy meg tudna " +"javítani. Kérjük hogy jelentse ezt a hibát a hibabejelentőben, így ki fogjuk " +"tudni javítani. Továbbá mellékelje a bejelentésben az állapotnapló tartalmát." #: plinth/templates/app-header.html:22 msgid "Installation" @@ -7466,26 +7722,64 @@ msgstr "" "%(interface_list)s" #: plinth/templates/notifications-dropdown.html:11 -#, fuzzy -#| msgid "No certificate" msgid "Notifications" -msgstr "Nincs tanúsítvány" +msgstr "Értesítések" #: plinth/templates/port-forwarding-info.html:8 msgid "Port Forwarding" msgstr "Porttovábbítás" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Esetleg leellenőrizheted a hálózati beállítást és módosíthatod ha szükséges." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, fuzzy, python-format +#| msgid "" +#| "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 " +#| "%(service_name)s:" +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" msgstr "" "Ha a FreedomBox eszközöd egy router mögött található, akkor a router-en be " "kell állítanod a port továbbítást. A %(service_name)s szolgáltatáshoz a " "következő portokat kellene továbbítani:" +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "protokoll" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "%(box_name)s beállítás" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "Alkalmazás telepítése?" @@ -7532,6 +7826,118 @@ msgstr "befejezettségi szint: %(percentage)s%%" msgid "Gujarati" msgstr "Gudzsaráti" +#, fuzzy +#~| msgid "Backup archives" +#~ msgid "Backports activated." +#~ msgstr "Biztonsági másolat archívumok" + +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "A Coquelicot egy „egy-kattintásos” fájlmegosztó webes alkalmazás, amely a " +#~ "felhasználó magánszférájának védelmére koncentrál. Egy fájl gyors " +#~ "megosztására használható a legjobban. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "A Coquelicot ezen példánya a nyilvánosságnak van kitéve, de feltöltési " +#~ "jelszót követel, hogy megakadályozza az illetéktelen hozzáférést. Új " +#~ "feltöltési jelszót tudsz beállítani azon az űrlapon, ami lentebb fog " +#~ "megjelenni a telepítés után. Az alapértelmezett feltöltési jelszó \"test" +#~ "\" (idézőjelek nélkül)." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "Feltöltési jelszó" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Állíts be új feltöltési jelszót a Coquelicot számára. Ha szeretnéd " +#~ "megtartani a jelenlegi jelszót, hagyd üresen ezt a mezőt." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "" +#~ "Maximális fájlméret (MiB, azaz Mebibájtban; 1MiB = 1024 KiB = 1024*1024 B)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Állítsd be a maximális fájlméretet ami még feltölthető a Coquelicot-ra." + +#~ msgid "coquelicot" +#~ msgstr "coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Feltöltési jelszó frissítve" + +#~ msgid "Failed to update upload password" +#~ msgstr "Feltöltési jelszó frissítése sikertelen" + +#~ msgid "Maximum file size updated" +#~ msgstr "Maximális fájlméret frissítve" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "Maximális fájlméret frissítése sikertelen" + +#~ msgid "Riot" +#~ msgstr "Riot" + +#~ msgid "Security Notice" +#~ msgstr "Biztonsági értesítés" + +#, fuzzy +#~| msgid "" +#~| "You are using packages from Debian backports. Please note that these " +#~| "packages do not have security support from Debian. However, they are " +#~| "maintained on a best-effort basis by contributors in Debian and " +#~| "FreedomBox community." +#~ msgid "" +#~ "Backports are enabled. Please note that packages from the backports " +#~ "repository do not have security support from Debian. However, they are " +#~ "maintained on a best-effort basis by contributors in Debian and " +#~ "FreedomBox community." +#~ msgstr "" +#~ "A Debian backports csomagjait használja. Felhívjuk figyelmét, hogy ezek a " +#~ "csomagok nem kapnak biztonsági támogatást a Debian-tól. A Debian és a " +#~ "FreedomBox közösség közreműködői azonban minden erőfeszítéssel " +#~ "fenntartják őket." + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Biztonsági másolatok" + +#, fuzzy +#~| msgid "" +#~| "You are using packages from Debian backports. Please note that these " +#~| "packages do not have security support from Debian. However, they are " +#~| "maintained on a best-effort basis by contributors in Debian and " +#~| "FreedomBox community." +#~ msgid "" +#~ "Please note that backports packages do not have security support from " +#~ "Debian. However, they are maintained on a best-effort basis by " +#~ "contributors in Debian and FreedomBox community." +#~ msgstr "" +#~ "A Debian backports csomagjait használja. Felhívjuk figyelmét, hogy ezek a " +#~ "csomagok nem kapnak biztonsági támogatást a Debian-tól. A Debian és a " +#~ "FreedomBox közösség közreműködői azonban minden erőfeszítéssel " +#~ "fenntartják őket." + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "Aktivál" + #~ msgid "Restoring" #~ msgstr "Visszaállítás" @@ -7845,9 +8251,6 @@ msgstr "Gudzsaráti" #~ msgid "Manage" #~ msgstr "Kezel" -#~ msgid "Create" -#~ msgstr "Létrehoz" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "" #~ "Az utalványkód, amit a {box_name} Danube Edition eszközöddel együtt kaptál" @@ -8158,9 +8561,6 @@ msgstr "Gudzsaráti" #~ msgid "Apps data to restore from the backup" #~ msgstr "Visszaállítás biztonsági mentésből" -#~ msgid "Backup archives" -#~ msgstr "Biztonsági másolat archívumok" - #~ msgid "Export" #~ msgstr "Exportál" diff --git a/plinth/locale/id/LC_MESSAGES/django.po b/plinth/locale/id/LC_MESSAGES/django.po index 4cdb9f96a..86cfc8c82 100644 --- a/plinth/locale/id/LC_MESSAGES/django.po +++ b/plinth/locale/id/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Indonesian (FreedomBox)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2018-11-02 00:44+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Indonesian user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 #, fuzzy #| msgid "Web Server" msgid "Chat Server" @@ -1460,11 +1606,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1476,11 +1622,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1532,12 +1678,14 @@ msgstr "Layanan/Port" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Aktifkan" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Non-Aktifkan" @@ -1645,56 +1793,64 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Actions" msgid "Invalid repository URL." msgstr "Aksi" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 #, fuzzy #| msgid "Actions" msgid "Private repository" msgstr "Aksi" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 #, fuzzy #| msgid "Actions" msgid "Name of the repository" msgstr "Aksi" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1768,11 +1924,6 @@ msgstr "" msgid "Edit repository" msgstr "Aksi" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1783,33 +1934,35 @@ msgstr "{name} dihapus." msgid "Could not delete {name}: {error}" msgstr "Tidak dapat menghapus {name}: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Panduan" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1872,18 +2025,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "Pengaturan %(box_name)s" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2034,16 +2175,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "Dokumentasi dan Tanya Jawab" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "Tentang {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "Panduan {box_name}" @@ -2068,23 +2209,23 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Aktifkan aplikasi" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 #, fuzzy #| msgid "Go to Networks" msgid "Anonymity Network" msgstr "Pergi ke Pengaturan Jaringan" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 #, fuzzy #| msgid "Web Proxy (Privoxy)" msgid "I2P Proxy" @@ -2244,11 +2385,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -2368,16 +2509,6 @@ msgstr "Tidak ada Sertifikat" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Hapus" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2427,7 +2558,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2437,14 +2568,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2462,7 +2593,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2515,11 +2646,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 #, fuzzy #| msgid "Application installed." msgid "Public registration disabled" @@ -2644,12 +2775,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2696,7 +2827,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Address" @@ -2705,19 +2836,19 @@ msgstr "Address" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2990,11 +3121,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 #, fuzzy #| msgid "Voice Chat (Mumble)" msgid "Voice Chat" @@ -3024,7 +3155,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -3049,6 +3180,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Layanan" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3061,57 +3198,57 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Jaringan" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Gunakan DNSSEC pada IPv{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Tipe Koneksi" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Nama Koneksi" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 #, fuzzy msgid "Network Interface" msgstr "Interface" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Zona Firewall" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3119,189 +3256,196 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Shared" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Panduan" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Netmask" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS Server" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 #, fuzzy msgid "Second DNS Server" msgstr "Second DNS Server" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Automatic" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 #, fuzzy #| msgid "Automatic" msgid "Automatic, DHCP only" msgstr "Automatic" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- pilih --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Mode" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Infrastructure" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Access Point" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Frequency Band" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 #, fuzzy msgid "Channel" msgstr "Channel" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Authentication Mode" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Open" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3309,7 +3453,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3318,7 +3462,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3326,11 +3470,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3341,7 +3485,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3365,19 +3509,19 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "Current Network Configuration" msgid "Preferred router configuration" msgstr "Pengaturan Jaringan saat ini" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3587,7 +3731,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Hapus Koneksi" @@ -3632,7 +3776,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Sunting Koneksi" @@ -3644,13 +3788,13 @@ msgstr "Koneksi" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "Jaringan Wi-Fi terdekat" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Tambah Koneksi" @@ -3691,6 +3835,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3832,72 +3977,72 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 #, fuzzy msgid "Network Connections" msgstr "Network Connections" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3912,18 +4057,18 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 #, fuzzy #| msgid "Open" msgid "OpenVPN" msgstr "Open" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3979,11 +4124,11 @@ msgstr "" msgid "Download my profile" msgstr "Unduh profil saya" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Pengaturan selesai." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Pengaturan gagal." @@ -4184,6 +4329,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 #, fuzzy #| msgid "System Configuration" @@ -4273,7 +4431,7 @@ msgstr "" msgid "Web Proxy" msgstr "Web Proxy (Privoxy)" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4297,11 +4455,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4309,7 +4467,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4319,19 +4477,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4353,6 +4511,12 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Access Point" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4564,43 +4728,43 @@ msgstr "Shared" msgid "Action" msgstr "Aksi" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "Tambah Layanan" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 #, fuzzy #| msgid "Add Service" msgid "Group Share" msgstr "Tambah Layanan" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Add Service" msgid "Home Share" msgstr "Tambah Layanan" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} dihapus." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Kesalahan pemasangan aplikasi: {error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "Shared" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4642,10 +4806,6 @@ msgstr "Simpan Layanan" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 #, fuzzy #| msgid "Mode" @@ -4664,11 +4824,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4696,8 +4851,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4768,12 +4948,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -5070,8 +5250,8 @@ msgstr "Hapus %(name)s" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5194,7 +5374,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5241,7 +5421,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -5257,108 +5437,108 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, fuzzy, python-brace-format #| msgid "{disk_size} bytes" msgid "{disk_size:.1f} bytes" msgstr "{disk_size} bytes" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, fuzzy, python-brace-format #| msgid "{disk_size} TiB" msgid "{disk_size:.1f} TiB" msgstr "{disk_size} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5521,11 +5701,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5568,7 +5748,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5577,40 +5757,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5742,7 +5922,7 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5793,11 +5973,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5805,11 +5985,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -5825,6 +6005,23 @@ msgstr "Aktifkan aplikasi" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s Setup" @@ -5843,54 +6040,77 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 #, fuzzy #| msgid "Manual" -msgid "Manual update" +msgid "Manual Update" msgstr "Panduan" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 #, fuzzy #| msgid "Update URL" msgid "Update now" msgstr "Perbaharui URL" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5914,7 +6134,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5929,16 +6149,12 @@ msgstr "" msgid "Enter a valid username." msgstr "Aksi" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5947,65 +6163,65 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "Gagal membuat pengguna LDAP." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 #, fuzzy #| msgid "Failed to add new user to admin group." msgid "Failed to change user status." msgstr "Gagal menambahkan pengguna baru ke kelompok admin." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Gagal menambahkan pengguna baru ke kelompok admin." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -6134,7 +6350,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6262,7 +6478,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6289,7 +6505,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" msgid "Add Connection to Server" @@ -6387,73 +6603,73 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update URL" msgid "Updated client." msgstr "Perbaharui URL" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 #, fuzzy #| msgid "Delete" msgid "Delete Allowed Client" msgstr "Hapus" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "{name} deleted." msgid "Client deleted." msgstr "{name} dihapus." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "Tipe Koneksi" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Web Server" msgid "Updated server." msgstr "Server Web" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Edit Connection" msgid "Modify Connection to Server" msgstr "Sunting Koneksi" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "Hapus Koneksi" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "{name} deleted." msgid "Server deleted." @@ -6467,23 +6683,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6739,14 +6955,43 @@ msgstr "Tidak ada Sertifikat" msgid "Port Forwarding" msgstr "Aktifkan Tor" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." msgstr "" +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "Pengaturan %(box_name)s" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "" @@ -6791,6 +7036,21 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Create" +#~ msgid "Backports activated." +#~ msgstr "Buat" + +#, fuzzy +#~| msgid "Password" +#~ msgid "Upload Password" +#~ msgstr "Kata Sandi" + +#, fuzzy +#~| msgid "Password" +#~ msgid "Upload password updated" +#~ msgstr "Kata Sandi" + #, fuzzy #~| msgid "Restart Now" #~ msgid "Restoring" @@ -6865,9 +7125,6 @@ msgstr "" #~ msgid "Manage" #~ msgstr "Kelola" -#~ msgid "Create" -#~ msgstr "Buat" - #~ msgid "This code is not valid" #~ msgstr "Kode ini tidak valid" @@ -6948,11 +7205,6 @@ msgstr "" #~ msgid "Restore apps" #~ msgstr "Jalankan ulang Sekarang" -#, fuzzy -#~| msgid "Create" -#~ msgid "Backup archives" -#~ msgstr "Buat" - #, fuzzy #~| msgid "Create" #~ msgid "Create archive" diff --git a/plinth/locale/it/LC_MESSAGES/django.po b/plinth/locale/it/LC_MESSAGES/django.po index af464b8bd..7b2c8b883 100644 --- a/plinth/locale/it/LC_MESSAGES/django.po +++ b/plinth/locale/it/LC_MESSAGES/django.po @@ -7,31 +7,30 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: 2020-04-11 13:36+0000\n" -"Last-Translator: Jeannette L \n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-08-30 18:23+0000\n" +"Last-Translator: Diego Roversi \n" "Language-Team: Italian \n" +"freedombox/it/>\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.0-dev\n" +"X-Generator: Weblate 4.2.1-dev\n" #: doc/dev/_templates/layout.html:11 -#, fuzzy msgid "Page source" msgstr "Pagina di origine" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "FreedomBox" #: plinth/daemon.py:85 #, python-brace-format msgid "Service {service_name} is running" -msgstr "Il server {service_name} è in esecuzione" +msgstr "Il servizio {service_name} è in esecuzione" #: plinth/daemon.py:111 #, python-brace-format @@ -46,25 +45,24 @@ msgstr "In ascolto sulla porta{port}:{kind}" #: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" -msgstr "Connettivo a {host}:{port}" +msgstr "Connessione a {host}:{port}" #: plinth/daemon.py:184 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Cannot connect to {host}:{port}" -msgstr "Non è possibile connettersi a {host}:{port}" +msgstr "Impossibile connettersi a {host}:{port}" #: plinth/forms.py:38 msgid "Select a domain name to be used with this application" -msgstr "Seleziona un nome di dominio da usare con questa applicazione" +msgstr "Selezione un nome di dominio da usare con questa applicazione" #: plinth/forms.py:40 -#, fuzzy msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" -"Attenzione! L'applicazione potrebbe non funzionare correttamente nel caso in " -"cui il domino venga successivamente modificato" +"Attenzione! L'applicazione potrebbe non funzionare correttamente se il nome " +"di dominio viene cambiato successivamente" #: plinth/forms.py:48 msgid "Language" @@ -83,14 +81,14 @@ msgid "Application installed." msgstr "Applicazione installata." #: plinth/middleware.py:63 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Error installing application: {string} {details}" -msgstr "Errore installazione applicazione:{string}{details}" +msgstr "Errore nell'installazione dell'applicazione:{string}{details}" #: plinth/middleware.py:67 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Error installing application: {error}" -msgstr "Errore installazione applicazione: {error}" +msgstr "Errore durante l'installazione dell'applicazione: {error}" #: plinth/modules/apache/__init__.py:40 #: plinth/modules/monkeysphere/templates/monkeysphere.html:67 @@ -106,7 +104,7 @@ msgstr "{box_name} Interfaccia Web (Plinth)" #: plinth/modules/apache/components.py:120 #, python-brace-format msgid "Access URL {url} on tcp{kind}" -msgstr "URL d'accesso {url} su TCP {kind}" +msgstr "URL d'accesso {url} su TCP {kind}" #: plinth/modules/apache/components.py:124 #, fuzzy, python-brace-format @@ -124,15 +122,14 @@ msgid "" "network." msgstr "" "La funzione \"Service discovery\" consente agli altri dispositivi connessi " -"nella rete di scoprire il tuo {box_name}1 e i servizi attivi su di esso. " -"Consente inoltre al {box_name}2 di scoprire gli altri dispositivi e servizi " +"nella rete di scoprire il tuo {box_name} e i servizi attivi su di esso. " +"Consente inoltre al {box_name} di scoprire gli altri dispositivi e servizi " "in esecuzione nella tua rete locale. \"Service discovery\" non è essenziale " "e funziona solamente nelle reti locali. Può essere disabilitato per " "migliorare la sicurezza specialmente quando si è connessi in una rete locale " "ostile." #: plinth/modules/avahi/__init__.py:58 -#, fuzzy msgid "Service Discovery" msgstr "Servizio Scoperta" @@ -140,11 +137,11 @@ msgstr "Servizio Scoperta" msgid "Local Network Domain" msgstr "Dominio rete locale" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "Backups consente di creare e gestire archivi di backup." -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "Backup" @@ -153,6 +150,12 @@ msgstr "Backup" msgid "{app} (No data to backup)" msgstr "{app} (Nessun dato da salvare)" +#: plinth/modules/backups/forms.py:50 +#, fuzzy +#| msgid "Create Repository" +msgid "Repository" +msgstr "Creare Repository" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -162,10 +165,8 @@ msgid "Name" msgstr "Nome" #: plinth/modules/backups/forms.py:53 -#, fuzzy -#| msgid "Name for new backup archive." msgid "(Optional) Set a name for this backup archive" -msgstr "Nome del nuovo archivio di backup." +msgstr "(Opzionale) Imposta un nome per l'archivio di backup" #: plinth/modules/backups/forms.py:56 msgid "Included apps" @@ -188,7 +189,6 @@ msgid "Backup files have to be in .tar.gz format" msgstr "I file di backup devono essere in formato .tar.gz" #: plinth/modules/backups/forms.py:86 -#, fuzzy msgid "Select the backup file you want to upload" msgstr "Selezionare il file di backup che si desidera caricare" @@ -207,7 +207,7 @@ msgid "Invalid hostname: {hostname}" msgstr "Hostname non valido: {hostname}" #: plinth/modules/backups/forms.py:113 -#, fuzzy, python-brace-format +#, python-brace-format msgid "Invalid directory path: {dir_path}" msgstr "Percorso della directory non valido: {dir_path}" @@ -216,7 +216,6 @@ msgid "Encryption" msgstr "Crittografia" #: plinth/modules/backups/forms.py:120 -#, fuzzy msgid "" "\"Key in Repository\" means that a password-protected key is stored with the " "backup." @@ -224,12 +223,21 @@ msgstr "" "\"Key in Repository\" significa che con il backup viene memorizzata una " "chiave protetta da password." -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +#, fuzzy +#| msgid "Create Repository" +msgid "Key in Repository" +msgstr "Creare Repository" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "Passphrase" #: plinth/modules/backups/forms.py:125 -#, fuzzy msgid "Passphrase; Only needed when using encryption." msgstr "Passphrase; Necessaria solo quando si utilizza la crittografia." @@ -282,12 +290,10 @@ msgstr "" "ancora possibile." #: plinth/modules/backups/forms.py:213 -#, fuzzy msgid "Remote backup repository already exists." msgstr "Il repository di backup remoto esiste già." #: plinth/modules/backups/forms.py:219 -#, fuzzy msgid "Select verified SSH public key" msgstr "Selezionare la chiave pubblica SSH verificata" @@ -304,12 +310,10 @@ msgid "Connection refused" msgstr "Connessione rifiutata" #: plinth/modules/backups/repository.py:47 -#, fuzzy msgid "Repository not found" msgstr "Repository non trovato" #: plinth/modules/backups/repository.py:52 -#, fuzzy msgid "Incorrect encryption passphrase" msgstr "Passphrase di crittografia errata" @@ -324,7 +328,6 @@ msgstr "" "esistente." #: plinth/modules/backups/repository.py:136 -#, fuzzy msgid "Existing repository is not encrypted." msgstr "Il repository esistente non è criptato." @@ -355,32 +358,22 @@ msgid "Upload and Restore" msgstr "Carica e ristabilisci" #: plinth/modules/backups/templates/backups.html:44 -#, fuzzy -#| msgid "Existing backups" msgid "Add a backup location" msgstr "Aggiungere una destinazione di backup" #: plinth/modules/backups/templates/backups.html:48 -#, fuzzy -#| msgid "Existing backups" msgid "Add Backup Location" -msgstr "Aggiungi luogo di backup" +msgstr "Aggiungi la destinazione del backup" #: plinth/modules/backups/templates/backups.html:51 -#, fuzzy -#| msgid "Existing backups" msgid "Add a remote backup location" -msgstr "Aggiungere una locazione di backup remota" +msgstr "Aggiungere una destinazione di backup remota" #: plinth/modules/backups/templates/backups.html:55 -#, fuzzy -#| msgid "Existing backups" msgid "Add Remote Backup Location" -msgstr "Aggiungi una locazione di backup remoto" +msgstr "Aggiungi una destinazione di backup remoto" #: plinth/modules/backups/templates/backups.html:58 -#, fuzzy -#| msgid "Existing backups" msgid "Existing Backups" msgstr "Backups esistenti" @@ -396,10 +389,8 @@ msgstr "" "necessarie le credenziali ssh e, se scelta, la passphrase di crittografia." #: plinth/modules/backups/templates/backups_add_remote_repository.html:28 -#, fuzzy -#| msgid "Create Connection" msgid "Create Location" -msgstr "Creare la posizione" +msgstr "Creare la destinazione" #: plinth/modules/backups/templates/backups_add_repository.html:19 #: plinth/modules/gitweb/views.py:50 @@ -420,20 +411,19 @@ msgid "Delete Archive %(name)s" msgstr "Cancella archivio %(name)s" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 #: plinth/modules/networks/templates/router_configuration_update.html:19 #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 -#, fuzzy msgid "Submit" -msgstr "Inviare" +msgstr "Invia" #: plinth/modules/backups/templates/backups_repository.html:19 -#, fuzzy msgid "This repository is encrypted" -msgstr "Il repository esistente non è criptato." +msgstr "Il repository è criptato" #: plinth/modules/backups/templates/backups_repository.html:34 #, fuzzy @@ -449,13 +439,11 @@ msgstr "Creare la posizione" #: plinth/modules/backups/templates/backups_repository.html:56 msgid "Remove Backup Location. This will not delete the remote backup." -msgstr "" +msgstr "Elimina la destinazione. Questo non cancellerà il backup remoto." #: plinth/modules/backups/templates/backups_repository.html:77 -#, fuzzy -#| msgid "Download as PDF" msgid "Download" -msgstr "Scaricare in formato PDF" +msgstr "Scarica" #: plinth/modules/backups/templates/backups_repository.html:81 #: plinth/modules/backups/templates/backups_restore.html:27 @@ -486,12 +474,11 @@ msgid "Remove Location" msgstr "Rimuovere la posizione" #: plinth/modules/backups/templates/backups_restore.html:15 -#, fuzzy msgid "Restore data from" msgstr "Recupero dei dati da" #: plinth/modules/backups/templates/backups_upload.html:17 -#, fuzzy, python-format +#, python-format msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " @@ -537,7 +524,7 @@ msgstr "" "verificare che l'host sia attivo e accetti le connessioni." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:28 -#, fuzzy, python-format +#, python-format msgid "" "The authenticity of SSH host %(hostname)s could not be established. The host " "advertises the following SSH public keys. Please verify any one of them." @@ -547,7 +534,6 @@ msgstr "" "una qualsiasi di esse." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:40 -#, fuzzy msgid "How to verify?" msgstr "Come verificare?" @@ -653,6 +639,187 @@ msgstr "Smontaggio fallito!" msgid "Mounting failed" msgstr "Montaggio fallito" +#: plinth/modules/bepasty/__init__.py:25 +#, fuzzy +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" +"bepasty è un applicazione web che permette di caricare e condividere file di " +"grosse dimensioni. Inoltre testo e frammenti di codice possono essere " +"copiati e condivisi. Dal browser è possibile avere la preview di testo, " +"immagini, audio, video e documenti PDF . I file condivisi possono essere " +"eliminati automaticamente dopo un tempo prefissato." + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +#, fuzzy +#| msgid "Restore from uploaded file" +msgid "Create or upload files" +msgstr "Ripristina dal file caricato" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +#, fuzzy +#| msgid "Delete Archive" +msgid "Delete files" +msgstr "Cancella archivio" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +#, fuzzy +msgid "File & Snippet Sharing" +msgstr "Condivisione File" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +#, fuzzy +#| msgid "Password" +msgid "Manage Passwords" +msgstr "Password" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +#, fuzzy +#| msgid "Show password" +msgid "Add password" +msgstr "Mostra password" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +#, fuzzy +#| msgid "No archives currently exist." +msgid "No passwords currently configured." +msgstr "Al momento non esiste nessun archivio." + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "Password" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "Crea" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "Cancella" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "" + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "Si è verificato un errore durante la configurazione." + +#: plinth/modules/bepasty/views.py:97 +#, fuzzy +#| msgid "Password updated" +msgid "Password added." +msgstr "Password aggiornata" + +#: plinth/modules/bepasty/views.py:102 +#, fuzzy +#| msgid "Password" +msgid "Add Password" +msgstr "Password" + +#: plinth/modules/bepasty/views.py:119 +#, fuzzy +#| msgid "Password updated" +msgid "Password deleted." +msgstr "Password aggiornata" + #: plinth/modules/bind/__init__.py:29 #, fuzzy msgid "" @@ -674,11 +841,11 @@ msgstr "" "richieste DNS di altri dispositivi della rete locale. E' inoltre compatibile " "con la condivisione della connessione Internet del {box_name}." -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 #, fuzzy msgid "Domain Name Server" msgstr "Server di nomi a dominio" @@ -711,6 +878,7 @@ msgstr "Dominio server" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -739,9 +907,9 @@ msgstr "Indirizso IP" msgid "Refresh IP address and domains" msgstr "" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -824,12 +992,13 @@ msgid "Configure" msgstr "Configura" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "Nome dominio" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "Nome dominio non valido" @@ -908,7 +1077,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "Mostra le applicazioni e le funzionalità avanzate" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "" "Mostra le applicazioni e le funzionalità che richiedono maggiori conoscenze " @@ -957,85 +1126,6 @@ msgstr "Visualizzazione di applicazioni e funzionalità avanzate" msgid "Hiding advanced apps and features" msgstr "Nascondere applicazioni e funzionalità avanzate" -#: plinth/modules/coquelicot/__init__.py:24 -#, fuzzy -#| msgid "" -#| "Coquelicot is a “one-click” file sharing web application with a focus on " -#| "protecting users’ privacy. It is best used for quickly sharing a single " -#| "file. " -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" -"Coquelicot è un'applicazione web \"one-click\" di condivisione file, con un " -"focus sulla riservatezza dell'utente. È l'ideale per la condivisione rapida " -"di singoli file. " - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" -"Questa istanza di Coquelicot è esposta al pubblico ma richiede una password " -"per l'upload. È possibile impostare una nuova password nel modulo che " -"apparirà sotto, dopo l'installazione. La password predefinita è \"test\"." - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "Coquelicot" - -#: plinth/modules/coquelicot/__init__.py:47 -#, fuzzy -msgid "File Sharing" -msgstr "Condivisione File" - -#: plinth/modules/coquelicot/forms.py:13 -#, fuzzy -msgid "Upload Password" -msgstr "Password per l'upload" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" -"Imposta una nuova password per Coquelicot. Lascia questo campo vuoto per " -"mantenere la password corrente." - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "Massima grandezza file (in MiB)" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" -"Imposta la grandezza massima dei file che è possibile caricare su Coquelicot." - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "coquelicot" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "Password upload aggiornata" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "Aggiornamento password upload fallito" - -#: plinth/modules/coquelicot/views.py:47 -#, fuzzy -msgid "Maximum file size updated" -msgstr "Grandezza massima file caricati" - -#: plinth/modules/coquelicot/views.py:50 -#, fuzzy -msgid "Failed to update maximum file size" -msgstr "Aggiornamento dimensione massima file fallito" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -1050,11 +1140,11 @@ msgid "" "need to be configured with the details provided here." msgstr "" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "" @@ -1090,7 +1180,7 @@ msgstr "" msgid "Date & Time" msgstr "Data & Ora" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "Tempo sincronizzato al server NTP" @@ -1156,7 +1246,7 @@ msgstr "Scarica directory" msgid "Bittorrent client written in Python/PyGTK" msgstr "Client BitTorrent scritto in Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 #, fuzzy msgid "" "The system diagnostic test will run a number of checks on your system to " @@ -1165,10 +1255,26 @@ msgstr "" "La diagnostica di sistema eseguirà una serie di controlli per verificare che " "le applicazioni e i servizi stiano funzionino correttamente." -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "Diagnostica" +#: plinth/modules/diagnostics/__init__.py:102 +#, fuzzy +#| msgid "Quassel" +msgid "passed" +msgstr "Quassel" + +#: plinth/modules/diagnostics/__init__.py:103 +#, fuzzy +#| msgid "Setup failed." +msgid "failed" +msgstr "Setup fallito." + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1315,7 +1421,7 @@ msgstr "Client DNS Dinamico" msgid "Dynamic Domain Name" msgstr "Nome Dominio Dinamico" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1325,7 +1431,7 @@ msgstr "" "essere usati all'interno dell'URL. Per maggiori dettagli vedi i modelli di " "URL del provider d'esempio." -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1335,7 +1441,7 @@ msgstr "" "tuo provider non supporta il protocollo GnuDIP o il tuo provider non è " "presente nella lista puoi usare l'URL di aggiornamento del tuo provider." -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1343,17 +1449,17 @@ msgstr "" "Prego, non inserire un URL qui (come \"https://esempio.com/\") ma solo " "l'hostname del server GnuDIP (come \"esempio.com\")." -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" "il nome di dominio pubblico che vuoi usare per raggiungere il tuo {box_name}." -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "Usa quest'opzione se il tuo provider usa dei certificati auto-firmati." -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1361,11 +1467,11 @@ msgstr "" "Se quest'opzione è selezionata, il tuo nome utente e la tua password saranno " "usati per l'autenticazione basilare HTTP." -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "Lascia vuoto questo campo se vuoi mantenere la password corrente." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1378,75 +1484,81 @@ msgstr "" "determinare l'indirizzo IP reale. L'URL dovrebbe semplicemente restituire " "l'IP da cui proviene il client (esempio: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "Il nome utente usato quando è stato creato il profilo." +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +#, fuzzy +#| msgid "Update URL" +msgid "other update URL" +msgstr "Aggiorna URL" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "Abilita DNS Dinamico" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "Tipo Servizio" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "Indirizzo Server GnuDIP" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "Nome Server Invalido" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "Aggiorna URL" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "Accetta tutti i certificati SSL" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 #, fuzzy msgid "Use HTTP basic authentication" msgstr "Usa l'autenticazione HTTP base" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "Nome utente" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "Password" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "Mostra password" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 #, fuzzy msgid "URL to look up public IP" msgstr "URL di cui cercare l'IP pubblico" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 #, fuzzy msgid "Please provide an update URL or a GnuDIP server address" msgstr "" "Per favore inserisci un URL d'aggiornamento o un indirizzo di un server " "GnuDIP" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 #, fuzzy msgid "Please provide a GnuDIP username" msgstr "Per favore inserisci un nome utente GnuDIP" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 #, fuzzy msgid "Please provide a GnuDIP domain name" msgstr "Per favore inserisci un nome di dominio GnuDIP" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 #, fuzzy msgid "Please provide a password" msgstr "Inserisci una password per favore" @@ -1520,7 +1632,7 @@ msgstr "" msgid "Last update" msgstr "Ultimo aggiornamento" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "About" @@ -1569,12 +1681,12 @@ msgstr "" "accedere a ejabberd da ogni utente con un " "login {box_name}." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Server Chat" @@ -1634,11 +1746,11 @@ msgstr "" "(anche tramite TOR), o anche connetterti al tuo server per una maggiore " "sicurezza." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "Gajim" @@ -1654,11 +1766,11 @@ msgstr "" "impostare il tuo dominio nel sistema . Configura " "la pagina ." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "Gestione Archivio Messaggi abilitata" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "Gestione Archivio Messaggi disabilitata" @@ -1717,12 +1829,14 @@ msgstr "Servizio/Porta" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Abilitato" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Disabilitato" @@ -1849,52 +1963,62 @@ msgstr "Gitweb" msgid "Simple Git Hosting" msgstr "Semplice Git Hosting" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "URL del repository non valido." -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "Nome del deposito non valido." -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" "Nome di un nuovo repository o URL per importare un repository esistente." -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "Descrizione del repository" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "Opzionale, per la visualizzazione su Gitweb." -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Nome del proprietario del deposito" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "Deposito privato" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "Consentire l'accesso a questo repository solo agli utenti autorizzati." -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "Esiste già un deposito con questo nome." -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "Nome del deposito" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 #, fuzzy msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "Una stringa alfanumerica che identifica in modo univoco un deposito." +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default" +msgid "Default branch" +msgstr "Default" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "Git" @@ -1959,11 +2083,6 @@ msgstr "Repository modificato." msgid "Edit repository" msgstr "Modifica repository" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "Si è verificato un errore durante la configurazione." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1974,34 +2093,36 @@ msgstr "{name} cancellato." msgid "Could not delete {name}: {error}" msgstr "Non è stato possibile cancellare {name}: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Documentazione" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Manuale" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 #, fuzzy msgid "Get Support" msgstr "Richiedi assistenza" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Invia feedback" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "Contribuire" @@ -2082,22 +2203,6 @@ msgstr "C'è una nuova versione %(box_name)s disponibile." msgid "%(box_name)s is up to date." msgstr "%(box_name)s è aggiornato." -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "Nota di sicurezza" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" -"State usando pacchetti da backport Debian. Si prega di notare che questi " -"pacchetti non hanno il supporto di sicurezza di Debian. Tuttavia, sono " -"mantenuti con il massimo impegno dai collaboratori della comunità Debian e " -"FreedomBox." - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2306,16 +2411,16 @@ msgstr "" "Per favore rimuovi qualsiasi password o altre informazioni personali dal " "log prima di allegarlo a questo report ug." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "FAQ e documentazione" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, fuzzy, python-brace-format msgid "About {box_name}" msgstr "Sul {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "Manuale {box_name}" @@ -2351,20 +2456,20 @@ msgstr "" "La prima visita all'interfaccia web fornita inizierà il processo di " "configurazione." -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "Gestione dell'applicazione I2P" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 #, fuzzy msgid "Anonymity Network" msgstr "Rete di anonimato" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "Proxy I2P" @@ -2541,11 +2646,11 @@ msgstr "" "desktop e installarlo. Dopo avviare Hobby e seleziona \"Connect to Server\" " "e entrare nel tuo nome di dominio {box_name}." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby Server" @@ -2673,16 +2778,6 @@ msgstr "Nessun certificato" msgid "Re-obtain" msgstr "Riottieni" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Cancella" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Revoca" @@ -2736,7 +2831,7 @@ msgstr "Certificato cancellato correttamente per il dominio {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Cancellazione certificato fallita per il dominio {domain}:{error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2753,17 +2848,22 @@ msgstr "" "Gli utenti di un certo server Matrix possono comunicare con gli altri utenti " "attestati su tutti gli altri server Matrix tramite federazione." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 +#, fuzzy +#| msgid "" +#| "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" "Per comunicaee, puoi usare i client disponibili per dispositivi mobili, desktop e per browser " "web. È raccomandato l'uso del client Riot." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -2782,8 +2882,8 @@ msgstr "" "funzione se vuoi che possano connettersi solo gli utenti esistenti." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "Riot" +msgid "Element" +msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2852,11 +2952,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "Registrazione pubblica abilitata" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "Registrazione pubblica disabilitata" @@ -2999,12 +3099,12 @@ msgstr "" "porta predefinita (30000). Per connettersi al server, è necessario un client Minetest." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Block Sandbox" @@ -3054,7 +3154,7 @@ msgstr "" "danno." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Indirizzo" @@ -3063,19 +3163,19 @@ msgstr "Indirizzo" msgid "Port" msgstr "Porta" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "Configurazione \"numero massimo giocatori\" aggiornata" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "Configurazione \"Modalità creativa\" aggiornata" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "Configurazione PVP aggiornata" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 #, fuzzy msgid "Damage configuration updated" msgstr "Configurazione \"danni\" abilitata" @@ -3369,11 +3469,11 @@ msgstr "" "64738 Sono disponibili dei client da " "connettere a Mumble dai tuoi dispositivi desktop e android." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "Voice Chat" @@ -3399,7 +3499,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -3424,6 +3524,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Servizio" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3436,39 +3542,39 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Reti" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Utilizzo DNSSEC su IPv{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Tipo Connessione" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Nome Connessione" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 #, fuzzy #| msgid "Interface" msgid "Network Interface" msgstr "Interfaccia" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" "Il dispositivo di rete a cui dovrebbe essere legata questa connessione." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Firewall Zone" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3476,21 +3582,21 @@ msgstr "" "La firewall zone controlla quali servizi sono disponibili su questa " "interfaccia. Selezione Interna solo per le reti fidate." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Esterna" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Interna" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "Metodo d'indirizzamento IPv4" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3501,19 +3607,26 @@ msgstr "" "come client. Col metodo \"Condiviso\" {box_name} agisce come router, " "configura i client nella sua rete e condivide la sua connessione Internet." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "Automatico (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Condiviso" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Manuale" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Netmask" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3521,21 +3634,21 @@ msgstr "" "Valore opzionale. Le lasciato vuoto, sarà usato un valore predefinito basato " "sull'indirizzo IP." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "Valore opzionale." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS Server" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3544,11 +3657,11 @@ msgstr "" "indirizzamento è \"Automatico\", i server DNS assegnati dal server DHCP " "saranno ignorati." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "Server DNS secondario" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3556,11 +3669,11 @@ msgstr "" "Valore opzionale. Se viene assegnato un valore e il metodo d'indirizzamento " "è \"Automatico\", i server DNS assegnati dal server DHCP saranno ignorati." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "Metodo Indirizzamento IPv6" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3569,27 +3682,27 @@ msgstr "" "Con la modalità \"Automatica\" il {box_name} otterrà la configurazione di " "rete come client." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Automatica" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "Automatica, solo DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "Ignora" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "Prefisso" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "Valore compreso tra 1 e 128." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3598,7 +3711,7 @@ msgstr "" "d'indirizzamento IPv6 è \"automatico\", i server DNS forniti dal server DHCP " "saranno ignorati." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3607,54 +3720,54 @@ msgstr "" "d'indirizzamento IPv6 è \"automatico\", i server DNS forniti dal server DHCP " "saranno ignorati." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- seleziona--" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "Il nome visibile sella rete." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Modalità" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Infrastruttura" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Access Point" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Banda di frequenza" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Canale" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3663,11 +3776,11 @@ msgstr "" "selezionata. Il valore 0, o l'assenza di valore, significa che sarà " "impostata la selezione automatica." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3677,11 +3790,11 @@ msgstr "" "connessione ad un access point, connettersi solo se il BSSID dell'access " "point combacia con quello fornito. Per esempio: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Modalità Autenticazione" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3689,21 +3802,21 @@ msgstr "" "Scegli WPA se la rete wireless è protetta e richiede che i client abbiano la " "password WiFi." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Aperta" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, fuzzy, python-brace-format #| msgid "Direct connection to the Internet." msgid "Specify how your {box_name} is connected to your network" msgstr "Connessione diretta a Internet." -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3711,7 +3824,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3720,7 +3833,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3728,11 +3841,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3743,7 +3856,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3767,19 +3880,19 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "General Configuration" msgid "Preferred router configuration" msgstr "Configurazione Generale" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3995,7 +4108,7 @@ msgid "Create Connection" msgstr "Crea Connessione" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Cancella Connessione" @@ -4040,7 +4153,7 @@ msgid "Computer" msgstr "Computer" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Modifica Concessione" @@ -4052,13 +4165,13 @@ msgstr "Connessione" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "Reti WiFi vicine" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Aggiungi Connessione" @@ -4099,6 +4212,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -4241,73 +4355,73 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Connessione di rete" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "Non è possibile mostrare la connessione: Connessione non trovata." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "Informazioni Connessione" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "Impossibile modificare la connessione: connessione non trovata." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "Questo tipo di connessione non è ancora riconosciuto." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "Attivata connessione {name}." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "Attivazione connessione fallita: connessione non trovata." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Attivazione connessione {name} fallita: non è disponibile nessun dispositivo " "idoneo." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Disattivata connessione {name}." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "Disattivazione connessione fallita: connessione non trovata." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "Aggiungendo Nuova Connessione Generica" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "Aggiungendo Nuova Connessione Ethernet" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "Aggiungendo Nuova Connessione PPPoE" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "Aggiungendo Nuova Connessione WiFi" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "Connessione {name} cancellata." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "Cancellazione connessione fallita: connessione non trovata." @@ -4328,16 +4442,16 @@ msgstr "" "accedere al resto della rete Internet via {box_name} per una maggiore " "sicurezza e anonimità." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Rete virtuale privata" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4414,11 +4528,11 @@ msgstr "" msgid "Download my profile" msgstr "Scarica il mio profilo" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Setup completato." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Setup fallito." @@ -4654,6 +4768,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 #, fuzzy #| msgid "System Configuration" @@ -4762,7 +4889,7 @@ msgstr "Privoxy" msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Accesso {url} con proxy {proxy} su tcp{kind}" @@ -4796,11 +4923,11 @@ msgstr "" "org/downloads\">desktop e mobile." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "Client IRC" @@ -4808,7 +4935,7 @@ msgstr "Client IRC" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4827,19 +4954,19 @@ msgstr "" "href=\"http://radicale.org/clients/\"> un'applicazione client supportata. È possibile accedere a Radicale da ogni utente con un profilo {box_name}." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "Calendario e Rubrica" @@ -4867,6 +4994,12 @@ msgstr "" "Ogni utente con un {box_name} login può visualizzare o apportare modifiche " "ad ogni calendario/rubrica." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Access Point" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "DAVx5" @@ -5084,40 +5217,40 @@ msgstr "Nome Kite" msgid "Action" msgstr "Azioni" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 #, fuzzy #| msgid "Shared" msgid "Open Share" msgstr "Condiviso" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Shared" msgid "Home Share" msgstr "Condiviso" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 #, fuzzy #| msgid "PageKite enabled" msgid "Share enabled." msgstr "PageKite abilitato" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Errore installazione applicazione: {error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "PageKite disabled" msgid "Share disabled." msgstr "PageKite disabilitato" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Errore installazione applicazione: {error}" @@ -5154,10 +5287,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -5174,11 +5303,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -5208,8 +5332,33 @@ msgstr "" msgid "Show security report" msgstr "Sicurezza" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -5286,12 +5435,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -5562,8 +5711,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5679,7 +5828,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5725,7 +5874,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -5741,104 +5890,104 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 #, fuzzy msgid "The device is already unmounting." msgstr "Il dispositivo sta già smontando." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "Il dispositivo è già montato." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6000,11 +6149,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -6043,7 +6192,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6052,40 +6201,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -6215,7 +6364,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Impostazioni invariate" @@ -6271,11 +6420,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6283,11 +6432,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -6301,6 +6450,23 @@ msgstr "Abilita l'aggiornamento automatico" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s is up to date." @@ -6319,50 +6485,75 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +#, fuzzy +#| msgid "Manual update" +msgid "Manual Update" msgstr "Aggiornamento manuale" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "Aggiorna adesso" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6386,7 +6577,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6401,16 +6592,12 @@ msgstr "" msgid "Enter a valid username." msgstr "Nome Server Invalido" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6419,63 +6606,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -6602,7 +6789,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6732,7 +6919,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6761,7 +6948,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" msgid "Add Connection to Server" @@ -6861,77 +7048,77 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy #| msgid "This service already exists" msgid "Client with public key already exists" msgstr "Questo servizio è già presente" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "Aggiorna impostazioni" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy #| msgid "IRC Client" msgid "Modify Client" msgstr "Client IRC" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "Archive deleted." msgid "Client deleted." msgstr "Archivio cancellato." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added custom service" msgid "Added new server." msgstr "Servizio personalizzato aggiunto" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "Tipo Connessione" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "Aggiorna impostazioni" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Edit Connection" msgid "Modify Connection to Server" msgstr "Modifica Concessione" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "Cancella Connessione" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "Archive deleted." msgid "Server deleted." @@ -6945,23 +7132,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -7214,14 +7401,47 @@ msgstr "Nessun certificato" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Puoi controllare le impostazioni di rete e " +"modificarle se necessario." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." msgstr "" +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "protocollo" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "Configurazione %(box_name)s" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "" @@ -7266,6 +7486,125 @@ msgstr "%(percentage)s%% completata" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports activated." +#~ msgstr "Backup" + +#, fuzzy +#~| msgid "" +#~| "Coquelicot is a “one-click” file sharing web application with a focus on " +#~| "protecting users’ privacy. It is best used for quickly sharing a single " +#~| "file. " +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot è un'applicazione web \"one-click\" di condivisione file, con " +#~ "un focus sulla riservatezza dell'utente. È l'ideale per la condivisione " +#~ "rapida di singoli file. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Questa istanza di Coquelicot è esposta al pubblico ma richiede una " +#~ "password per l'upload. È possibile impostare una nuova password nel " +#~ "modulo che apparirà sotto, dopo l'installazione. La password predefinita " +#~ "è \"test\"." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#, fuzzy +#~ msgid "Upload Password" +#~ msgstr "Password per l'upload" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Imposta una nuova password per Coquelicot. Lascia questo campo vuoto per " +#~ "mantenere la password corrente." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Massima grandezza file (in MiB)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Imposta la grandezza massima dei file che è possibile caricare su " +#~ "Coquelicot." + +#~ msgid "coquelicot" +#~ msgstr "coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Password upload aggiornata" + +#~ msgid "Failed to update upload password" +#~ msgstr "Aggiornamento password upload fallito" + +#, fuzzy +#~ msgid "Maximum file size updated" +#~ msgstr "Grandezza massima file caricati" + +#, fuzzy +#~ msgid "Failed to update maximum file size" +#~ msgstr "Aggiornamento dimensione massima file fallito" + +#~ msgid "Riot" +#~ msgstr "Riot" + +#~ msgid "Security Notice" +#~ msgstr "Nota di sicurezza" + +#, fuzzy +#~| msgid "" +#~| "You are using packages from Debian backports. Please note that these " +#~| "packages do not have security support from Debian. However, they are " +#~| "maintained on a best-effort basis by contributors in Debian and " +#~| "FreedomBox community." +#~ msgid "" +#~ "Backports are enabled. Please note that packages from the backports " +#~ "repository do not have security support from Debian. However, they are " +#~ "maintained on a best-effort basis by contributors in Debian and " +#~ "FreedomBox community." +#~ msgstr "" +#~ "State usando pacchetti da backport Debian. Si prega di notare che questi " +#~ "pacchetti non hanno il supporto di sicurezza di Debian. Tuttavia, sono " +#~ "mantenuti con il massimo impegno dai collaboratori della comunità Debian " +#~ "e FreedomBox." + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Backup" + +#, fuzzy +#~| msgid "" +#~| "You are using packages from Debian backports. Please note that these " +#~| "packages do not have security support from Debian. However, they are " +#~| "maintained on a best-effort basis by contributors in Debian and " +#~| "FreedomBox community." +#~ msgid "" +#~ "Please note that backports packages do not have security support from " +#~ "Debian. However, they are maintained on a best-effort basis by " +#~ "contributors in Debian and FreedomBox community." +#~ msgstr "" +#~ "State usando pacchetti da backport Debian. Si prega di notare che questi " +#~ "pacchetti non hanno il supporto di sicurezza di Debian. Tuttavia, sono " +#~ "mantenuti con il massimo impegno dai collaboratori della comunità Debian " +#~ "e FreedomBox." + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "Attiva" + #, fuzzy #~ msgid "Restoring" #~ msgstr "Recupero" @@ -7436,9 +7775,6 @@ msgstr "" #~ msgid "Manage" #~ msgstr "Gestisci" -#~ msgid "Create" -#~ msgstr "Crea" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "" #~ "Il voucher che hai ricevuto con l'edizione Danube del tuo {box_name}" @@ -7699,11 +8035,6 @@ msgstr "" #~ "Percorso di una cartella su questo server in cui verrà estratto " #~ "l'archivio." -#, fuzzy -#~| msgid "Backups" -#~ msgid "Backup archives" -#~ msgstr "Backup" - #~ msgid "Export" #~ msgstr "Esporta" diff --git a/plinth/locale/ja/LC_MESSAGES/django.po b/plinth/locale/ja/LC_MESSAGES/django.po index ab88fd361..6874ab99e 100644 --- a/plinth/locale/ja/LC_MESSAGES/django.po +++ b/plinth/locale/ja/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,7 +22,7 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "" @@ -127,11 +127,11 @@ msgstr "" msgid "Local Network Domain" msgstr "" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "" -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "" @@ -140,6 +140,10 @@ msgstr "" msgid "{app} (No data to backup)" msgstr "" +#: plinth/modules/backups/forms.py:50 +msgid "Repository" +msgstr "" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -205,7 +209,15 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +msgid "Key in Repository" +msgstr "" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "" @@ -368,6 +380,7 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -570,6 +583,164 @@ msgstr "" msgid "Mounting failed" msgstr "" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +msgid "Create or upload files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +msgid "Delete files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +msgid "File & Snippet Sharing" +msgstr "" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +msgid "Manage Passwords" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +msgid "Add password" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "" + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "" + +#: plinth/modules/bepasty/views.py:97 +msgid "Password added." +msgstr "" + +#: plinth/modules/bepasty/views.py:102 +msgid "Add Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:119 +msgid "Password deleted." +msgstr "" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -584,11 +755,11 @@ msgid "" "connection from {box_name}." msgstr "" -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "" @@ -615,6 +786,7 @@ msgstr "" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -637,9 +809,9 @@ msgstr "" msgid "Refresh IP address and domains" msgstr "" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -711,12 +883,13 @@ msgid "Configure" msgstr "" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "" @@ -774,7 +947,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "" @@ -818,67 +991,6 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -893,11 +1005,11 @@ msgid "" "need to be configured with the details provided here." msgstr "" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "" @@ -929,7 +1041,7 @@ msgstr "" msgid "Date & Time" msgstr "" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "" @@ -988,16 +1100,28 @@ msgstr "" msgid "Bittorrent client written in Python/PyGTK" msgstr "" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "" +#: plinth/modules/diagnostics/__init__.py:102 +msgid "passed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:103 +msgid "failed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1122,46 +1246,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1170,68 +1294,72 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "" +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +msgid "other update URL" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "" @@ -1285,7 +1413,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1327,12 +1455,12 @@ msgid "" "any user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1379,11 +1507,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1395,11 +1523,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1449,12 +1577,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1562,50 +1692,58 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1668,11 +1806,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1683,33 +1816,33 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1770,18 +1903,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -1926,16 +2047,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1960,19 +2081,19 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2122,11 +2243,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2238,16 +2359,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2297,7 +2408,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2307,14 +2418,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2330,7 +2441,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2383,11 +2494,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "" @@ -2496,12 +2607,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2542,7 +2653,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2551,19 +2662,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2830,11 +2941,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -2860,7 +2971,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -2885,6 +2996,10 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +msgid "Services" +msgstr "" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -2897,56 +3012,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2954,185 +3069,190 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3140,7 +3260,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3149,7 +3269,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3157,11 +3277,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3172,7 +3292,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3196,17 +3316,17 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3414,7 +3534,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3459,7 +3579,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3469,13 +3589,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3516,6 +3636,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3652,71 +3773,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3731,16 +3852,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3796,11 +3917,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -3995,6 +4116,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4080,7 +4214,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4104,11 +4238,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4116,7 +4250,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4126,19 +4260,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4160,6 +4294,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4360,32 +4498,32 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -4422,10 +4560,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4442,11 +4576,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4474,8 +4603,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4542,12 +4696,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -4816,8 +4970,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -4932,7 +5086,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -4973,7 +5127,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -4989,103 +5143,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5244,11 +5398,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5287,7 +5441,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5296,40 +5450,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5455,7 +5609,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5506,11 +5660,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5518,11 +5672,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" msgstr "" @@ -5534,6 +5688,23 @@ msgstr "" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5551,50 +5722,73 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5618,7 +5812,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5631,16 +5825,12 @@ msgstr "" msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5649,63 +5839,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -5832,7 +6022,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5952,7 +6142,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -5979,7 +6169,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -6067,59 +6257,59 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "" -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "" @@ -6131,23 +6321,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6389,12 +6579,40 @@ msgstr "" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 diff --git a/plinth/locale/kn/LC_MESSAGES/django.po b/plinth/locale/kn/LC_MESSAGES/django.po index ab88fd361..534b95192 100644 --- a/plinth/locale/kn/LC_MESSAGES/django.po +++ b/plinth/locale/kn/LC_MESSAGES/django.po @@ -3,28 +3,29 @@ # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # -#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-07-16 16:41+0000\n" +"Last-Translator: Yogesh \n" +"Language-Team: Kannada \n" +"Language: kn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.2-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" msgstr "" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" -msgstr "" +msgstr "ಫ್ರೀಡಂಬಾಕ್ಸ್" #: plinth/daemon.py:85 #, python-brace-format @@ -127,11 +128,11 @@ msgstr "" msgid "Local Network Domain" msgstr "" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "" -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "" @@ -140,6 +141,10 @@ msgstr "" msgid "{app} (No data to backup)" msgstr "" +#: plinth/modules/backups/forms.py:50 +msgid "Repository" +msgstr "" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -205,7 +210,15 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +msgid "Key in Repository" +msgstr "" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "" @@ -368,6 +381,7 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -570,6 +584,164 @@ msgstr "" msgid "Mounting failed" msgstr "" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +msgid "Create or upload files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +msgid "Delete files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +msgid "File & Snippet Sharing" +msgstr "" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +msgid "Manage Passwords" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +msgid "Add password" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "" + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "" + +#: plinth/modules/bepasty/views.py:97 +msgid "Password added." +msgstr "" + +#: plinth/modules/bepasty/views.py:102 +msgid "Add Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:119 +msgid "Password deleted." +msgstr "" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -584,11 +756,11 @@ msgid "" "connection from {box_name}." msgstr "" -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "" @@ -615,6 +787,7 @@ msgstr "" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -637,9 +810,9 @@ msgstr "" msgid "Refresh IP address and domains" msgstr "" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -711,12 +884,13 @@ msgid "Configure" msgstr "" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "" @@ -774,7 +948,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "" @@ -818,67 +992,6 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -893,11 +1006,11 @@ msgid "" "need to be configured with the details provided here." msgstr "" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "" @@ -929,7 +1042,7 @@ msgstr "" msgid "Date & Time" msgstr "" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "" @@ -988,16 +1101,28 @@ msgstr "" msgid "Bittorrent client written in Python/PyGTK" msgstr "" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "" +#: plinth/modules/diagnostics/__init__.py:102 +msgid "passed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:103 +msgid "failed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1122,46 +1247,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1170,68 +1295,72 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "" +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +msgid "other update URL" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "" @@ -1285,10 +1414,10 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" -msgstr "" +msgstr "ಬಗ್ಗೆ" #: plinth/modules/dynamicdns/views.py:32 #: plinth/modules/firewall/templates/firewall.html:10 @@ -1327,12 +1456,12 @@ msgid "" "any user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1379,11 +1508,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1395,11 +1524,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1449,12 +1578,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1562,50 +1693,58 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1668,11 +1807,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1683,33 +1817,33 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1770,18 +1904,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -1926,16 +2048,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1960,19 +2082,19 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2122,11 +2244,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2238,16 +2360,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2297,7 +2409,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2307,14 +2419,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2330,7 +2442,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2383,11 +2495,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "" @@ -2496,12 +2608,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2542,7 +2654,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2551,19 +2663,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2830,11 +2942,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -2860,7 +2972,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -2885,6 +2997,10 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +msgid "Services" +msgstr "" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -2897,56 +3013,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2954,185 +3070,190 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3140,7 +3261,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3149,7 +3270,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3157,11 +3278,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3172,7 +3293,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3196,17 +3317,17 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3414,7 +3535,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3459,7 +3580,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3469,13 +3590,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3516,6 +3637,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3652,71 +3774,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3731,16 +3853,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3796,11 +3918,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -3995,6 +4117,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4080,7 +4215,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4104,11 +4239,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4116,7 +4251,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4126,19 +4261,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4160,6 +4295,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4360,32 +4499,32 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -4422,10 +4561,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4442,11 +4577,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4474,8 +4604,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4542,12 +4697,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -4816,8 +4971,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -4932,7 +5087,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -4973,7 +5128,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -4989,103 +5144,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5244,11 +5399,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5287,7 +5442,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5296,40 +5451,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5455,7 +5610,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5506,11 +5661,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5518,11 +5673,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" msgstr "" @@ -5534,6 +5689,23 @@ msgstr "" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5551,50 +5723,73 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5618,7 +5813,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5631,16 +5826,12 @@ msgstr "" msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5649,63 +5840,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -5832,7 +6023,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5952,7 +6143,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -5979,7 +6170,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -6067,59 +6258,59 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "" -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "" @@ -6131,23 +6322,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6389,12 +6580,40 @@ msgstr "" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 diff --git a/plinth/locale/lt/LC_MESSAGES/django.po b/plinth/locale/lt/LC_MESSAGES/django.po index 7adb2207a..fb1bc4fdf 100644 --- a/plinth/locale/lt/LC_MESSAGES/django.po +++ b/plinth/locale/lt/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -23,7 +23,7 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "" @@ -128,11 +128,11 @@ msgstr "" msgid "Local Network Domain" msgstr "" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "" -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "" @@ -141,6 +141,10 @@ msgstr "" msgid "{app} (No data to backup)" msgstr "" +#: plinth/modules/backups/forms.py:50 +msgid "Repository" +msgstr "" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -206,7 +210,15 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +msgid "Key in Repository" +msgstr "" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "" @@ -369,6 +381,7 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -571,6 +584,164 @@ msgstr "" msgid "Mounting failed" msgstr "" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +msgid "Create or upload files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +msgid "Delete files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +msgid "File & Snippet Sharing" +msgstr "" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +msgid "Manage Passwords" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +msgid "Add password" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "" + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "" + +#: plinth/modules/bepasty/views.py:97 +msgid "Password added." +msgstr "" + +#: plinth/modules/bepasty/views.py:102 +msgid "Add Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:119 +msgid "Password deleted." +msgstr "" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -585,11 +756,11 @@ msgid "" "connection from {box_name}." msgstr "" -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "" @@ -616,6 +787,7 @@ msgstr "" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -638,9 +810,9 @@ msgstr "" msgid "Refresh IP address and domains" msgstr "" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -712,12 +884,13 @@ msgid "Configure" msgstr "" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "" @@ -775,7 +948,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "" @@ -819,67 +992,6 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -894,11 +1006,11 @@ msgid "" "need to be configured with the details provided here." msgstr "" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "" @@ -930,7 +1042,7 @@ msgstr "" msgid "Date & Time" msgstr "" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "" @@ -989,16 +1101,28 @@ msgstr "" msgid "Bittorrent client written in Python/PyGTK" msgstr "" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "" +#: plinth/modules/diagnostics/__init__.py:102 +msgid "passed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:103 +msgid "failed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1123,46 +1247,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1171,68 +1295,72 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "" +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +msgid "other update URL" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "" @@ -1286,7 +1414,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1328,12 +1456,12 @@ msgid "" "any user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1380,11 +1508,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1396,11 +1524,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1450,12 +1578,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1563,50 +1693,58 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1669,11 +1807,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1684,33 +1817,33 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1771,18 +1904,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -1927,16 +2048,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1961,19 +2082,19 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2123,11 +2244,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2239,16 +2360,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2298,7 +2409,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2308,14 +2419,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2331,7 +2442,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2384,11 +2495,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "" @@ -2497,12 +2608,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2543,7 +2654,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2552,19 +2663,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2831,11 +2942,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -2861,7 +2972,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -2886,6 +2997,10 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +msgid "Services" +msgstr "" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -2898,56 +3013,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2955,185 +3070,190 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3141,7 +3261,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3150,7 +3270,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3158,11 +3278,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3173,7 +3293,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3197,17 +3317,17 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3415,7 +3535,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3460,7 +3580,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3470,13 +3590,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3517,6 +3637,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3653,71 +3774,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3732,16 +3853,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3797,11 +3918,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -3996,6 +4117,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4081,7 +4215,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4105,11 +4239,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4117,7 +4251,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4127,19 +4261,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4161,6 +4295,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4361,32 +4499,32 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -4423,10 +4561,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4443,11 +4577,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4475,8 +4604,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4543,12 +4697,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -4817,8 +4971,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -4933,7 +5087,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -4974,7 +5128,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -4990,103 +5144,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5245,11 +5399,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5288,7 +5442,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5297,40 +5451,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5456,7 +5610,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5507,11 +5661,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5519,11 +5673,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" msgstr "" @@ -5535,6 +5689,23 @@ msgstr "" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5552,50 +5723,73 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5619,7 +5813,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5632,16 +5826,12 @@ msgstr "" msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5650,63 +5840,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -5833,7 +6023,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5953,7 +6143,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -5980,7 +6170,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -6068,59 +6258,59 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "" -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "" @@ -6132,23 +6322,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6390,12 +6580,40 @@ msgstr "" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 diff --git a/plinth/locale/nb/LC_MESSAGES/django.po b/plinth/locale/nb/LC_MESSAGES/django.po index 432f5594a..1edbcfcd3 100644 --- a/plinth/locale/nb/LC_MESSAGES/django.po +++ b/plinth/locale/nb/LC_MESSAGES/django.po @@ -15,11 +15,11 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: 2020-07-04 19:41+0000\n" -"Last-Translator: Petter Reinholdtsen \n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-07-15 09:41+0000\n" +"Last-Translator: Allan Nordhøy \n" "Language-Team: Norwegian Bokmål \n" +"freedombox/freedombox/nb_NO/>\n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,7 +31,7 @@ msgstr "" msgid "Page source" msgstr "Sidekilde" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "FreedomBox" @@ -143,12 +143,12 @@ msgstr "Tjenesteoppdagelse" msgid "Local Network Domain" msgstr "Lokalt nettverksdomene" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "" "Sikkerhetskopier tillater opprettelse og behandling av sikkerhetskopiarkiver." -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "Sikkerhetskopier" @@ -157,6 +157,12 @@ msgstr "Sikkerhetskopier" msgid "{app} (No data to backup)" msgstr "{app} (Ingen data å sikkerhetskopiere)" +#: plinth/modules/backups/forms.py:50 +#, fuzzy +#| msgid "Create Repository" +msgid "Repository" +msgstr "Opprett depot" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -226,7 +232,17 @@ msgstr "" "«Nøkkel i depot» betyr at en passordbeskyttet nøkkel er lagret i " "sikkerhetskopien." -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +#, fuzzy +#| msgid "Create Repository" +msgid "Key in Repository" +msgstr "Opprett depot" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "Ingen" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "Passfrase" @@ -400,6 +416,7 @@ msgid "Delete Archive %(name)s" msgstr "Slett arkiv %(name)s" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -630,6 +647,184 @@ msgstr "Klarte ikke å avmontere!" msgid "Mounting failed" msgstr "Montering feilet" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +#, fuzzy +#| msgid "Restore from uploaded file" +msgid "Create or upload files" +msgstr "Gjenopprett fra opplastet fil" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +#, fuzzy +#| msgid "Delete User" +msgid "Delete files" +msgstr "Slett bruker" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +#, fuzzy +#| msgid "File Sharing" +msgid "File & Snippet Sharing" +msgstr "Fildeling" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "Tilganger" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +#, fuzzy +#| msgid "Change Password" +msgid "Manage Passwords" +msgstr "Endre passord" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +#, fuzzy +#| msgid "Show password" +msgid "Add password" +msgstr "Vis passord" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +#, fuzzy +#| msgid "No shares currently configured." +msgid "No passwords currently configured." +msgstr "Ingen delte områder er satt opp foreløpig." + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "Passord" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "Opprett" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "Slett" + +#: plinth/modules/bepasty/views.py:46 +#, fuzzy +#| msgid "admin" +msgid "Admin" +msgstr "admin" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "Konfigurering oppdatert." + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "En feil oppsto under konfigureringen." + +#: plinth/modules/bepasty/views.py:97 +#, fuzzy +#| msgid "Password updated" +msgid "Password added." +msgstr "Passord oppdatert" + +#: plinth/modules/bepasty/views.py:102 +#, fuzzy +#| msgid "Password" +msgid "Add Password" +msgstr "Passord" + +#: plinth/modules/bepasty/views.py:119 +#, fuzzy +#| msgid "Password updated" +msgid "Password deleted." +msgstr "Passord oppdatert" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -650,11 +845,11 @@ msgstr "" "maskiner på lokalnettverket. Det er også inkompatibelt med deling av " "internettilknytning fra {box_name}." -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "Domenenavnetjener" @@ -685,6 +880,7 @@ msgstr "Tjenerdomene" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -709,9 +905,9 @@ msgstr "IP-adresser" msgid "Refresh IP address and domains" msgstr "Oppdater IP-adresse og domener" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -799,12 +995,13 @@ msgid "Configure" msgstr "Oppsett" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "Domenenavn" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "Ugyldig domenenavn" @@ -877,7 +1074,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "Vis avanserte programmer og funksjoner" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "Vis programmer og funksjoner som krever dypere teknisk innsikt." @@ -921,82 +1118,6 @@ msgstr "Viser avanserte programmer og funksjoner" msgid "Hiding advanced apps and features" msgstr "Viser ikke avanserte programmer og funksjoner" -#: plinth/modules/coquelicot/__init__.py:24 -#, fuzzy -#| msgid "" -#| "Coquelicot is a “one-click” file sharing web application with a focus on " -#| "protecting users’ privacy. It is best used for quickly sharing a single " -#| "file. " -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" -"Coquelicot er et fildelingsprogram som kun krever ett klikk, med fokus på " -"beskyttelse av brukeres personvern. Det er best for rask deling av ei enkelt " -"fil. " - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" -"Denne Coquelicot-instansen er synlig for offentligheten, men kreves et " -"opplastet passord for å forhindre uautorisert tilgang. Du kan sette et nytt " -"opplastingspassord i skjemaet som vises nedenfor etter installasjonen. " -"Forvalgt opplastingspassord er \"test\"." - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "Coquelicot" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "Fildeling" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "Opplastingspassord" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" -"Sett et nytt opplastingspassord for Conquelicot. La dette feltet stå tomt " -"for å beholde gjeldende passord." - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "Maksimal filstørrelse (MB)" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" -"Sett maksimal filstørrelse for filer som kan lastes opp til Coquelicot." - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "coquelicot" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "Oppdaterte opplastingspassord" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "Klarte ikke å oppdatere opplastingspassord" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "Oppdaterte maksimal filstørrelse" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "Klarte ikke å oppdatere maksimal filstørrelse" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -1011,11 +1132,11 @@ msgid "" "need to be configured with the details provided here." msgstr "" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "" @@ -1053,7 +1174,7 @@ msgstr "" msgid "Date & Time" msgstr "Dato og tid" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "Tid synkronisert til NTP-tjener" @@ -1124,7 +1245,7 @@ msgstr "Last ned katalog" msgid "Bittorrent client written in Python/PyGTK" msgstr "BitTorrent-klient skrevet i Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1132,10 +1253,26 @@ msgstr "" "Systemets diagnostikktest vil kjøre en rekke kontroller på systemet for å få " "bekreftet at programmer og tjenester fungerer som forventet." -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "Diagnostikk" +#: plinth/modules/diagnostics/__init__.py:102 +#, fuzzy +#| msgid "Quassel" +msgid "passed" +msgstr "Quassel" + +#: plinth/modules/diagnostics/__init__.py:103 +#, fuzzy +#| msgid "Setup failed." +msgid "failed" +msgstr "Oppsettet mislyktes." + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1280,7 +1417,7 @@ msgstr "Dynamisk DNS-klient" msgid "Dynamic Domain Name" msgstr "Dynamisk domenenavn" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1290,7 +1427,7 @@ msgstr "" "i nettadressen. For detaljer, se de oppdaterte nettadressemalene fra " "eksempel leverandørene." -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1300,7 +1437,7 @@ msgstr "" "leverandøren ikke støtter GnuDIP-protokollen, eller din leverandør ikke er " "oppført, kan du bruke leverandørens URL for oppdatering." -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1308,19 +1445,19 @@ msgstr "" "Vennligst ikke bruk en nettadresse her (som \"https://example.com/\"), men " "bare vertsnavnet til GnuDIP-serveren (som \"example.com\")." -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" "Det offentlige domenenavnet du ønsker å bruke for å få tilgang til ditt " "{box_name}." -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Bruk dette alternativet hvis leverandøren bruker selvsignerte sertifikater." -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1328,11 +1465,11 @@ msgstr "" "Hvis dette alternativet velges, vil ditt brukernavn og passord brukes for " "enkel godkjenning i HTTP." -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "La dette feltet stå tomt hvis du vil beholde ditt nåværende passord." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1345,68 +1482,74 @@ msgstr "" "den virkelige Internett-IP-en. Nettadressen skal bare returnere IP-en som " "tjeneren kommer fra (eksempelvis: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "Brukernavnet som ble benyttet da kontoen ble opprettet." +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +#, fuzzy +#| msgid "Update URL" +msgid "other update URL" +msgstr "Oppdater URL" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "Aktiver dynamisk DNS (Dynamic DNS)" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "Type tjeneste" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "GnuDIP-tjeneradresse" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "Ugyldig tjenernavn" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "Oppdater URL" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "Godta alle SSL-sertifikater" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "Bruk HTTP-basisgodkjenning" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "Brukernavn" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "Passord" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "Vis passord" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "URL for å slå opp offentlig IP" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Vennligst oppgi en oppdatert nettadresse eller en GnuDIP-tjeneradresse" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "Vennligst oppgi et GnuDIP-brukernavn" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "Vennligst oppgi et GnuDIP-domenenavn" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "Vennligst oppgi et passord" @@ -1477,7 +1620,7 @@ msgstr "" msgid "Last update" msgstr "Siste oppdatering" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Om" @@ -1526,12 +1669,12 @@ msgstr "" "tilgjengelig for enhver bruker med innlogging på " "{box_name}." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Nettprat-tjener" @@ -1588,11 +1731,11 @@ msgstr "" "offentlige XMPP-tjenere (inkludert via Tor), og selv koble til din egen " "tjener, for bedret sikkerhet." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "Gajim" @@ -1607,11 +1750,11 @@ msgstr "" "se slik ut: username@%(domainname)s. Du kan sette opp ditt domene på " "systemsiden Configure ." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "Meldingsarkivhåndtering aktivert" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "Meldingsarkivhåndtering deaktivert" @@ -1668,12 +1811,14 @@ msgstr "Tjeneste/Port" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Aktivert" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Deaktivert" @@ -1707,7 +1852,7 @@ msgstr "" #: plinth/modules/networks/templates/networks_configuration.html:49 #: plinth/modules/storage/templates/storage.html:94 msgid "Advanced" -msgstr "" +msgstr "Avansert" #: plinth/modules/firewall/templates/firewall.html:98 msgid "" @@ -1801,15 +1946,15 @@ msgstr "Gitweb" msgid "Simple Git Hosting" msgstr "Enkelt Git-vertsskap" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "Ugyldig depot-nettadresse." -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "Ugyldig depotnavn." -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 #, fuzzy #| msgid "" #| "Repository path is neither empty nor is an existing backups repository." @@ -1818,43 +1963,43 @@ msgstr "" "Pakkebrønnssti er hverken tom eller en eksisterende " "sikkerhetskopieringspakkebrønn." -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "Create new repository" msgid "Description of the repository" msgstr "Opprett nytt depot" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 #, fuzzy msgid "Optional, for displaying on Gitweb." msgstr "Valgfritt, for visning på Gitweb." -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" msgstr "Depot fjernet." -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "Privat depot" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 #, fuzzy msgid "Allow only authorized users to access this repository." msgstr "Tillat kun autoriserte brukere tilgang til dette kodelageret." -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 #, fuzzy #| msgid "A share with this name already exists." msgid "A repository with this name already exists." msgstr "En deling ved dette navnet finnes allerede." -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "Navn på depot" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 #, fuzzy #| msgid "" #| "A lowercase alpha-numeric string that uniquely identifies a share. " @@ -1864,6 +2009,16 @@ msgstr "" "En alfanumerisk streng med små bokstaver som unikt identifiserer en deling. " "Eksempel media." +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default Skin" +msgid "Default branch" +msgstr "Forvalgt drakt" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "Git" @@ -1938,11 +2093,6 @@ msgstr "Depot opprettet." msgid "Edit repository" msgstr "Rediger depot" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "En feil oppsto under konfigureringen." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1953,33 +2103,35 @@ msgstr "Slettet {name}." msgid "Could not delete {name}: {error}" msgstr "Kunne ikke slette {name}: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentasjon" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Manual" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Få støtte" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Send inn tilbakemeldinger" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "Bidra" @@ -2060,22 +2212,6 @@ msgstr "En ny %(box_name)s-versjon er tilgjengelig." msgid "%(box_name)s is up to date." msgstr "%(box_name)s er oppdatert." -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "Sikkerhetsmerknad" - -#: plinth/modules/help/templates/help_about.html:81 -#, fuzzy -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" -"Du bruker pakker fra Debian backports. Merk deg at disse pakkene ikke har " -"sikkerhetsstøtte fra Debian. Dog vedlikeholdes de etter beste evne av " -"utviklere i Debian og FreedomBox-fellesskapet." - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2271,16 +2407,16 @@ msgstr "" "Alle passord og annen personlig informasjon bør fjernes fra loggen før du " "sender inn feilrapporten." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "Dokumentasjon og ofte stilte spørsmål" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "Om {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Manual" @@ -2313,19 +2449,19 @@ msgstr "" "Den første til å besøke det oppsatte nettgrensesnittet vil igangsette " "oppsettsprosessen." -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "Håndter I2P-program" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "Anonymitetsnettverk" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P-mellomtjener" @@ -2505,11 +2641,11 @@ msgstr "" "skrivebordsklient og installer den. Deretter starter du Gobby og velger " "«Koble til tjener», og skriver inn domenenavnet til din {box_name} ." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby-tjener" @@ -2634,16 +2770,6 @@ msgstr "Sertifikat mangler" msgid "Re-obtain" msgstr "Gjeninnhente" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Slett" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Inndra (tilbakekall)" @@ -2697,7 +2823,7 @@ msgstr "Vellykket sletting av sertifikatet for domenet {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Klarte ikke å slette sertifikatet for domenet {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2713,17 +2839,22 @@ msgstr "" "enheter, og krever ikke telefonnumre for å virke. Brukere på en gitt Matrix-" "tjener kan snakke med brukere på alle andre samvirkende Matrix-tjenere." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 +#, fuzzy +#| msgid "" +#| "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" "For å kommunisere kan du bruke available clients (tilgjengelige klienter) for mobil, PC og " "Internett. Riot-klient anbefales." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -2742,8 +2873,8 @@ msgstr "" "eksisterende brukere skal kunne bruke den." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "Riot" +msgid "Element" +msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2814,11 +2945,11 @@ msgstr "" "sertifikat. Gå til Let's Encrypt for å " "skaffe deg det." -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "Offentlig registrering påskrudd" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "Offentlig registrering avskrudd" @@ -2951,12 +3082,12 @@ msgstr "" "forvalgte porten (30000). For å koble til tjeneren trengs en Minetest klient." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Block-sandkassen" @@ -3002,7 +3133,7 @@ msgstr "" "Når den ikke er aktiv, kan ikke spillere dø eller ta skade av noe slag." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Adresse" @@ -3011,19 +3142,19 @@ msgstr "Adresse" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "Oppsett av maks spillere oppdatert" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "Oppsett av kreativ modus oppdatert" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "PVP-oppsett oppdatert" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "Skadeoppsett oppdatert" @@ -3322,11 +3453,11 @@ msgstr "" "\"http://mumble.info\">Klienter for å koble til Mumble når skrivebordet " "og/eller Android-enheter er tilgjengelige." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "Talenettprat" @@ -3352,9 +3483,9 @@ msgstr "Mumblefly" #: plinth/modules/mumble/manifest.py:60 msgid "Mumla" -msgstr "" +msgstr "Mumla" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3391,6 +3522,12 @@ msgstr "Alle" msgid "All web apps" msgstr "Alle nettprogrammer" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Tjeneste" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3407,36 +3544,36 @@ msgstr "" "Enheter administrert gjennom andre metoder kan være utilgjengelige for " "oppsett her." -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Nettverk" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Bruker DNSSEC på IPv{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Oppkoblingstype" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Oppkoblingsnavn" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "Nettverksgrensesnitt" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "Nettverksenheten som denne forbindelsen bør være bundet til." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Brannmursone" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3444,21 +3581,21 @@ msgstr "" "Brannmuren vil kontrollere hvilke tjenester som er tilgjengelig over dette " "grensesnitt. Velg Internal (Internt) bare for klarerte nettverk." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Eksternt" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Intern" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "IPv4 adresseringsmetode" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3470,19 +3607,26 @@ msgstr "" "å oppføre seg som en router, sette opp klienter på dette nettverket og dele " "sin Internett-forbindelse." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "Automatisk (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Delt" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Manual" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Nettmaske" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3490,21 +3634,21 @@ msgstr "" "Valgfri verdi. Om det står tomt, vil en standard nettmaske, basert på " "adressen, bli brukt." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Inngangsport" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "Valgfri verdi." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS-tjener" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3512,11 +3656,11 @@ msgstr "" "Valgfri verdi. Hvis denne verdien er gitt, og IPv4-adresseringsmetoden er " "«Automatisk», så vil DNS-tjenerne levert fra en DHCP-tjener bli ignorert." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "Andre DNS-tjener" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3524,11 +3668,11 @@ msgstr "" "Valgfri verdi. Hvis denne verdien er gitt, og IPv4-adresseringsmetoden er " "«Automatisk», vil DNS-serverne som tilbys fra en DHCP-tjener bli ignorert." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "IPv6-adresseringsmetode" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3537,27 +3681,27 @@ msgstr "" "«Automatiske» metoder vil få {box_name} til å hente oppsettet fra dette " "nettverket og gjøre den til en klient." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Automatisk" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "Automatisk, kun DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "Overse" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "Forstavelse" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "Verdi mellom 1 og 128." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3565,7 +3709,7 @@ msgstr "" "Valgfri verdi. Hvis denne verdien er gitt, og IPv6-adresseringsmetoden er " "«Automatisk», så vil DNS-tjenerne levert fra en DHCP-tjener bli ignorert." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3573,54 +3717,54 @@ msgstr "" "Valgfri verdi. Hvis denne verdien er gitt, og IPv6-adresseringsmetoden er " "«Automatisk», så vil DNS-serverne som tilbys fra en DHCP-tjener bli ignorert." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- velg --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID (Service Set Identifier)" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "Det synlige navnet på nettverket." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Modus" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Infrastruktur" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Aksesspunkt" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Frekvensbånd" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3628,11 +3772,11 @@ msgstr "" "Valgfri verdi. Trådløskanal i det valgte frekvensbåndet som det skal " "begrenses til. Blank eller verdi 0 betyr at det skal velges automatisk." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3642,11 +3786,11 @@ msgstr "" "aksesspunkt, koble kun til hvis BSSID-en til aksesspunktet stemmer med det " "som er oppgitt. Eksempel: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Autentiseringsmodus" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3654,20 +3798,20 @@ msgstr "" "Velg WPA (Wi-Fi Protected Access) hvis det trådløse nettverket er sikret og " "krever at brukerne har passordet som trengs for å koble seg til." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Åpen" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "Angi hvordan din {box_name} er tilkoblet ditt nettverket" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3675,7 +3819,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3688,7 +3832,7 @@ msgstr "" "kort. {box_name} er koblet direkte til Internet og alle enhetene dine kan " "koble seg til {box_name} med Internett-forbindelsen sin.

    " -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3699,11 +3843,11 @@ msgstr "" "din er koblet direkte til idn {box_name} og det er ingen andre enheter på " "nettverket. Dette kan gjelde fellesbokser eller skyoppsett.

    " -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3714,7 +3858,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3738,19 +3882,19 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "Current Network Configuration" msgid "Preferred router configuration" msgstr "Nåværende nettverksoppsett" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3965,7 +4109,7 @@ msgid "Create Connection" msgstr "Lage forbindelse" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Slett tilkobling" @@ -4010,7 +4154,7 @@ msgid "Computer" msgstr "Datamaskin" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Endre oppkobling" @@ -4022,13 +4166,13 @@ msgstr "Tilkobling" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi-nettverk i nærheten" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Legg til tilkobling" @@ -4064,11 +4208,12 @@ msgstr "" #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 msgid "Skip this step" -msgstr "" +msgstr "Hopp over dette steget" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "Neste" @@ -4097,7 +4242,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_main.html:35 msgid "I do not know the type of connection my ISP provides." -msgstr "" +msgstr "Jeg vet ikke hvilket type tilkobling min ISP tilbyr." #: plinth/modules/networks/templates/internet_connectivity_main.html:41 #: plinth/modules/networks/templates/network_topology_main.html:41 @@ -4190,7 +4335,7 @@ msgstr "" #: plinth/modules/networks/templates/router_configuration_content.html:39 msgid "Choose How You Wish to Configure Your Router" -msgstr "" +msgstr "Velg hvordan du ønsker å sette opp din ruter" #: plinth/modules/networks/templates/router_configuration_content.html:42 msgid "" @@ -4208,73 +4353,73 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Nettverksoppkoblinger" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "Kan ikke vise tilkobling: Tilkobling ikke funnet." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "Oppkoblingsinformasjon" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "Kan ikke redigere tilkobling: Tilkobling ikke funnet." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "Denne typen tilkobling er ennå ikke forstått." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "Aktiverte tilkobling {name}." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "Kunne ikke aktivere tilkobling: Tilkobling ikke funnet." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Klarte ikke aktivere tilkoblingen {name}: Ingen passende enhet er " "tilgjengelig." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Deaktivert tilkobling {name}." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "Kunne ikke deaktivere tilkobling: Tilkobling ikke funnet." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "Legger til ny generell tilkobling" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "Legge til ny Ethernet-tilkobling" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "Legge til ny PPPoE-tilkobling" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "Legge til ny Wi-Fi-tilkobling" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "Tilkobling {name} slettet." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "Kunne ikke slette tilkobling: Tilkobling ikke funnet." @@ -4295,16 +4440,16 @@ msgstr "" "Du kan også få tilgang til resten av Internettet via {box_name} med utvidet " "sikkerhet og anonymitet." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Virtuelt privat nettverk" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4382,11 +4527,11 @@ msgstr "" msgid "Download my profile" msgstr "Last ned min profil" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Oppsettet fullført." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Oppsettet mislyktes." @@ -4619,6 +4764,19 @@ msgstr "" #: plinth/modules/performance/__init__.py:16 #: plinth/modules/performance/__init__.py:45 msgid "Performance" +msgstr "Ytelse" + +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." msgstr "" #: plinth/modules/performance/__init__.py:46 @@ -4728,7 +4886,7 @@ msgstr "Privoxy" msgid "Web Proxy" msgstr "Mellomtjener for nettet" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Tilgang {url} med mellomtjener {proxy} på tcp{kind}" @@ -4762,11 +4920,11 @@ msgstr "" "downloads\"> desktop , og mobile enheter er tilgjengelig." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "IRC-klient" @@ -4774,7 +4932,7 @@ msgstr "IRC-klient" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4793,7 +4951,7 @@ msgstr "" "href=\"http://radicale.org/clients/\">støttet klientprogram . Radicale " "kan nås av alle brukere med {box_name}-innlogging." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4803,12 +4961,12 @@ msgstr "" "kalendre og adressebøker. Den tilbyr ikke å legge inn nye hendelser eller " "kontakter, det må gjøres med en egen klient." -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "Kalender og adressebok" @@ -4836,6 +4994,12 @@ msgstr "" "Enhver bruker med brukernavn på {box_name} kan se eller gjøre endringer i " "enhver kalender/adressebok." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Aksesspunkt" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "DAVx5" @@ -4993,7 +5157,7 @@ msgstr "" #: plinth/modules/samba/manifest.py:42 msgid "VLC media player" -msgstr "" +msgstr "VLC-mediaspiller" #: plinth/modules/samba/manifest.py:56 #, fuzzy @@ -5003,7 +5167,7 @@ msgstr "GNOME-kalender" #: plinth/modules/samba/manifest.py:68 msgid "Dolphin" -msgstr "" +msgstr "Dolphin" #: plinth/modules/samba/templates/samba.html:24 #: plinth/modules/samba/templates/samba.html:35 @@ -5072,41 +5236,41 @@ msgstr "Deling lagt til." msgid "Action" msgstr "Handlinge" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "Åpne deling" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 #, fuzzy #| msgid "Add Share" msgid "Group Share" msgstr "Legg til deling" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Homepage" msgid "Home Share" msgstr "Hjemmeside" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Deling slettet." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error enabling share: {error_message}" msgstr "Feil ved utløsing av enhet: {error_message}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Share edited." msgid "Share disabled." msgstr "Deling redigert." -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error ejecting device: {error_message}" msgid "Error disabling share: {error_message}" @@ -5150,10 +5314,6 @@ msgstr "" "Velg hvilket forvalgt familiefilter som skal anvendes for dine " "søkeresultater." -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "Ingen" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "Moderat" @@ -5170,11 +5330,6 @@ msgstr "Tillat offentlig tilgang" msgid "Allow this application to be used by anyone who can reach it." msgstr "Tillat dette programmet brukt av alle som kan nå det." -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "Konfigurering oppdatert." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "Begrens konsollinnlogging (anbefalt)" @@ -5209,8 +5364,33 @@ msgstr "" msgid "Show security report" msgstr "Vis sikkerhetssårbarheter" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 #, fuzzy #| msgid "Security Notice" msgid "Security Report" @@ -5296,12 +5476,12 @@ msgstr "Nei" msgid "Not running" msgstr "Kjører ikke" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Feil ved oppsetting av begrenset tilgang: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "Oppdaterte sikkerhetsoppsett" @@ -5607,9 +5787,13 @@ msgid "Yearly Snapshots Limit" msgstr "Årlig avbildningsgrense" #: plinth/modules/snapshot/forms.py:49 +#, fuzzy +#| msgid "" +#| "Keep a maximum of this many yearly snapshots. The default value is 0 " +#| "(disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" "Behold opptil dette antallet årlige avbildninger. Forvalgt verdi er 0 " "(avskrudd)." @@ -5740,7 +5924,7 @@ msgstr "" "annensteds hen kan utføre administrasjonsoppgaver, kopiere filer eller kjøre " "andre tjenester ved bruk av slike tilkoblinger." -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) tjener" @@ -5794,7 +5978,7 @@ msgstr "SSH-identitetsbekreftelse med passord avskrudd." msgid "SSH authentication with password enabled." msgstr "Identitetsbekreftelse til fjerntjener mislyktes." -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "Engangspålogging" @@ -5813,91 +5997,91 @@ msgstr "" "kan vise lagringsmedia som er i bruk, montere og avmontere flyttbare medium, " "utvide rotpartisjonen, osv." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "Lager" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} byte" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "Operasjonen mislyktes." -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "Operasjonen ble avbrutt." -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "Enheten avmonteres allerede." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "Denne aktiviteten støttes ikke på grunn av manglende driver-/verktøystøtte." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "Tidsavbrudd for operasjon." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Operasjonen vil vekke en disk fra en tilstand av dyp søvn." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "Prøver å avmontere en opptatt enhet." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "Operasjonen har allerede blitt avbrutt." -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "Mangler rettigheter til utførelse av forespurt operasjon." -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "Denne enheten er allerede montert." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "Enheten er ikke montert." -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "Mangler rettigheter til bruk av forespurt valg." -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "Enheten er montert av en annen bruker." -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -5907,15 +6091,15 @@ msgstr "" "Advarsel: Lite plass igjen på systempartisjon ({percent_used}% brukt, " "{free_space} ledig)." -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "Lite ledig diskplass" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" -msgstr "" +msgstr "Diskfeil nært forestående" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6105,11 +6289,11 @@ msgstr "" "standard. Ekstra introduserere kan legges til, og vil introdusere denne " "noden for de andre lagringsnodene." -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "Distribuert fillagring" @@ -6152,7 +6336,7 @@ msgstr "Tilknyttede introduserere" msgid "Remove" msgstr "Fjern" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6166,40 +6350,40 @@ msgstr "" "\"https://www.torproject.org/download/download-easy.html.en\">Tor Browser." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "Tor-løktjeneste" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "Tor Socks-mellomtjener" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "Tor bro-stafettvideresendingsoppsett" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "Tor relay-port tilgjengelig" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Obfs3-transport registrert" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Obfs4-transport registrert" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Adgang til URL {url} på tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekreft Tor-bruk på {url} via tcp{kind}" @@ -6355,7 +6539,7 @@ msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" "En Tor SOCKS-port er tilgjengelig på din %(box_name)s på TCP port 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Oppsett uendret" @@ -6420,11 +6604,11 @@ msgstr "Nyhetstrøm-leser" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (avgreining)" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "Sjekk og legg til siste programvare- og sikkerhetsoppdateringer." -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6432,11 +6616,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "Oppdater" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6450,6 +6634,23 @@ msgstr "Aktiver auto-oppdatering" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "Når påskrudd, oppdateres FreedomBox automatisk én gang om dagen." +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s is up to date." @@ -6470,19 +6671,40 @@ msgstr "" msgid "Dismiss" msgstr "Avslå" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +#, fuzzy +#| msgid "Manual update" +msgid "Manual Update" msgstr "Manuell oppdatering" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "Oppdaterer…" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "Oppdater nå" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 #, fuzzy #| msgid "" #| "This may take a long time to complete. During an update, " @@ -6498,34 +6720,38 @@ msgstr "" "nettgrensesnittet være midlertidig utilgjengelig, og vise en feilmelding. " "Oppdater siden for å fortsette." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 #, fuzzy #| msgid "Toggle recent update logs" msgid "Show recent update logs" msgstr "Veksle nylige oppdateringslogger" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" "Feil ved oppsett av uoppdaterte oppgraderinger (unattended-upgrades): {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "Automatiske oppgraderinger aktivert" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "Automatiske oppgraderinger avslått (deaktivert)" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "Oppgraderingsprosessen (upgrade process) har startet." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "Å starte oppgradering (upgrade) mislyktes." +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 #, fuzzy msgid "" @@ -6556,7 +6782,7 @@ msgstr "Brukere og grupper" msgid "Access to all services and system settings" msgstr "Tilgang til alle tjenester og systeminnstillinger" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Sjekk LDAP-oppføring «{search_item}»" @@ -6571,17 +6797,13 @@ msgstr "Brukernavnet er opptatt eller reservert." msgid "Enter a valid username." msgstr "Ugyldig tjenernavn" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" "Påkrevd. 150 tegn eller mindre. Kun engelske bokstaver, tall og @/./-/_." -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "Tilganger" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6602,20 +6824,20 @@ msgstr "" "gruppen kan logge seg på alle tjenester. De kan også logge inn på systemet " "via SSH, og ha administrative rettigheter (sudo)." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "Oppretting av LDAP-bruker feilet." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Klarte ikke legge ny bruker til gruppe {group}." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Autoriserte SSH-nøkler" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6625,45 +6847,45 @@ msgstr "" "på systemet uten å bruke passord. Du kan legge inn multiple (flere) nøkler, " "én på hver linje. Blanke linjer og linjer som starter med # vil bli ignorert." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "Klarte ikke å bytte navn på LDAP-bruker." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "Klarte ikke å slette bruker fra gruppe." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "Klarte ikke legge bruker til gruppe." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "Klarte ikke sette SSH-nøkler." -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "Klarte ikke legge bruker til gruppe." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "Kan ikke slette kun administratoren i systemet." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "Klarte ikke å bytte passord for LDAP-bruker." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Klarte ikke å legge til en ny bruker i admin-gruppen." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "Klarte ikke begrense konsolltilgang." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "Brukerkonto er opprettet, du er nå logget inn" @@ -6797,7 +7019,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -6883,7 +7105,7 @@ msgstr "" #: plinth/modules/wireguard/forms.py:105 msgid "Use this connection to send all outgoing traffic" -msgstr "" +msgstr "Bruk denne tilkoblingen for å sende all utgående trafikk" #: plinth/modules/wireguard/forms.py:107 msgid "Typically checked for a VPN service though which all traffic is sent." @@ -6933,7 +7155,7 @@ msgid "Add a new peer" msgstr "Legg til en ny introduserer" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "Legg til tillatt klient" @@ -6964,7 +7186,7 @@ msgid "Add a new server" msgstr "Legg til ny tjener" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Legg til tilkobling til tjener" @@ -7071,83 +7293,83 @@ msgstr "Offentlig nøkkel tilhørende denne maskinen:" msgid "IP address of this machine:" msgstr "IP-adresse tilhørende denne maskinen:" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 #, fuzzy #| msgid "Add new introducer" msgid "Added new client." msgstr "Legg til en ny introduserer" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy #| msgid "A share with this name already exists." msgid "Client with public key already exists" msgstr "En deling ved dette navnet finnes allerede." -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 #, fuzzy #| msgid "Email Client" msgid "Allowed Client" msgstr "E-postklient" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "Oppdater oppsett" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy #| msgid "Email Client" msgid "Modify Client" msgstr "E-postklient" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 #, fuzzy #| msgid "Delete All" msgid "Delete Allowed Client" msgstr "Slett alle" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "Archive deleted." msgid "Client deleted." msgstr "Arkiv slettet." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 #, fuzzy #| msgid "Repository not found" msgid "Client not found" msgstr "Finner ikke depot" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added custom service" msgid "Added new server." msgstr "Lagt til selvvalgt tjeneste" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "Oppkoblingstype" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "Oppdater oppsett" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "Endre oppkobling til tjener" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "Slett tilkobling" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "Tjener slettet." @@ -7159,23 +7381,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Generisk" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "Feil under installasjon" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "installering" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "laster ned" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "mediaendring" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "oppsettsfil: {file}" @@ -7408,7 +7630,7 @@ msgstr "Kildekode" #: plinth/templates/index.html:143 msgid "Donate" -msgstr "Donere" +msgstr "Doner" #: plinth/templates/index.html:147 msgid "FreedomBox Foundation" @@ -7451,17 +7673,57 @@ msgstr "Merknader" msgid "Port Forwarding" msgstr "Portvideresending" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Du vil kanskje kontrollere network setup " +"(nettverksoppsettet) og endre det om nødvendig." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, fuzzy, python-format +#| msgid "" +#| "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 " +#| "%(service_name)s:" +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" msgstr "" "Hvis din FreedomBox er bak en ruter, må du sette opp portvideresending på " "ruteren din. Du må sette opp videresending for følgende porter for " "%(service_name)s:" +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "protokoll" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "Oppsett av %(box_name)s" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "Installere dette programmet?" @@ -7508,6 +7770,109 @@ msgstr "%(percentage)s%% fullført" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Backup archives" +#~ msgid "Backports activated." +#~ msgstr "Sikkerhetskopiarkiver" + +#, fuzzy +#~| msgid "" +#~| "Coquelicot is a “one-click” file sharing web application with a focus on " +#~| "protecting users’ privacy. It is best used for quickly sharing a single " +#~| "file. " +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot er et fildelingsprogram som kun krever ett klikk, med fokus på " +#~ "beskyttelse av brukeres personvern. Det er best for rask deling av ei " +#~ "enkelt fil. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Denne Coquelicot-instansen er synlig for offentligheten, men kreves et " +#~ "opplastet passord for å forhindre uautorisert tilgang. Du kan sette et " +#~ "nytt opplastingspassord i skjemaet som vises nedenfor etter " +#~ "installasjonen. Forvalgt opplastingspassord er \"test\"." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "Opplastingspassord" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Sett et nytt opplastingspassord for Conquelicot. La dette feltet stå tomt " +#~ "for å beholde gjeldende passord." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Maksimal filstørrelse (MB)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Sett maksimal filstørrelse for filer som kan lastes opp til Coquelicot." + +#~ msgid "coquelicot" +#~ msgstr "coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Oppdaterte opplastingspassord" + +#~ msgid "Failed to update upload password" +#~ msgstr "Klarte ikke å oppdatere opplastingspassord" + +#~ msgid "Maximum file size updated" +#~ msgstr "Oppdaterte maksimal filstørrelse" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "Klarte ikke å oppdatere maksimal filstørrelse" + +#~ msgid "Riot" +#~ msgstr "Riot" + +#~ msgid "Security Notice" +#~ msgstr "Sikkerhetsmerknad" + +#, fuzzy +#~ msgid "" +#~ "Backports are enabled. Please note that packages from the backports " +#~ "repository do not have security support from Debian. However, they are " +#~ "maintained on a best-effort basis by contributors in Debian and " +#~ "FreedomBox community." +#~ msgstr "" +#~ "Du bruker pakker fra Debian backports. Merk deg at disse pakkene ikke har " +#~ "sikkerhetsstøtte fra Debian. Dog vedlikeholdes de etter beste evne av " +#~ "utviklere i Debian og FreedomBox-fellesskapet." + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Sikkerhetskopier" + +#, fuzzy +#~ msgid "" +#~ "Please note that backports packages do not have security support from " +#~ "Debian. However, they are maintained on a best-effort basis by " +#~ "contributors in Debian and FreedomBox community." +#~ msgstr "" +#~ "Du bruker pakker fra Debian backports. Merk deg at disse pakkene ikke har " +#~ "sikkerhetsstøtte fra Debian. Dog vedlikeholdes de etter beste evne av " +#~ "utviklere i Debian og FreedomBox-fellesskapet." + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "Aktiver" + #~ msgid "Restoring" #~ msgstr "Gjenoppretter" @@ -7823,9 +8188,6 @@ msgstr "Gujarati" #~ msgid "Manage" #~ msgstr "Håndtere" -#~ msgid "Create" -#~ msgstr "Opprett" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "Bilaget du mottok med din {box_name} Danube Edition" @@ -8160,9 +8522,6 @@ msgstr "Gujarati" #~ msgid "Location to upload the archive to" #~ msgstr "Plassering å laste opp arkivet til" -#~ msgid "Backup archives" -#~ msgstr "Sikkerhetskopiarkiver" - #~ msgid "" #~ "No apps that support backup are currently installed. Backup can be " #~ "created after an app supporting backups is installed." @@ -8370,9 +8729,6 @@ msgstr "Gujarati" #~ msgid "BitTorrent" #~ msgstr "BitTorrent" -#~ msgid "admin" -#~ msgstr "admin" - #~ msgid "wiki" #~ msgstr "wiki" diff --git a/plinth/locale/nl/LC_MESSAGES/django.po b/plinth/locale/nl/LC_MESSAGES/django.po index d1cc81b14..65c9bc543 100644 --- a/plinth/locale/nl/LC_MESSAGES/django.po +++ b/plinth/locale/nl/LC_MESSAGES/django.po @@ -7,17 +7,17 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: 2020-01-17 21:21+0000\n" -"Last-Translator: ikmaak \n" -"Language-Team: Dutch \n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-09-15 20:54+0000\n" +"Last-Translator: Reg Me \n" +"Language-Team: Dutch \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 3.10.2-dev\n" +"X-Generator: Weblate 4.3-dev\n" "X-Language: nl_NL\n" "X-Source-Language: C\n" @@ -25,7 +25,7 @@ msgstr "" msgid "Page source" msgstr "Paginabron" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "FreedomBox" @@ -138,11 +138,11 @@ msgstr "Service Discovery" msgid "Local Network Domain" msgstr "Lokaal netwerkdomein" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "Met back-ups kunt u back-uparchieven maken en beheren." -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "Back-ups" @@ -151,6 +151,12 @@ msgstr "Back-ups" msgid "{app} (No data to backup)" msgstr "{app} (geen gegevens voor back-up)" +#: plinth/modules/backups/forms.py:50 +#, fuzzy +#| msgid "Create Repository" +msgid "Repository" +msgstr "Maak Repository" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -220,7 +226,17 @@ msgstr "" "\"Sleutel in archief\" wil zeggen dat een sleutel, beschermd met een " "wachtwoord, is opgeslagen in de backup." -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +#, fuzzy +#| msgid "Create Repository" +msgid "Key in Repository" +msgstr "Maak Repository" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "Geen" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "Wachtwoordzin" @@ -365,6 +381,9 @@ msgid "" "To restore a backup on a new %(box_name)s you need the ssh credentials and, " "if chosen, the encryption passphrase." msgstr "" +"De logingegevens voor dit archief worden bewaard op je %(box_name)s.
    " +"Om een backup terug te zetten op een nieuwe %(box_name)s heb je de ssh " +"logingegevens en, als je daarvoor gekozen hebt, de encryptie-wachtzin." #: plinth/modules/backups/templates/backups_add_remote_repository.html:28 msgid "Create Location" @@ -389,6 +408,7 @@ msgid "Delete Archive %(name)s" msgstr "Archief %(name)s verwijderen" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -399,10 +419,8 @@ msgid "Submit" msgstr "Invoeren" #: plinth/modules/backups/templates/backups_repository.html:19 -#, fuzzy -#| msgid "Existing repository is not encrypted." msgid "This repository is encrypted" -msgstr "Bestaande repository is niet versleuteld." +msgstr "Deze repository is versleuteld" #: plinth/modules/backups/templates/backups_repository.html:34 #, fuzzy @@ -421,10 +439,8 @@ msgid "Remove Backup Location. This will not delete the remote backup." msgstr "" #: plinth/modules/backups/templates/backups_repository.html:77 -#, fuzzy -#| msgid "downloading" msgid "Download" -msgstr "downloaden" +msgstr "Downloaden" #: plinth/modules/backups/templates/backups_repository.html:81 #: plinth/modules/backups/templates/backups_restore.html:27 @@ -441,23 +457,13 @@ msgid "Are you sure that you want to remove this repository?" msgstr "Weet u zeker dat u deze repository wilt verwijderen?" #: plinth/modules/backups/templates/backups_repository_remove.html:19 -#, fuzzy -#| msgid "" -#| "\n" -#| " The remote repository will not be deleted.\n" -#| " This just removes the repository from the listing on the backup " -#| "page, you\n" -#| " can add it again later on.\n" -#| " " msgid "" "The remote repository will not be deleted. This just removes the repository " "from the listing on the backup page, you can add it again later on." msgstr "" -"\n" -" De repository op afstand zal niet worden verwijdert.\n" -"Dit verwijdert enkel de repository uit de lijst op uw backup pagina.\n" -"U kunt de repository later terug toevoegen.\n" -" " +"De repository op afstand zal niet worden verwijderd. Dit verwijdert enkel de " +"repository uit de lijst op de backup pagina. De repository kan later weer " +"worden toegevoegd." #: plinth/modules/backups/templates/backups_repository_remove.html:31 msgid "Remove Location" @@ -614,12 +620,188 @@ msgstr "" msgid "Mounting failed" msgstr "" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +#, fuzzy +#| msgid "Upload file" +msgid "Create or upload files" +msgstr "Bestand uploaden" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +#, fuzzy +#| msgid "Delete User" +msgid "Delete files" +msgstr "Gebruiker verwijderen" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +#, fuzzy +#| msgid "File Sharing" +msgid "File & Snippet Sharing" +msgstr "Delen van bestanden" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "Toegangsrechten" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +#, fuzzy +#| msgid "Change Password" +msgid "Manage Passwords" +msgstr "Wijzig wachtwoord" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +#, fuzzy +#| msgid "Show password" +msgid "Add password" +msgstr "Toon wachtwoord" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +#, fuzzy +#| msgid "No shares currently configured." +msgid "No passwords currently configured." +msgstr "Er zijn momenteel geen bestandsdelingen geconfigureerd." + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "Wachtwoord" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "Maak" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "Verwijder" + +#: plinth/modules/bepasty/views.py:46 +#, fuzzy +#| msgid "admin" +msgid "Admin" +msgstr "admin" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "Configuratie bijgewerkt." + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "Er is een fout opgetreden tijdens de configuratie." + +#: plinth/modules/bepasty/views.py:97 +#, fuzzy +#| msgid "Password updated" +msgid "Password added." +msgstr "Wachtwoord bijgewerkt" + +#: plinth/modules/bepasty/views.py:102 +#, fuzzy +#| msgid "Password" +msgid "Add Password" +msgstr "Wachtwoord" + +#: plinth/modules/bepasty/views.py:119 +msgid "Password deleted." +msgstr "Wachtwoord verwijderd." + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " "Internet, and to resolve DNS queries for your user devices on your network." msgstr "" -"Met BIND kun je je domein naam systeem (DNS) informatie op het Internet " +"Met BIND kun je je domeinnaam systeem (DNS) informatie op internet " "publiceren, en DNS-aanvragen voor de apparaten op het netwerk beantwoorden." #: plinth/modules/bind/__init__.py:33 @@ -633,11 +815,11 @@ msgstr "" "apparaten op het netwerk te beantwoorden. Het werkt niet in samenspel met " "het delen van de Internetverbinding vanaf {box_name}." -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "Domeinnaam Server" @@ -668,16 +850,15 @@ msgstr "Serverdomein" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" msgstr "Type" #: plinth/modules/bind/templates/bind.html:17 -#, fuzzy -#| msgid "Domain Name" msgid "Domain Names" -msgstr "Domeinnaam" +msgstr "Domeinnamen" #: plinth/modules/bind/templates/bind.html:18 #, fuzzy @@ -686,19 +867,17 @@ msgid "Serving" msgstr "Dienst" #: plinth/modules/bind/templates/bind.html:19 -#, fuzzy -#| msgid "IP address" msgid "IP addresses" -msgstr "IP adres" +msgstr "IP adressen" #: plinth/modules/bind/templates/bind.html:35 #: plinth/modules/bind/templates/bind.html:37 msgid "Refresh IP address and domains" msgstr "" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -750,8 +929,6 @@ msgid "Server Administration" msgstr "Serverbeheer" #: plinth/modules/cockpit/templates/cockpit.html:11 -#, fuzzy -#| msgid "Access Point" msgid "Access" msgstr "Toegang" @@ -778,12 +955,13 @@ msgid "Configure" msgstr "Configureer" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "Domeinnaam" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "Foutieve domeinnaam" @@ -851,7 +1029,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "" @@ -896,77 +1074,6 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "Geavanceerde applicaties en functies verbergen" -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" -"Coquelicot is een programma om snel en eenvoudig bestanden te delen. Het is " -"ontworpen zodat de privacy van gebruikers wordt beschermd. Coquelicot is bij " -"uitstek geschikt om gemakkelijk een enkel bestand te delen. " - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" -"Uw Coquelicot is toegankelijk voor anderen, maar u heeft een wachtwoord " -"nodig om bestanden te kunnen delen. Het standaardwachtwoord voor Coquelicot " -"is \"test\". Na installatie kunt u hieronder een nieuw wachtwoord instellen." - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "Coquelicot" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "Delen van bestanden" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "Uploadwachtwoord" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" -"Stel een nieuw uploadwachtwoord in voor Coquelicot. Laat dit veld leeg om " -"het huidige wachtwoord te behouden." - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "Maximale bestandsgrootte (in MiB)" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" -"Stel de maximale grootte in van bestanden die naar Coquelicot kunnen worden " -"geüpload." - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "coquelicot" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "Uploadwachtwoord aangepast" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "Bijwerken van het upload wachtwoord is mislukt" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "Maximale bestandsgrootte bijgewerkt" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "Maximale bestandsgrootte bijwerken is mislukt" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -981,19 +1088,17 @@ msgid "" "need to be configured with the details provided here." msgstr "" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "" #: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 -#, fuzzy -#| msgid "Subdomain" msgid "TLS domain" -msgstr "Subdomein" +msgstr "TLS domein" #: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 msgid "" @@ -1023,7 +1128,7 @@ msgstr "" msgid "Date & Time" msgstr "Datum en Tijd" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "Tijd gesynchroniseerd met NTP-server" @@ -1086,7 +1191,7 @@ msgstr "Opslagmap" msgid "Bittorrent client written in Python/PyGTK" msgstr "Bittorrent-client geschreven in Python/PyGTK" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1094,10 +1199,26 @@ msgstr "" "De systeemdiagnose zal een aantal tests uitvoeren op dit systeem om te " "bevestigen dat de programma's en diensten zoals verwacht functioneren." -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "Diagnose" +#: plinth/modules/diagnostics/__init__.py:102 +#, fuzzy +#| msgid "Quassel" +msgid "passed" +msgstr "Quassel" + +#: plinth/modules/diagnostics/__init__.py:103 +#, fuzzy +#| msgid "Setup failed." +msgid "failed" +msgstr "Instelling mislukt." + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1231,7 +1352,7 @@ msgstr "" "DNS server iedere keer bij te werken als het IP adres is gewijzigd door de " "provider. Dynamic DNS maakt het mogelijk om het huidige publieke IP adres " "door te geven aan een GnuDIP server. Daarna zal deze server de DNS " +"target='_blank'>GnuDIP server. Daarna zal deze server de DNS " "naamswijziging doorvoeren, en als iemand op het internet om deze DNS naam " "vraagt wordt dit beantwoord met het juiste IP adres." @@ -1243,7 +1364,7 @@ msgstr "Dynamic DNS Cliënt" msgid "Dynamic Domain Name" msgstr "Dynamische domeinnaam" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1253,7 +1374,7 @@ msgstr "" "worden gebruikt in de URL. Zie voor details de update URL voorbeelden van de " "voorbeeld providers." -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1263,7 +1384,7 @@ msgstr "" "GnuDIP protocol gebruikt of de provider staat niet in de lijst, gebruik dan " "de update URL van de provider." -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1271,19 +1392,19 @@ msgstr "" "Voer hier geen complete URL in (zoals \"https://example.com/\") maar alleen " "de hostnaam van de GnuDIP server (zoals \"example.com\")." -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" "De publieke domeinnaam die gebruikt wordt om {box_name} aan te spreken." -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Gebruik deze functie indien de provider gebruik maakt van self-signed " "certificaten." -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1291,11 +1412,11 @@ msgstr "" "Als deze optie is geselecteerd wordt de gebruikersnaam en wachtwoord " "gebruikt voor HTTP basic authentificatie." -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "Laat dit veld leeg om het huidige wachtwoord te behouden." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1308,68 +1429,74 @@ msgstr "" "Internet IP adres te bepalen. Het antwoord op het aanroepen van deze URL zou " "het IP adres moeten zijn (Voorbeeld: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "De gebruikersnaam die werd gebruikt toen de account werd gemaakt." +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +#, fuzzy +#| msgid "Update URL" +msgid "other update URL" +msgstr "URL bijwerken" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "Dynamic DNS Inschakelen" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "Dienst Type" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "GnuDIP Serveradres" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "Foute servernaam" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "URL bijwerken" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "Accepteer alle SSL certificaten" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "Gebruik HTTP-basisverificatie" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "Gebruikersnaam" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "Wachtwoord" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "Toon wachtwoord" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "URL voor controle van het IP-adres" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Voer een update URL of GnuDIP Serveradres in" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "Voer een GnuDIP gebruikersnaam in" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "Voer een GnuDIP domeinnaam in" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "Voer een wachtwoord in" @@ -1440,7 +1567,7 @@ msgstr "" msgid "Last update" msgstr "Laatste bijwerking" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Over" @@ -1489,12 +1616,12 @@ msgstr "" "kan elke gebruiker van {box_name} daartoe " "toegang krijgen." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Chatserver" @@ -1510,7 +1637,7 @@ msgid "" "history of a multi-user chat room. It depends on the client settings whether " "the histories are stored as plain text or encrypted." msgstr "" -"Als geactiveerd, zal je {box_name} de chat berichten bewaren. Dit maakt " +"Indien geactiveerd, zal je {box_name} de chat berichten bewaren. Dit maakt " "synchronisatie van berichten tussen verschillende apparaten mogelijk, en het " "lezen van de berichten-geschiedenis met meerdere gebruikers. Het hangt van " "de instellingen op het apparaat af of dit al dan niet versleuteld gebeurd." @@ -1552,11 +1679,11 @@ msgstr "" "registratie aanmaken op publieke XMPP servers (ook via Tor), of zelfs " "verbinden met je eigen server voor nog meer veiligheid." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "Gajim" @@ -1571,13 +1698,13 @@ msgstr "" "eruit als username@%(domainname)s. Het domein kan worden ingesteld op " "de Instellingen pagina." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "Berichten Archief Management aangezet" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" -msgstr "Berichten Archief Management uitgezet" +msgstr "Berichten Archief Management uitgezet" #: plinth/modules/firewall/__init__.py:32 #, python-brace-format @@ -1632,12 +1759,14 @@ msgstr "Dienst/Poort" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Ingeschakeld" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Uitgeschakeld" @@ -1756,52 +1885,62 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "Ongeldige repository URL." -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "Ongeldige repository naam." -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Naam eigenaar repository" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "Privérepository" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "Er bestaat al een repository met deze naam." -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "Naam van de repository" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" "Een alfanumerieke tekenreeks die op unieke wijze een repository " "identificeert." +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default Skin" +msgid "Default branch" +msgstr "Standaard Uiterlijk" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1820,20 +1959,18 @@ msgid "No repositories available." msgstr "Geen repositories beschikbaar." #: plinth/modules/gitweb/templates/gitweb_configure.html:52 -#, fuzzy, python-format -#| msgid "Delete user %(username)s" +#, python-format msgid "Delete repository %(repo.name)s" -msgstr "Verwijder gebruiker %(username)s" +msgstr "Verwijder repository %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_configure.html:68 msgid "Cloning…" msgstr "" #: plinth/modules/gitweb/templates/gitweb_configure.html:73 -#, fuzzy, python-format -#| msgid "Go to site %(site)s" +#, python-format msgid "Go to repository %(repo.name)s" -msgstr "Ga naar site %(site)s" +msgstr "Ga naar repository %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:12 #, fuzzy, python-format @@ -1842,10 +1979,8 @@ msgid "Delete Git Repository %(name)s" msgstr "Verwijder Wiki of Blog %(name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:18 -#, fuzzy -#| msgid "Delete this snapshot permanently?" msgid "Delete this repository permanently?" -msgstr "Deze Snapshot permanent verwijderen?" +msgstr "Deze repository permanent verwijderen?" #: plinth/modules/gitweb/templates/gitweb_delete.html:27 #: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 @@ -1854,10 +1989,8 @@ msgid "Delete %(name)s" msgstr "%(name)s verwijderen" #: plinth/modules/gitweb/views.py:45 -#, fuzzy -#| msgid "Repository removed." msgid "Repository created." -msgstr "Repository verwijderd." +msgstr "Repository aangemaakt." #: plinth/modules/gitweb/views.py:69 #, fuzzy @@ -1866,21 +1999,12 @@ msgid "An error occurred while creating the repository." msgstr "Er is een fout opgetreden tijdens de configuratie." #: plinth/modules/gitweb/views.py:84 -#, fuzzy -#| msgid "Repository removed." msgid "Repository edited." -msgstr "Repository verwijderd." +msgstr "Repository gewijzigd." #: plinth/modules/gitweb/views.py:89 -#, fuzzy -#| msgid "Create Repository" msgid "Edit repository" -msgstr "Maak Repository" - -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "Er is een fout opgetreden tijdens de configuratie." +msgstr "Wijzig repository" #: plinth/modules/gitweb/views.py:138 #, python-brace-format @@ -1892,33 +2016,35 @@ msgstr "{name} verwijderd." msgid "Could not delete {name}: {error}" msgstr "Verwijderen van {name} mislukt: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Documentatie" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Handleiding" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Ondersteuning krijgen" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Feedback indienen" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "Bijdragen" @@ -2000,18 +2126,6 @@ msgstr "Er is een nieuwe %(box_name)s versie beschikbaar." msgid "%(box_name)s is up to date." msgstr "De nieuwste versie van %(box_name)s is geïnstalleerd." -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "Veiligheidsmededeling" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2157,12 +2271,7 @@ msgid "Status Log" msgstr "Status Logboek" #: plinth/modules/help/templates/statuslog.html:13 -#, fuzzy, python-format -#| msgid "" -#| "These are the last %(num_lines)s lines of the status log for this web " -#| "interface. If you want to report a bug, please use the bug tracker and " -#| "attach this status log to the bug report." +#, python-format msgid "" "These are the last %(num_lines)s lines of the status log for this web " "interface. If you want to report a bug, please use the bug tracker (Engelstalig) en " -"voeg dit log toe aan de foutmelding." +"debian.org/freedombox-team/freedombox/issues\">bug tracker (Engelstalig) " +"en voeg dit log toe aan de foutmelding." #: plinth/modules/help/templates/statuslog.html:24 msgid "" @@ -2182,16 +2291,16 @@ msgstr "" "Verwijder alle wachtwoorden of andere persoonlijke gegevens uit het logboek " "voor het foutrapport verstuurd wordt." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "Documentatie en veelgestelde vragen" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "Over {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Handleiding" @@ -2218,19 +2327,19 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "I2P-toepassing beheren" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "Anonimiteitsnetwerk" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P proxy" @@ -2271,13 +2380,6 @@ msgid "" msgstr "" #: plinth/modules/ikiwiki/__init__.py:27 -#, fuzzy -#| msgid "" -#| "ikiwiki is a simple wiki and blog application. It supports several " -#| "lightweight markup languages, including Markdown, and common blogging " -#| "functionality such as comments and RSS feeds. When enabled, the blogs and " -#| "wikis will be available at /ikiwiki (once " -#| "created)." msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " @@ -2285,9 +2387,7 @@ msgid "" msgstr "" "ikiwiki is een eenvoudig wiki- en blog programma. Het ondersteunt " "verschillende lichtgewicht markup-talen, met inbegrip van Markdown, en " -"algemene blogging functionaliteit zoals opmerkingen en RSS-feeds. Als " -"ingeschakeld, zijn de blogs en wiki's beschikbaar op /" -"ikiwiki (indien gemaakt)." +"algemene blogging functionaliteit zoals reacties en RSS-feeds." #: plinth/modules/ikiwiki/__init__.py:31 #, python-brace-format @@ -2381,16 +2481,14 @@ msgid "Could not create blog: {error}" msgstr "Kan blog niet aanmaken: {error}" #: plinth/modules/ikiwiki/views.py:101 -#, fuzzy, python-brace-format -#| msgid "{name} deleted." +#, python-brace-format msgid "{title} deleted." -msgstr "{name} verwijderd." +msgstr "{title} verwijderd." #: plinth/modules/ikiwiki/views.py:105 -#, fuzzy, python-brace-format -#| msgid "Could not delete {name}: {error}" +#, python-brace-format msgid "Could not delete {title}: {error}" -msgstr "Verwijderen van {name} mislukt: {error}" +msgstr "Verwijderen van {title} mislukt: {error}" #: plinth/modules/infinoted/__init__.py:25 msgid "infinoted is a server for Gobby, a collaborative text editor." @@ -2409,11 +2507,11 @@ msgstr "" "a> desktop-client en installeer deze. Start Gobby en selecteer vervolgens " "\"Verbinden met Server\" en voer uw {box_name} domeinnaam in." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby Server" @@ -2540,16 +2638,6 @@ msgstr "Geen certificaat" msgid "Re-obtain" msgstr "Opnieuw verkrijgen" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Verwijder" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Intrekken" @@ -2603,7 +2691,7 @@ msgstr "Certificaat met succes verwijderd voor domein {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Verwijderen certificaat voor domein {domain} mislukt: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2613,24 +2701,29 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" "Matrix is een nieuw " -"systeem voor gedistribueerde berichtendiensten en VoIP. Synapse is een " +"systeem voor gedistribueerde berichtendiensten en VoIP. Synapse is een " "server die het Matrix protocol gebruikt. Het ondersteunt chatgroepen, audio/" "video gesprekken, versleuteling, synchronisatie van verschillende apparaten " "en daarnaast vereist het geen telefoonnummer. Gebruikers op een willekeurige " "Matrix server kunnen gesprekken aangaan met gebruikers op alle andere Matrix " "servers door federatie (gedecentraliseerd netwerk)." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 +#, fuzzy +#| msgid "" +#| "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" "Om hiervan gebruik te maken, gebruikt u de beschikbare programma's voor smartphone, computer of via het " "web. Het programma Riot wordt aanbevolen." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -2650,8 +2743,8 @@ msgstr "" "gebruiken." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "Riot" +msgid "Element" +msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2720,11 +2813,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "Openbare registratie ingeschakeld" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "Openbare registratie uitgeschakeld" @@ -2810,10 +2903,8 @@ msgstr "" "voor publiek." #: plinth/modules/mediawiki/forms.py:42 -#, fuzzy -#| msgid "Default" msgid "Default Skin" -msgstr "Standaard" +msgstr "Standaard Uiterlijk" #: plinth/modules/mediawiki/forms.py:43 msgid "" @@ -2842,10 +2933,8 @@ msgid "Private mode disabled" msgstr "Privé-modus uitgeschakeld" #: plinth/modules/mediawiki/views.py:86 -#, fuzzy -#| msgid "Setting unchanged" msgid "Default skin changed" -msgstr "Instelling onveranderd" +msgstr "Standaard uiterlijk veranderd" #: plinth/modules/minetest/__init__.py:38 #, python-brace-format @@ -2860,12 +2949,12 @@ msgstr "" "standaardpoort (30000). Voor de verbinding met de server is een Minetest client nodig." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Block Sandbox" @@ -2912,7 +3001,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "Indien uitgeschakeld, kunnen spelers niet sterven of schade oplopen." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Adres" @@ -2921,19 +3010,19 @@ msgstr "Adres" msgid "Port" msgstr "Poort" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "Instelling maximum aantal spelers bijgewerkt" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "Instelling Creatieve modus bijgewerkt" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "Instelling PVP bijgewerkt" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "Instelling schade bijgewerkt" @@ -2957,10 +3046,8 @@ msgid "MiniDLNA" msgstr "" #: plinth/modules/minidlna/__init__.py:48 -#, fuzzy -#| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" -msgstr "Mumble Voice Chat Server" +msgstr "Simple Media Server" #: plinth/modules/minidlna/forms.py:13 msgid "Media Files Directory" @@ -3229,11 +3316,11 @@ msgstr "" "programma's waarmee de Mumble dienst gebruikt kan worden. Er zijn " "programma's voor zowel desktop en Android machines." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "Voice Chat" @@ -3261,7 +3348,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3288,6 +3375,12 @@ msgstr "Alle" msgid "All web apps" msgstr "Alle webapps" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Dienst" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3300,38 +3393,36 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Netwerken" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Gebruikt DNSSEC op IPv{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Verbindingssoort" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Verbindingsnaam" -#: plinth/modules/networks/forms.py:30 -#, fuzzy -#| msgid "Interface" -msgid "Network Interface" -msgstr "Interface" - #: plinth/modules/networks/forms.py:31 +msgid "Network Interface" +msgstr "Netwerkinterface" + +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "De netwerkapparatuur waar deze verbinding mee moet worden verbonden." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Firewall Zone" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3339,21 +3430,21 @@ msgstr "" "De firewall zone controleert welke machines beschikbaar zijn via deze " "verbinding. Selecteer \"Allen Intern\" voor vertrouwde netwerken." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Extern" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Intern" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "IPv4 Adresseringsmethode" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3365,19 +3456,26 @@ msgstr "" "ervoor dat {box_name} fungeert als een router, die het configureren van " "clients op dit netwerk regelt en de Internet-verbinding deelt." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "Automatisch (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Gedeeld" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Handleiding" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Netmask" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3385,21 +3483,21 @@ msgstr "" "Optionele waarde. Indien leeg, zal een standaard netmask op basis van het " "adres worden gebruikt." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "Optionele waarde." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS Server" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3408,11 +3506,11 @@ msgstr "" "adresseringsmethode is \"Automatisch\", zullen de DNS-Servers van de DHCP-" "server worden genegeerd." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "Tweede DNS Server" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3421,11 +3519,11 @@ msgstr "" "methode is \"Automatisch\", zullen de DNS-Servers van de DHCP-server worden " "genegeerd." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "IPv6 Adresseringsmethode" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3434,27 +3532,27 @@ msgstr "" "De \"Automatische\" methoden zorgen dat {box_name} de configuratie van dit " "netwerk gebruikt waardoor het een client wordt." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Automatisch" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "Automatisch, alleen DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "Negeren" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "Voorvoegsel" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "Waarde tussen 1 en 128." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3463,7 +3561,7 @@ msgstr "" "adresseringsmethode is \"Automatisch\", zullen de DNS-Servers van de DHCP-" "server worden genegeerd." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3472,54 +3570,54 @@ msgstr "" "methode is \"Automatisch\", zullen de DNS-Servers van de DHCP-server worden " "genegeerd." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- selecteer --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "De zichtbare netwerknaam." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Modus" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Infrastructuur" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Access Point" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Frequentieband" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Kanaal" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3527,11 +3625,11 @@ msgstr "" "Optionele waarde. Beperken van draadloos kanaal tot de geselecteerde " "frequentieband. Waarde leeg of 0 betekent automatische selectie." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3542,11 +3640,11 @@ msgstr "" "toegangspunt overeenkomt met degene die hier wordt ingevuld. Voorbeeld: " "00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Authentificatiemodus" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3554,21 +3652,21 @@ msgstr "" "Selecteer WPA indien het netwerk beveiligd is en gebruikerswachtwoorden " "gebruikt om te verbinden." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Open" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, fuzzy, python-brace-format #| msgid "Use upstream bridges to connect to Tor network" msgid "Specify how your {box_name} is connected to your network" msgstr "Gebruik upstream bridges om verbinding te maken met het Tor netwerk" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3576,7 +3674,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3585,7 +3683,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3593,11 +3691,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3608,7 +3706,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3632,19 +3730,19 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "Current Network Configuration" msgid "Preferred router configuration" msgstr "Huidige Netwerkconfiguratie" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3859,7 +3957,7 @@ msgid "Create Connection" msgstr "Maak Verbinding" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Verwijder verbinding" @@ -3904,7 +4002,7 @@ msgid "Computer" msgstr "Computer" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Wijzig verbinding" @@ -3914,13 +4012,13 @@ msgstr "Verbindingen" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi Netwerken dichtbij" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Verbinding toevoegen" @@ -3961,6 +4059,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "Volgende" @@ -3995,16 +4094,13 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_main.html:41 #: plinth/modules/networks/templates/network_topology_main.html:41 -#, fuzzy -#| msgid "Update" msgid "Update..." -msgstr "Update" +msgstr "Update..." #: plinth/modules/networks/templates/network_topology_content.html:10 -#, fuzzy, python-format -#| msgid "Direct connection to the Internet." +#, python-format msgid "How is Your %(box_name)s Connected to the Internet?" -msgstr "Directe verbinding met Internet." +msgstr "Hoe is %(box_name)s verbonden met Internet?" #: plinth/modules/networks/templates/network_topology_content.html:16 #, python-format @@ -4103,71 +4199,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Netwerkverbindingen" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "Kan verbinding niet weergeven: Verbinding niet gevonden." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "Verbindingsgegevens" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "Kan verbinding niet wijzigen: Verbinding niet gevonden." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "Deze verbindingsmethode is (nog) niet bekend." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "Geactiveerde verbinding {name}." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "Kan verbinding niet inschakelen: Verbinding niet gevonden." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "Kan verbinding {name} niet inschakelen: Verbinding niet gevonden." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Verbinding {name} uitgeschakeld." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "Kan verbinding niet uitschakelen: Verbinding niet gevonden." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "Toevoegen nieuwe Verbinding" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "Toevoegen nieuwe Ethernetverbinding" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "Toevoegen nieuwe PPPoE verbinding" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "Toevoegen nieuwe W-Fi verbinding" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "Verbinding {name} verwijderd." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "Kan verbinding niet verwijderen: Verbinding niet gevonden." @@ -4189,16 +4285,16 @@ msgstr "" "mogelijk om de rest van het internetgebruik via {box_name} te leiden, voor " "meer veiligheid en anonimiteit." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Virtual Private Network" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4273,11 +4369,11 @@ msgstr "" msgid "Download my profile" msgstr "Download mijn profiel" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Instelling voltooid." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Instelling mislukt." @@ -4515,6 +4611,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 #, fuzzy #| msgid "System Configuration" @@ -4620,7 +4729,7 @@ msgstr "Privoxy" msgid "Web Proxy" msgstr "Web Proxy" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Gebruik {url} via proxy {proxy} op tcp{kind}" @@ -4655,11 +4764,11 @@ msgstr "" "\"http://quassel-irc.org/downloads\">desktop en mobiele apparaten." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "IRC Cliënt" @@ -4667,7 +4776,7 @@ msgstr "IRC Cliënt" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4686,19 +4795,19 @@ msgstr "" "\"http://radicale.org/clients\">ondersteunde clienttoepassing nodig. " "Radicale kan worden benaderd door elke {box_name} gebruiker." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "Agenda en Adresboek" @@ -4726,6 +4835,12 @@ msgstr "" "Elke gebruiker met een {box_name} login kan kijken of wijzigingen aanbrengen " "in een kalender/adresboek." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Access Point" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "DAVx5" @@ -4962,10 +5077,8 @@ msgid "" msgstr "" #: plinth/modules/samba/templates/samba.html:113 -#, fuzzy -#| msgid "Share added." msgid "Share name" -msgstr "Gedeelde map toegevoegd." +msgstr "Gedeelde map naam" #: plinth/modules/samba/templates/samba.html:114 #, fuzzy @@ -4973,47 +5086,43 @@ msgstr "Gedeelde map toegevoegd." msgid "Action" msgstr "Acties" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 #, fuzzy #| msgid "Add Share" msgid "Open Share" msgstr "Gedeelde map toevoegen" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 #, fuzzy #| msgid "Add Share" msgid "Group Share" msgstr "Gedeelde map toevoegen" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Homepage" msgid "Home Share" msgstr "Startpagina" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 #, fuzzy #| msgid "Share deleted." msgid "Share enabled." msgstr "Gedeelde map verwijderd." -#: plinth/modules/samba/views.py:83 -#, fuzzy, python-brace-format -#| msgid "Error installing application: {error}" +#: plinth/modules/samba/views.py:91 +#, python-brace-format msgid "Error enabling share: {error_message}" -msgstr "Fout bij het installeren van de toepassing: {error}" +msgstr "Fout bij het inschakelen van de gedeelde map: {error_message}" -#: plinth/modules/samba/views.py:88 -#, fuzzy -#| msgid "Share edited." +#: plinth/modules/samba/views.py:96 msgid "Share disabled." -msgstr "Gedeelde map bewerkt." +msgstr "Gedeelde map uitgeschakeld." -#: plinth/modules/samba/views.py:93 -#, fuzzy, python-brace-format -#| msgid "Error installing application: {error}" +#: plinth/modules/samba/views.py:101 +#, python-brace-format msgid "Error disabling share: {error_message}" -msgstr "Fout bij het installeren van de toepassing: {error}" +msgstr "Fout bij het uitschakelen van de gedeelde map: {error_message}" #: plinth/modules/searx/__init__.py:25 msgid "" @@ -5052,10 +5161,6 @@ msgid "Select the default family filter to apply to your search results." msgstr "" "Kies het standaard familiefilter om toe te passen op uw zoekresultaten." -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "Geen" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "Modereren" @@ -5074,11 +5179,6 @@ msgstr "" "Sta toe dat deze applicatie wordt gebruikt door iedereen die er toegang toe " "heeft." -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "Configuratie bijgewerkt." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "Beperk console-aanmeldingen (aanbevolen)" @@ -5111,8 +5211,33 @@ msgstr "" msgid "Show security report" msgstr "Beveiligingsrapport weergeven" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "Beveiligingsrapport" @@ -5189,12 +5314,12 @@ msgstr "Geen" msgid "Not running" msgstr "draait niet" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Fout bij beperkte toegang instellen: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "Bijgewerkte Beveiligingsconfiguratie" @@ -5231,7 +5356,7 @@ msgid "" "censorship." msgstr "" "Shadowsocks is een veilige SOCKS5 proxy, gemaakt om uw internetcommunicatie " -"te beschermen. Het kan gebruikt worden om censuur en het filteren van " +"te beschermen. Het kan gebruikt worden om censuur en het filteren van " "Internet te omzeilen." #: plinth/modules/shadowsocks/__init__.py:29 @@ -5498,11 +5623,15 @@ msgid "Yearly Snapshots Limit" msgstr "Jaarlijkse Snapshots limiet" #: plinth/modules/snapshot/forms.py:49 +#, fuzzy +#| msgid "" +#| "Keep a maximum of this many yearly snapshots. The default value is 0 " +#| "(disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" -"Bewaar maximaal dit aantal jaarlijkse snapshots. De standaardwaarde is 0 " +"Bewaar maximaal dit aantal jaarlijkse snapshots. De standaardwaarde is 0 " "(uitgeschakeld)." #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5625,7 +5754,7 @@ msgstr "" "andere locatie die daarvoor geautoriseerd is, kan beheerdertaken uitvoeren, " "bestanden kopiëren en andere taken verrichten door zulk een verbinding." -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) Server" @@ -5672,7 +5801,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "Eenmalige aanmelding" @@ -5688,90 +5817,90 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "Storage" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bytes" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "De bewerking is mislukt." -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "De bewerking is afgebroken." -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "Het apparaat is al aan het ontkoppelen." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "Er is een time-out opgetreden voor deze bewerking." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "Poging om een apparaat te ontkoppelen dat in gebruik is." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "De bewerking is al geannuleerd." -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "Het apparaat is al gekoppeld." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "Het apparaat is niet ge-mount." -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, fuzzy, no-python-format, python-brace-format #| msgid "" #| "Warning: Low space on system partition ({percent_used}% used, " @@ -5781,15 +5910,15 @@ msgstr "" "Waarschuwing: Weinig ruimte op de systeempartitie ({percent_used} % " "gebruikt, {free_space} vrij)." -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5989,11 +6118,11 @@ msgstr "" "introduceerder. Er kunnen extra introduceerders worden toegevoegd, waardoor " "dit knooppunt aan de andere knooppunten bekend wordt gemaakt." -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "Distributed File Storage" @@ -6037,7 +6166,7 @@ msgstr "Verbonden introduceerders" msgid "Remove" msgstr "Verwijderen" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6051,42 +6180,42 @@ msgstr "" "de Tor " "Browser aan." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "Tor-Hidden Service" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "Tor Socks Proxy" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "Tor relay poort beschikbaar" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Obfs3 transport geregistreerd" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Obfs4 transport geregistreerd" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Gebruik URL {url} op tcp{kind} via Tor" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bevestig Tor gebruik met {url} via tcp{kind}" @@ -6235,7 +6364,7 @@ msgid "" "If your %(box_name)s is behind a router or firewall, you should make sure " "the following ports are open, and port-forwarded, if necessary:" msgstr "" -"Als %(box_name)s zich achter een router of firewall bevindt, is het " +"Als %(box_name)s zich achter een router of firewall bevindt, is het " "belangrijk te zorgen dat de volgende poorten open staan en indien nodig " "worden doorgeleid:" @@ -6248,7 +6377,7 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Een Tor SOCKS poort is beschikbaar op %(box_name)s, op TCP poort 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Instelling onveranderd" @@ -6277,17 +6406,12 @@ msgstr "" "op een echte desktop applicatie wil lijken." #: plinth/modules/ttrss/__init__.py:33 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Tiny Tiny RSS will be available from /" -#| "tt-rss path on the web server. It can be accessed by any user with a {box_name} login." +#, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -"Indien ingeschakeld, is Tiny Tiny RSS beschikbaar door het / tt-rss pad op de webserver. Het is beschikbaar voor elke gebruiker met een {box_name} login." #: plinth/modules/ttrss/__init__.py:37 @@ -6319,12 +6443,12 @@ msgstr "News Feed Reader" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" "Controleer de nieuwste software- en beveiligingsupdates en pas deze toe." -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6332,11 +6456,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "Update" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -6352,6 +6476,23 @@ msgstr "" "Als deze functie is ingeschakeld, wordt FreedomBox automatisch één keer per " "dag bijgewerkt." +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s is up to date." @@ -6370,60 +6511,80 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +#, fuzzy +#| msgid "Manual update" +msgid "Manual Update" msgstr "Handmatige update" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "Bezig met bijwerken…" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "Nu bijwerken" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 -#, fuzzy -#| msgid "" -#| "This may take a long time to complete. During an update, " -#| "you cannot install apps. Also, this web interface may be temporarily " -#| "unavailable and show an error. In that case, refresh the page to continue." +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" "Afhankelijk van het aantal te installeren pakketten, kan het updaten " -"lang duren. Tijdens softwareupgrades is het niet mogelijk om " -"andere installaties te starten. Tijdens de upgrade kan deze webinterface " -"tijdelijk niet beschikbaar zijn, en een foutmelding weergeven. Vernieuw in " -"dat geval de pagina om door te gaan." +"lang duren. Tijdens softwareupgrades is het niet mogelijk om andere " +"installaties te starten. Tijdens de upgrade kan deze webinterface tijdelijk " +"niet beschikbaar zijn, en een foutmelding weergeven. Vernieuw in dat geval " +"de pagina om door te gaan." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "Fout bij het instellen van automatische upgrades: {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "Automatisch bijwerken ingeschakeld" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "Automatisch bijwerken uitgeschakeld" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "Upgrade-proces gestart." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "Starten van de upgrade is mislukt." +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6447,7 +6608,7 @@ msgstr "Gebruikers en Groepen" msgid "Access to all services and system settings" msgstr "Toegang tot alle diensten en systeeminstellingen" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Zoek LDAP item \"{search_item}\"" @@ -6462,16 +6623,12 @@ msgstr "Gebruikersnaam is in gebruik of is gereserveerd." msgid "Enter a valid username." msgstr "Foute servernaam" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "Toegangsrechten" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6493,69 +6650,69 @@ msgstr "" "ook op het systeem inloggen met SSH en kunnen systeemadministratie doen " "(sudo)." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "LDAP gebruiker aanmaken mislukt." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Nieuwe gebruiker aan groep {group} toevoegen mislukt." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Geautoriseerde SSH-sleutels" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" "Het instellen van een SSH sleutel zorgt ervoor dat deze gebruiker veilig op " -"het systeem kan inloggen zonder een wachtwoord te gebruiken. U meerdere " -"sleutels toevoegen, één op elke regel. Lege regels en regels die beginnen " +"het systeem kan inloggen zonder een wachtwoord te gebruiken. U kunt meerdere " +"sleutels toevoegen, één op elke regel. Lege regels en regels die beginnen " "met # worden genegeerd." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "LDAP gebruiker hernoemen mislukt." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "Gebruiker uit groep verwijderen mislukt." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "Gebruiker aan groep toevoegen mislukt." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "Kan de SSH-sleutels niet instellen." -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "Gebruiker aan groep toevoegen mislukt." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "Kan de enige beheerder in het systeem niet verwijderen." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "Wijzigen LDAP gebruikerswachtwoord mislukt." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Toevoegen van gebruiker aan admin groep mislukt." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "Consoletoegang beperken is mislukt." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "Gebruikersaccount aangemaakt, U bent nu ingelogd" @@ -6687,7 +6844,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6823,7 +6980,7 @@ msgid "Add a new peer" msgstr "Nieuwe introduceerder toevoegen" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6854,7 +7011,7 @@ msgid "Add a new server" msgstr "Nieuwe introduceerder toevoegen" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" msgid "Add Connection to Server" @@ -6918,10 +7075,8 @@ msgstr "Serverdomein" #: plinth/modules/wireguard/templates/wireguard_show_client.html:40 #: plinth/modules/wireguard/templates/wireguard_show_server.html:27 -#, fuzzy -#| msgid "Select verified SSH public key" msgid "Server public key:" -msgstr "Selecteer geverifieerde SSH openbare sleutel" +msgstr "Openbare sleutel van de server:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:50 #: plinth/modules/wireguard/templates/wireguard_show_server.html:49 @@ -6960,85 +7115,85 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 #, fuzzy #| msgid "Add new introducer" msgid "Added new client." msgstr "Nieuwe introduceerder toevoegen" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy #| msgid "A share with this name already exists." msgid "Client with public key already exists" msgstr "Er bestaat reeds een gedeelde map met deze naam." -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 #, fuzzy #| msgid "Email Client" msgid "Allowed Client" msgstr "Email Cliënt" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "Instelling bijwerken" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy #| msgid "Email Client" msgid "Modify Client" msgstr "Email Cliënt" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 #, fuzzy #| msgid "Delete All" msgid "Delete Allowed Client" msgstr "Verwijder alles" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "Archive deleted." msgid "Client deleted." msgstr "Archief verwijderd." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 #, fuzzy #| msgid "Repository not found" msgid "Client not found" msgstr "Repository niet gevonden" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added custom service" msgid "Added new server." msgstr "Aangepaste dienst toevoegen" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "Verbindingssoort" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "Instelling bijwerken" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Edit Connection" msgid "Modify Connection to Server" msgstr "Wijzig verbinding" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "Verwijder verbinding" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "Share deleted." msgid "Server deleted." @@ -7052,23 +7207,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "Generiek" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "Fout tijdens installatie" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "installeren" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "downloaden" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "media wijzigen" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "configuratiebestand: {file}" @@ -7090,7 +7245,7 @@ msgstr "404" #: plinth/templates/404.html:13 #, python-format msgid "Requested page %(request_path)s was not found." -msgstr "De gevraagde pagina %(request_path)s is niet gevonden." +msgstr "De gevraagde pagina %(request_path)s is niet gevonden." #: plinth/templates/404.html:19 #, fuzzy @@ -7113,13 +7268,7 @@ msgid "500" msgstr "500" #: plinth/templates/500.html:14 -#, fuzzy, python-format -#| msgid "" -#| "This is an internal error and not something you caused or can fix. Please " -#| "report the error on the bug tracker so we can fix it. Also, please " -#| "attach the status log to the bug " -#| "report." +#, python-format msgid "" "This is an internal error and not something you caused or can fix. Please " "report the error on the status log to the bug report." msgstr "" "Dit is een interne fout, en niet iets dat een gebruiker heeft veroorzaakt of " -"kan verhelpen. Fouten zoals deze kunnen worden gemeld op de bug tracker " +"kan verhelpen. Fouten zoals deze kunnen worden gemeld op de bug tracker " "(Engelstalig) zodat we deze kunnen verhelpen. Voeg alstublieft het Status Log toe aan de bug-reportage." @@ -7317,13 +7466,13 @@ msgid "Mailing list" msgstr "Mailinglijst" #: plinth/templates/internal-zone.html:11 -#, fuzzy, python-format -#| msgid "%(service_name)s is available only on internal networks." +#, python-format msgid "" "%(service_name)s is available only on internal networks or when the " "client is connected to %(box_name)s through VPN." msgstr "" -"%(service_name)s is alleen beschikbaar binnen interne netwerken." +"%(service_name)s is alleen beschikbaar binnen interne netwerken, of " +"als de client vervonden is met %(box_name)s via VPN." #: plinth/templates/internal-zone.html:17 msgid "Currently there are no network interfaces configured as internal." @@ -7348,14 +7497,50 @@ msgstr "Geen certificaat" msgid "Port Forwarding" msgstr "Port Forwarding" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Je wilt wellicht de netwerk instellingen " +"controleren, en wijzigen indien noodzakelijk." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." msgstr "" +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "protocol" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "%(box_name)s Setup" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "Deze toepassing installeren?" @@ -7402,6 +7587,84 @@ msgstr "%(percentage)s%% voltooid" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports activated." +#~ msgstr "Back-ups" + +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot is een programma om snel en eenvoudig bestanden te delen. Het " +#~ "is ontworpen zodat de privacy van gebruikers wordt beschermd. Coquelicot " +#~ "is bij uitstek geschikt om gemakkelijk een enkel bestand te delen. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Uw Coquelicot is toegankelijk voor anderen, maar u heeft een wachtwoord " +#~ "nodig om bestanden te kunnen delen. Het standaardwachtwoord voor " +#~ "Coquelicot is \"test\". Na installatie kunt u hieronder een nieuw " +#~ "wachtwoord instellen." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "Uploadwachtwoord" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Stel een nieuw uploadwachtwoord in voor Coquelicot. Laat dit veld leeg om " +#~ "het huidige wachtwoord te behouden." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Maximale bestandsgrootte (in MiB)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Stel de maximale grootte in van bestanden die naar Coquelicot kunnen " +#~ "worden geüpload." + +#~ msgid "coquelicot" +#~ msgstr "coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Uploadwachtwoord aangepast" + +#~ msgid "Failed to update upload password" +#~ msgstr "Bijwerken van het upload wachtwoord is mislukt" + +#~ msgid "Maximum file size updated" +#~ msgstr "Maximale bestandsgrootte bijgewerkt" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "Maximale bestandsgrootte bijwerken is mislukt" + +#~ msgid "Riot" +#~ msgstr "Riot" + +#~ msgid "Security Notice" +#~ msgstr "Veiligheidsmededeling" + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Back-ups" + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "Activeer" + #~ msgid "Restoring" #~ msgstr "Backup aan het terugzetten" @@ -7716,9 +7979,6 @@ msgstr "Gujarati" #~ msgid "Manage" #~ msgstr "Instellen" -#~ msgid "Create" -#~ msgstr "Maak" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "De voucher die u bij uw {box_name} Danube Edition hebt ontvangen" @@ -8131,11 +8391,6 @@ msgstr "Gujarati" #~ msgid "Restore apps" #~ msgstr "reStore" -#, fuzzy -#~| msgid "Backups" -#~ msgid "Backup archives" -#~ msgstr "Back-ups" - #~ msgid "Export" #~ msgstr "Exporteren" @@ -8319,9 +8574,6 @@ msgstr "Gujarati" #~ msgid "BitTorrent" #~ msgstr "Deluge BitTorrent" -#~ msgid "admin" -#~ msgstr "admin" - #~ msgid "wiki" #~ msgstr "wiki" diff --git a/plinth/locale/pl/LC_MESSAGES/django.po b/plinth/locale/pl/LC_MESSAGES/django.po index 4cce0b6d0..4af09d251 100644 --- a/plinth/locale/pl/LC_MESSAGES/django.po +++ b/plinth/locale/pl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2020-06-10 15:41+0000\n" "Last-Translator: WaldiS \n" "Language-Team: Polish klienta XMPP. Gdy włączony, ejabberd jest " "dostępny dla każdego użytkownika {box_name}." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Serwer czatu" @@ -1550,11 +1693,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1570,11 +1713,11 @@ msgstr "" "i>. Możesz ustawić swoją domenę na stronie Konfiguruj." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "Zarządzanie historią wiadomości włączone" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "Zarządzanie historią wiadomości wyłączone" @@ -1633,12 +1776,14 @@ msgstr "Usługa/Port" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Włączony" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Wyłączony" @@ -1751,19 +1896,19 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository URL." msgstr "Niewłaściwa nazwa hosta" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "Niewłaściwa nazwa hosta" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 #, fuzzy #| msgid "" #| "Repository path is neither empty nor is an existing backups repository." @@ -1771,48 +1916,58 @@ msgid "Name of a new repository or URL to import an existing repository." msgstr "" "Ścieżka repozytorium jest pusta lub nie jest repozytorium kopii zapasowych." -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "Create new repository" msgid "Description of the repository" msgstr "Utwórz nowe repozytorium" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" msgstr "Usunięto repozytorium." -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 #, fuzzy #| msgid "Create Repository" msgid "Private repository" msgstr "Utwórz repozytorium" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 #, fuzzy #| msgid "Remote backup repository already exists." msgid "A repository with this name already exists." msgstr "Zdalne repozytorium już istnieje." -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 #, fuzzy #| msgid "Create new repository" msgid "Name of the repository" msgstr "Utwórz nowe repozytorium" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Setting unchanged" +msgid "Default branch" +msgstr "Ustawienie bez zmian" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1889,11 +2044,6 @@ msgstr "Usunięto repozytorium." msgid "Edit repository" msgstr "Utwórz repozytorium" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1904,33 +2054,35 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentacja" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Instrukcja" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -2002,18 +2154,6 @@ msgstr "Nowsza wersja Plinth jest dostępna." msgid "%(box_name)s is up to date." msgstr "Plinth jest aktualny." -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2177,16 +2317,16 @@ msgstr "" "Usuń wszystkie hasła lub inne informacje osobowe z loga przed zgłoszeniem " "raportu o błędzie." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "DOkumentacja i FAQ" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "O {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Podręcznik" @@ -2211,23 +2351,23 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Aktywuj aplikację" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 #, fuzzy #| msgid "Go to Networks" msgid "Anonymity Network" msgstr "Przejdź do sieci" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2382,11 +2522,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2504,16 +2644,6 @@ msgstr "Brak certyfikatu" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Usuń" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Unieważnij" @@ -2563,7 +2693,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2573,14 +2703,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2598,7 +2728,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2651,11 +2781,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 #, fuzzy #| msgid "Application installed." msgid "Public registration disabled" @@ -2784,12 +2914,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 #, fuzzy #| msgid "Blocked" msgid "Block Sandbox" @@ -2832,7 +2962,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2841,19 +2971,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "Zaktualizowano maksymalną ilość graczy" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "Zaktualizowano ustawienia trybu kreatywnego" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "Zaktualizowano ustawienia PVP" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "Zaktualizowano ustawienia zniszczeń" @@ -3120,11 +3250,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -3152,7 +3282,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -3177,6 +3307,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Device" +msgid "Services" +msgstr "Urządzenie" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3189,56 +3325,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3246,186 +3382,193 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Instrukcja" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Maska sieci" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, fuzzy, python-brace-format #| msgid "Direct connection to the Internet." msgid "Specify how your {box_name} is connected to your network" msgstr "Bezpośrednie połłączenie z internetem." -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3433,7 +3576,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3442,7 +3585,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3450,11 +3593,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3465,7 +3608,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3489,19 +3632,19 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "Current Network Configuration" msgid "Preferred router configuration" msgstr "Aktualna konfiguracja sieci" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3709,7 +3852,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3754,7 +3897,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3766,13 +3909,13 @@ msgstr "Odmowa dostępu" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3813,6 +3956,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3953,71 +4097,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -4032,16 +4176,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4097,11 +4241,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -4296,6 +4440,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4388,7 +4545,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4412,11 +4569,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4424,7 +4581,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4434,19 +4591,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4468,6 +4625,12 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access" +msgid "Access rights" +msgstr "Dostęp" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4676,37 +4839,37 @@ msgstr "" msgid "Action" msgstr "Akcje" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Home" msgid "Home Share" msgstr "Dom" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Błąd podczas instalowania aplikacji: {error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Application disabled" msgid "Share disabled." msgstr "Aplikacja wyłączona" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4744,10 +4907,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4764,11 +4923,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4796,8 +4950,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4872,12 +5051,12 @@ msgstr "" msgid "Not running" msgstr "Interfejs deluge nie jest uruchomiony" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Błąd ustawienia ograniczonego dostępu: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "Zaktualizowano ustawienia bezpieczeństwa" @@ -5156,8 +5335,8 @@ msgstr "Usuń %(name)s" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5280,7 +5459,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5327,7 +5506,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "Nie powiodła się autoryzacja na zdalnym serwerze." -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -5343,106 +5522,106 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, fuzzy, python-brace-format #| msgid "{disk_size} bytes" msgid "{disk_size:.1f} bytes" msgstr "{disk_size} bajtów" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, fuzzy, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, fuzzy, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, fuzzy, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, fuzzy, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 #, fuzzy #| msgid "The requested domain is already registered." msgid "The device is already mounted." msgstr "Wnioskowana domena jest już zarejstrowana." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5611,11 +5790,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5654,7 +5833,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5663,40 +5842,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5826,7 +6005,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Ustawienie bez zmian" @@ -5884,11 +6063,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5896,11 +6075,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox Foundation" msgid "FreedomBox Updated" @@ -5916,6 +6095,23 @@ msgstr "Włącz tryb kreatywny" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "Plinth is up to date." @@ -5934,54 +6130,77 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 #, fuzzy #| msgid "Last update" -msgid "Manual update" +msgid "Manual Update" msgstr "Ostatnie uaktualnienie" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 #, fuzzy #| msgid "Update URL" msgid "Update now" msgstr "Uaktualnij URL" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6005,7 +6224,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -6020,16 +6239,12 @@ msgstr "" msgid "Enter a valid username." msgstr "Niewłaściwa nazwa użytkownika" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6038,65 +6253,65 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "Tworzenie użytkownika LDAP się nie udało." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 #, fuzzy #| msgid "Failed to add new user to admin group." msgid "Failed to change user status." msgstr "Nieudane dodawanie użytkownika do grupy admin." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Nieudane dodawanie użytkownika do grupy admin." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "Utworzono konto użytkownika, możesz się teraz zalogować" @@ -6226,7 +6441,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6352,7 +6567,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6383,7 +6598,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Connection refused" msgid "Add Connection to Server" @@ -6489,83 +6704,83 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy #| msgid "Remote backup repository already exists." msgid "Client with public key already exists" msgstr "Zdalne repozytorium już istnieje." -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 #, fuzzy #| msgid "Dynamic DNS Client" msgid "Allowed Client" msgstr "Klient Dynamic DNS" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "Aktualizuj ustawienia" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy #| msgid "Dynamic DNS Client" msgid "Modify Client" msgstr "Klient Dynamic DNS" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 #, fuzzy #| msgid "Delete" msgid "Delete Allowed Client" msgstr "Usuń" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "Archive deleted." msgid "Client deleted." msgstr "Archiwum zostało usunięte." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 #, fuzzy #| msgid "Repository not found" msgid "Client not found" msgstr "Nie odnaleziono repozytorium" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added new remote SSH repository." msgid "Added new server." msgstr "Dodano nowe zdalne repozytorium SSH." -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection refused" msgid "Connection to Server" msgstr "Odmowa dostępu" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "Aktualizuj ustawienia" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Error establishing connection to server: {}" msgid "Modify Connection to Server" msgstr "Błąd podczas ustanawiania połączenia z serwerem: {error}" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Direct connection to the Internet." msgid "Delete Connection to Server" msgstr "Bezpośrednie połłączenie z internetem." -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "Archive deleted." msgid "Server deleted." @@ -6579,23 +6794,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "plik konfiguracyjny: {file}" @@ -6881,14 +7096,48 @@ msgstr "Brak certyfikatu" msgid "Port Forwarding" msgstr "Włącz przekazywanie" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Możesz również sprawdzić ustawienia sieci i " +"zmodyfikować je, jeśli to potrzebne." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." msgstr "" +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "Konfiguracja %(box_name)s" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "" @@ -6933,6 +7182,66 @@ msgstr "" msgid "Gujarati" msgstr "" +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot jest wygodną aplikacją sieciową do współdzielenia plików, w " +#~ "której zwrócono uwagę na ochronę prywatności użytkowników. Najlepiej " +#~ "używać jej do szybkiego współdzielenia pojedynczych plików. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Ta instancja Coquelicot jest dostępna publicznie, ale aby uniknąć " +#~ "nieautoryzowanego dostępu, do przesyłania plików wymagane jest podanie " +#~ "hasła. Można ustawić nowe hasło do przesyłania w formularzu, który pojawi " +#~ "się poniżej po instalacji. Domyślnym hasłem jest \"test\"." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "Hasło do przesyłania" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Ustaw nowe hasło do przesyłania Coquelicot. Żeby zachować dotychczasowe " +#~ "hasło, pozostaw to pole puste." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Maksymalny rozmiar pliku (w MiB)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "Ustaw maksymalny rozmiar pliku, jaki można przesłać w Coquelicot." + +#~ msgid "coquelicot" +#~ msgstr "coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Zmieniono hasło do przesyłania" + +#~ msgid "Failed to update upload password" +#~ msgstr "Nie udało się zmienić hasła do przesyłania" + +#~ msgid "Maximum file size updated" +#~ msgstr "Zaktualizowano maksymalny rozmiar pliku" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "Nie udało się zmienić maksymalnego rozmiaru pliku" + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Kopie zapasowe" + #~ msgid "Restoring" #~ msgstr "Odtwarzanie" @@ -7008,9 +7317,6 @@ msgstr "" #~ msgid "Only alphanumeric characters are allowed." #~ msgstr "Dozwolone są tylko znaki alfanumeryczne." -#~ msgid "Create" -#~ msgstr "Utwórz" - #~ msgid "The subdomain you want to register" #~ msgstr "Subdomena którą chcesz zarejstrować" @@ -7188,11 +7494,6 @@ msgstr "" #~ msgid "Create Archive" #~ msgstr "Utwórz konto" -#, fuzzy -#~| msgid "Device" -#~ msgid "Devices" -#~ msgstr "Urządzenie" - #~ msgid "" #~ "To complete the setup of your %(box_name)s, please provide some basic " #~ "information." diff --git a/plinth/locale/pt/LC_MESSAGES/django.po b/plinth/locale/pt/LC_MESSAGES/django.po index a3034286b..21d3a6ea8 100644 --- a/plinth/locale/pt/LC_MESSAGES/django.po +++ b/plinth/locale/pt/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2020-04-08 13:55+0000\n" "Last-Translator: Manuela Silva \n" "Language-Team: Portuguese user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1438,11 +1590,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1454,11 +1606,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1510,12 +1662,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1623,60 +1777,70 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Invalid domain name" msgid "Invalid repository URL." msgstr "Nome de domínio inválido" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 #, fuzzy #| msgid "Invalid domain name" msgid "Invalid repository name." msgstr "Nome de domínio inválido" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository not found" msgid "Repository's owner name" msgstr "Repositório não encontrado" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 #, fuzzy #| msgid "Create new repository" msgid "Private repository" msgstr "Criar novo repositório" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 #, fuzzy #| msgid "Create new repository" msgid "Name of the repository" msgstr "Criar novo repositório" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Setting unchanged" +msgid "Default branch" +msgstr "Definição inalterada" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1752,11 +1916,6 @@ msgstr "Repositório não encontrado" msgid "Edit repository" msgstr "Criar novo repositório" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1767,33 +1926,35 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "Manual" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1854,18 +2015,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2016,16 +2165,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -2050,21 +2199,21 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Ativar aplicação" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2222,11 +2371,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2342,16 +2491,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2401,7 +2540,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2411,14 +2550,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2436,7 +2575,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2490,13 +2629,13 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 #, fuzzy #| msgid "Applications" msgid "Public registration enabled" msgstr "Aplicações" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 #, fuzzy #| msgid "Applications" msgid "Public registration disabled" @@ -2621,12 +2760,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2669,7 +2808,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2678,25 +2817,25 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "Configuração atualizada" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" @@ -2971,11 +3110,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -3003,7 +3142,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -3028,6 +3167,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service Discovery" +msgid "Services" +msgstr "Descoberta do Serviço" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3040,58 +3185,58 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 #, fuzzy #| msgid "Network Time Server" msgid "Network Interface" msgstr "Servidor do Tempo da Rede" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3099,185 +3244,192 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "Manual" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3285,7 +3437,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3294,7 +3446,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3302,11 +3454,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3317,7 +3469,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3341,19 +3493,19 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "General Configuration" msgid "Preferred router configuration" msgstr "Configuração Geral" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3561,7 +3713,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3606,7 +3758,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3618,13 +3770,13 @@ msgstr "Conexão recusada" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3665,6 +3817,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3803,71 +3956,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3882,16 +4035,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3947,11 +4100,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -4146,6 +4299,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4231,7 +4397,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4255,11 +4421,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4267,7 +4433,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4277,19 +4443,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4311,6 +4477,12 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access" +msgid "Access rights" +msgstr "Aceder" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4523,35 +4695,35 @@ msgstr "Nome do arquivo" msgid "Action" msgstr "Aplicações" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Erro a instalar a aplicação: {error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Applications" msgid "Share disabled." msgstr "Aplicações" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4589,10 +4761,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4609,13 +4777,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "Permitir o uso desta aplicação por todos." -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -#, fuzzy -#| msgid "Configuration updated" -msgid "Configuration updated." -msgstr "Configuração atualizada" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4643,8 +4804,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4715,13 +4901,13 @@ msgstr "" msgid "Not running" msgstr "O Servidor da descoberta do serviço não está a correr" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, fuzzy, python-brace-format #| msgid "Error setting domain name: {exception}" msgid "Error setting restricted access: {exception}" msgstr "Erro ao definir o nome do domínio: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 #, fuzzy #| msgid "General Configuration" msgid "Updated security configuration" @@ -4992,8 +5178,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5110,7 +5296,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5153,7 +5339,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -5169,105 +5355,105 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 #, fuzzy #| msgid "Service discovery server is running" msgid "The device is already unmounting." msgstr "O Servidor da descoberta do serviço está a correr" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Esta operação pode ligar um disco que esteja no estado de adormecido." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5431,11 +5617,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5474,7 +5660,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5483,40 +5669,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5648,7 +5834,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Definição inalterada" @@ -5699,11 +5885,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5711,11 +5897,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -5731,6 +5917,23 @@ msgstr "Aplicações" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5748,52 +5951,77 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +#, fuzzy +#| msgid "Manual" +msgid "Manual Update" +msgstr "Manual" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 #, fuzzy #| msgid "General Configuration" msgid "Update now" msgstr "Configuração Geral" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5817,7 +6045,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5832,16 +6060,12 @@ msgstr "" msgid "Enter a valid username." msgstr "Nome de domínio inválido" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5850,63 +6074,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -6033,7 +6257,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6157,7 +6381,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6184,7 +6408,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Connection refused" msgid "Add Connection to Server" @@ -6288,73 +6512,73 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "General Configuration" msgid "Updated client." msgstr "Configuração Geral" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "Archive deleted." msgid "Client deleted." msgstr "Arquivo apagado." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 #, fuzzy #| msgid "Repository not found" msgid "Client not found" msgstr "Repositório não encontrado" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added new remote SSH repository." msgid "Added new server." msgstr "Adicionar novo repositório de SSH remoto." -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection refused" msgid "Connection to Server" msgstr "Conexão recusada" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Error establishing connection to server: {}" msgid "Modify Connection to Server" msgstr "Erro a estabelecer ligação ao servidor: {}" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Error establishing connection to server: {}" msgid "Delete Connection to Server" msgstr "Erro a estabelecer ligação ao servidor: {}" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "Archive deleted." msgid "Server deleted." @@ -6368,25 +6592,25 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 #, fuzzy #| msgid "Setting unchanged" msgid "media change" msgstr "Definição inalterada" -#: plinth/package.py:150 +#: plinth/package.py:162 #, fuzzy, python-brace-format #| msgid "Configuration" msgid "configuration file: {file}" @@ -6635,12 +6859,40 @@ msgstr "Notificações" msgid "Port Forwarding" msgstr "Porta de Reencaminhar" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 @@ -6689,6 +6941,31 @@ msgstr "%(percentage)s%% concluída" msgid "Gujarati" msgstr "Gujarati" +#, fuzzy +#~| msgid "Backup archives" +#~ msgid "Backports activated." +#~ msgstr "Arquivos de backup" + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Tamanho Máximo do Ficheiro (em MiB)" + +#~ msgid "Upload password updated" +#~ msgstr "Palavra-passe de envio atualizada" + +#~ msgid "Failed to update upload password" +#~ msgstr "Não foi possível atualizar a palavra-passe de envio" + +#~ msgid "Maximum file size updated" +#~ msgstr "Tamanho máximo do ficheiro atualizado" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "Não foi possível atualizar tamanho máximo do ficheiro" + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Cópia de segurança" + #~ msgid "Restoring" #~ msgstr "A restaurar" @@ -6791,9 +7068,6 @@ msgstr "Gujarati" #~ msgid "Apps data to restore from the backup" #~ msgstr "Apps para restaurar a partir da cópia de segurança" -#~ msgid "Backup archives" -#~ msgstr "Arquivos de backup" - #~ msgid "Export" #~ msgstr "Exportar" diff --git a/plinth/locale/ru/LC_MESSAGES/django.po b/plinth/locale/ru/LC_MESSAGES/django.po index cd77eeb03..e240bbac3 100644 --- a/plinth/locale/ru/LC_MESSAGES/django.po +++ b/plinth/locale/ru/LC_MESSAGES/django.po @@ -7,26 +7,26 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: 2020-06-20 05:41+0000\n" -"Last-Translator: wind \n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-09-03 21:36+0000\n" +"Last-Translator: Artem \n" "Language-Team: Russian \n" +"freedombox/ru/>\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" -"X-Generator: Weblate 4.1.1\n" +"X-Generator: Weblate 4.3-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" msgstr "Страница источника" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" -msgstr "FrеedomBox" +msgstr "FreedomBox" #: plinth/daemon.py:85 #, python-brace-format @@ -137,12 +137,12 @@ msgstr "Обнаружение служб" msgid "Local Network Domain" msgstr "Домен локальной сети" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "" "Резервное копирование позволяет создавать и управлять резервными архивами." -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "Резервные копии" @@ -151,6 +151,12 @@ msgstr "Резервные копии" msgid "{app} (No data to backup)" msgstr "{app} (Нет данных для резервного сохранения)" +#: plinth/modules/backups/forms.py:50 +#, fuzzy +#| msgid "Create Repository" +msgid "Repository" +msgstr "Создать репозиторий" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -218,7 +224,17 @@ msgstr "" "«Ключ в репозитории» подразумевает, что защищённый паролем ключ сохранен " "вместе с резервным копированием." -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +#, fuzzy +#| msgid "Create Repository" +msgid "Key in Repository" +msgstr "Создать репозиторий" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "нет" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "Парольная фраза" @@ -391,6 +407,7 @@ msgid "Delete Archive %(name)s" msgstr "Удалить архив %(name)s" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -405,10 +422,8 @@ msgid "This repository is encrypted" msgstr "Репозиторий зашифрован" #: plinth/modules/backups/templates/backups_repository.html:34 -#, fuzzy -#| msgid "Location" msgid "Unmount Location" -msgstr "Местоположение" +msgstr "Демонтировать местоположение" #: plinth/modules/backups/templates/backups_repository.html:45 msgid "Mount Location" @@ -455,15 +470,7 @@ msgid "Restore data from" msgstr "Восстановить данные из" #: plinth/modules/backups/templates/backups_upload.html:17 -#, fuzzy, python-format -#| msgid "" -#| "\n" -#| " Upload a backup file downloaded from another %(box_name)s to " -#| "restore is\n" -#| " contents. You can choose the apps you wish to restore after " -#| "uploading a\n" -#| " backup file.\n" -#| " " +#, python-format msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " @@ -474,9 +481,11 @@ msgid "" " " msgstr "" "\n" -" Загрузка файла резервного сохранения с другого %(box_name)s для " -"восстановления его содержимого. Вы можете выбрать приложения, которые хотите " -"восстановить после загрузки файла резервного сохранения.\n" +" Загрузите файл резервной копии, загруженный с другого %(box_name)s, " +"чтобы восстановить его\n" +" содержание. Вы можете выбрать приложения, которые хотите восстановить " +"после загрузки\n" +" резервного файла.\n" " " #: plinth/modules/backups/templates/backups_upload.html:27 @@ -546,10 +555,8 @@ msgid "Archive deleted." msgstr "Архив удалён." #: plinth/modules/backups/views.py:108 -#, fuzzy -#| msgid "Exported backup archives" msgid "Upload and restore a backup" -msgstr "Экспортированные резервные копии" +msgstr "Загрузить и восстановить резервную копию" #: plinth/modules/backups/views.py:143 msgid "Restored files from backup." @@ -557,7 +564,7 @@ msgstr "Восстановленные файлы из резервного ко #: plinth/modules/backups/views.py:171 msgid "No backup file found." -msgstr "Резервных копий не найдено." +msgstr "Резервных копий не найдено." #: plinth/modules/backups/views.py:179 msgid "Restore from uploaded file" @@ -568,10 +575,8 @@ msgid "No additional disks available to add a repository." msgstr "Нет дополнительных дисков, чтобы добавить репозиторий." #: plinth/modules/backups/views.py:246 -#, fuzzy -#| msgid "Create remote backup repository" msgid "Create backup repository" -msgstr "Создать удаленный репозиторий резервного сохранения" +msgstr "Создать репозиторий резервных копий" #: plinth/modules/backups/views.py:273 msgid "Create remote backup repository" @@ -614,12 +619,8 @@ msgid "Remove Repository" msgstr "Удалить репозиторий" #: plinth/modules/backups/views.py:402 -#, fuzzy -#| msgid "Repository removed. The remote backup itself was not deleted." msgid "Repository removed. Backups were not deleted." -msgstr "" -"Репозиторий удалён. Файлы резервного сохранения на удаленной машине не были " -"удалены." +msgstr "Репозиторий удален. Бэкапы не удалялись." #: plinth/modules/backups/views.py:412 msgid "Unmounting failed!" @@ -629,6 +630,179 @@ msgstr "Размонтирование не удалось!" msgid "Mounting failed" msgstr "Монтирование не удалась" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" +"bepasty - это веб-приложение, которое позволяет загружать и публиковать " +"большие файлы. Текст и фрагменты кода также можно вставлять и публиковать. " +"Текст, изображения, аудио, видео и PDF-документы можно предварительно " +"просмотреть в браузере. Для общих файлов можно установить срок годности по " +"истечении определенного периода времени." + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" +"bepasty не использует имена пользователей для входа в систему. Он использует " +"только пароли. Для каждого пароля можно выбрать набор разрешений. Создав " +"пароль, вы можете поделиться им с пользователями, у которых должны быть " +"соответствующие разрешения." + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" +"Вы также можете создать несколько паролей с одним и тем же набором прав и " +"раздать их разным людям или группам. Это позволит вам позже отозвать доступ " +"для отдельного человека или группы, удалив их пароль из списка." + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "Прочитать файл, если имеется веб-ссылка на файл" + +#: plinth/modules/bepasty/__init__.py:43 +msgid "Create or upload files" +msgstr "Создавать или загружать файлы" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "Список всех файлов и их веб-ссылок" + +#: plinth/modules/bepasty/__init__.py:45 +msgid "Delete files" +msgstr "Удалить файлы" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "Администрирование файлов: блокировка/разблокировка файлов" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "Нет, пароль требуется всегда" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "Список и чтение всех файлов" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "bepasty" + +#: plinth/modules/bepasty/__init__.py:67 +msgid "File & Snippet Sharing" +msgstr "Обмен файлами и фрагментами" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "Публичный доступ (разрешения по умолчанию)" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "Разрешения для анонимных пользователей, не предоставивших пароль." + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "Разрешения" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" +"Пользователи, которые входят в систему с этим паролем, будут иметь выбранные " +"разрешения." + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "Комментарий" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" +"Любой комментарий, который поможет вам вспомнить назначение этого пароля." + +#: plinth/modules/bepasty/templates/bepasty.html:12 +msgid "Manage Passwords" +msgstr "Управление паролями" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +msgid "Add password" +msgstr "Добавить пароль" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "В настоящее время пароли не настроены." + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "Пароль" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "Читать" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "Создать" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "Список" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "Удалить" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "Админ" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "Конфигурация обновлена." + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "Произошла ошибка во время настройки." + +#: plinth/modules/bepasty/views.py:97 +msgid "Password added." +msgstr "Пароль добавлен." + +#: plinth/modules/bepasty/views.py:102 +msgid "Add Password" +msgstr "Добавить пароль" + +#: plinth/modules/bepasty/views.py:119 +msgid "Password deleted." +msgstr "Пароль удалён." + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -648,11 +822,11 @@ msgstr "" "разрешения запросов DNS для другой машины в локальной сети. Оно также " "несовместимо с общим доступом к подключению интернета от {box_name}." -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "Сервер доменных имен" @@ -675,44 +849,37 @@ msgid "Enable Domain Name System Security Extensions" msgstr "Включить расширения безопасности системы доменных имен" #: plinth/modules/bind/templates/bind.html:11 -#, fuzzy -#| msgid "Server domain" msgid "Serving Domains" -msgstr "Домен сервера" +msgstr "Обслуживание доменов" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" msgstr "Тип" #: plinth/modules/bind/templates/bind.html:17 -#, fuzzy -#| msgid "Domain Name" msgid "Domain Names" -msgstr "Доменное имя" +msgstr "Доменные имена" #: plinth/modules/bind/templates/bind.html:18 -#, fuzzy -#| msgid "Service" msgid "Serving" msgstr "Служба" #: plinth/modules/bind/templates/bind.html:19 -#, fuzzy -#| msgid "IP address" msgid "IP addresses" -msgstr "IP-адрес" +msgstr "IP-адреса" #: plinth/modules/bind/templates/bind.html:35 #: plinth/modules/bind/templates/bind.html:37 msgid "Refresh IP address and domains" msgstr "Обновите IP-адреса и домены" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -738,20 +905,19 @@ msgid "" "firewall ports and advanced networking such as bonding, bridging and VLAN " "management." msgstr "" +"Cockpit можно использовать для выполнения расширенных операций хранения, " +"таких как разбиение диска на разделы и управление RAID. Его также можно " +"использовать для открытия настраиваемых портов брандмауэра и расширенных " +"сетей, таких как связывание, мостовое соединение и управление VLAN." #: plinth/modules/cockpit/__init__.py:43 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Cockpit will be available from /" -#| "_cockpit/ path on the web server. It can be accessed by any user on {box_name} belonging to the admin group." +#, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -"Когда включен, Cockpit доступен на /_cockpit/ на " -"веб-сервере. Он может быть доступен на любому " -"пользователю {box_name}, принадлежащему к группе админов." +"Доступ к нему может получить любой пользователь " +"на {box_name}, принадлежащий группе администраторов." #: plinth/modules/cockpit/__init__.py:47 msgid "" @@ -771,10 +937,8 @@ msgid "Server Administration" msgstr "Администрирование сервера" #: plinth/modules/cockpit/templates/cockpit.html:11 -#, fuzzy -#| msgid "Access Point" msgid "Access" -msgstr "Точка доступа" +msgstr "Доступ" #: plinth/modules/cockpit/templates/cockpit.html:14 msgid "Cockpit will only work when accessed using the following URLs." @@ -801,12 +965,13 @@ msgid "Configure" msgstr "Настроить" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "Доменное имя" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "Недопустимое имя домена" @@ -879,7 +1044,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "Показывать дополнительные приложения и функции" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "" "Показать приложения и функции, которые требуют больше технических знаний." @@ -912,10 +1077,9 @@ msgid "Webserver home page set" msgstr "Установка домашней страницы веб-сервера" #: plinth/modules/config/views.py:80 -#, fuzzy, python-brace-format -#| msgid "Error setting domain name: {exception}" +#, python-brace-format msgid "Error changing advanced mode: {exception}" -msgstr "Ошибка параметра имени домена: {exception}" +msgstr "Ошибка при изменении расширенного режима: {exception}" #: plinth/modules/config/views.py:85 msgid "Showing advanced apps and features" @@ -925,83 +1089,6 @@ msgstr "Показать продвинутые приложения и функ msgid "Hiding advanced apps and features" msgstr "Скрыть продвинутые приложения и функции" -#: plinth/modules/coquelicot/__init__.py:24 -#, fuzzy -#| msgid "" -#| "Coquelicot is a “one-click” file sharing web application with a focus on " -#| "protecting users’ privacy. It is best used for quickly sharing a single " -#| "file. " -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" -"Coquelicot является однокликовым веб-приложением для обмена файлами с " -"фокусировкой на защите пользовательской приватности. Лучше всего " -"использовать для быстрого обмена одним файлом. " - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" -"Этот экземпляр Coquelicot выставлен для широкой публики, но требует загрузки " -"пароля для предотвращения несанкционированного доступа. Вы можете установить " -"новый загрузить пароль в форме, которая появится ниже, после установки. " -"Отправить пароль по умолчанию - \"test\"." - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "Coquelicot" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "Обмен Файлами" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "Пароль загрузки" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" -"Установить новый пароль для Coquelicot. Оставьте это поле пустым, чтобы " -"сохранить текущий пароль." - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "Максимальный размер файла (в Мб)" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" -"Установить максимальный размер файлов, которые могут быть загружены на " -"Coquelicot." - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "Coquelicot" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "Пароль загрузки обновлен" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "Не удается обновить пароль загрузки" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "Максимальный размер файла обновлен" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "Не удалось обновить максимальный размер файла" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -1009,42 +1096,49 @@ msgid "" "other communication servers can use it to establish a call between parties " "who are otherwise unable connect to each other." msgstr "" +"Coturn - это сервер для облегчения аудио/видеозвонков и конференций, " +"обеспечивающий реализацию протоколов TURN и STUN. WebRTC, SIP и другие " +"коммуникационные серверы могут использовать его для установления вызова " +"между сторонами, которые иначе не могут подключиться друг к другу." #: plinth/modules/coturn/__init__.py:35 msgid "" "It is not meant to be used directly by users. Servers such as matrix-synapse " "need to be configured with the details provided here." msgstr "" +"Он не предназначен для непосредственного использования пользователями. Такие " +"серверы, как matrix-synapse, должны быть настроены с указанными здесь " +"деталями." -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" -msgstr "" +msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" -msgstr "" +msgstr "VoIP-помощник" #: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 -#, fuzzy -#| msgid "Subdomain" msgid "TLS domain" -msgstr "Субдомен" +msgstr "Домен TLS" #: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." msgstr "" +"Выберите домен для использования TLS. Если список пуст, настройте хотя бы " +"один домен с сертификатами." #: plinth/modules/coturn/templates/coturn.html:15 msgid "Use the following URLs to configure your communication server:" msgstr "" +"Используйте следующие URL-адреса для настройки вашего коммуникационного " +"сервера:" #: plinth/modules/coturn/templates/coturn.html:26 -#, fuzzy -#| msgid "The following storage devices are in use:" msgid "Use the following shared authentication secret:" -msgstr "Используются следующие устройства хранения:" +msgstr "Используйте следующий общий секрет аутентификации:" #: plinth/modules/datetime/__init__.py:25 msgid "" @@ -1058,7 +1152,7 @@ msgstr "" msgid "Date & Time" msgstr "Дата и Время" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "Время синхронизируется с NTP сервером" @@ -1092,19 +1186,12 @@ msgid "Deluge is a BitTorrent client that features a Web UI." msgstr "Deluge это клиент BitTorrent, имеющий веб-интерфейс." #: plinth/modules/deluge/__init__.py:27 -#, fuzzy -#| msgid "" -#| "When enabled, the Deluge web client will be available from /deluge path on the web server. The default password is " -#| "'deluge', but you should log in and change it immediately after enabling " -#| "this service." msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -"Когда запущен, Deluge веб-клиент доступен по адресу: /" -"deluge на веб-сервере. Пароль по умолчанию 'deluge', но вы должны " -"войти и изменить его сразу же после включения этой службы." +"Пароль по умолчанию - 'deluge', но вы должны войти в систему и изменить его " +"сразу после включения этой службы." #: plinth/modules/deluge/__init__.py:46 #: plinth/modules/transmission/__init__.py:48 @@ -1128,7 +1215,7 @@ msgstr "Папка для загрузок" msgid "Bittorrent client written in Python/PyGTK" msgstr "BitTorrent клиент, написанный на Python/pygtk" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1136,10 +1223,26 @@ msgstr "" "Диагностический тест системы проведёт ряд проверок, чтобы убедиться, что " "приложения и службы работают как положено." -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "Диагностика" +#: plinth/modules/diagnostics/__init__.py:102 +#, fuzzy +#| msgid "Quassel" +msgid "passed" +msgstr "Quassel" + +#: plinth/modules/diagnostics/__init__.py:103 +#, fuzzy +#| msgid "Setup failed." +msgid "failed" +msgstr "Установка не удалась." + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1165,10 +1268,8 @@ msgid "Diagnostic Results" msgstr "Результаты диагностики" #: plinth/modules/diagnostics/templates/diagnostics_app.html:17 -#, fuzzy -#| msgid "This module does not support diagnostics" msgid "This app does not support diagnostics" -msgstr "Этот модуль не поддерживает диагностику" +msgstr "Это приложение не поддерживает диагностику" #: plinth/modules/diagnostics/templates/diagnostics_results.html:10 msgid "Test" @@ -1272,7 +1373,7 @@ msgstr "" "Решение заключается в назначении имени DNS к вашему IP адресу и обновлять " "DNS имя каждый раз, как будет изменен ваш IP адрес. Динамический DNS " "позволяет вам публиковать ваш текущий публичный IP адрес на GnuDIP сервере. После этого " +"gnudip2.sourceforge.net/' target='_blank'>GnuDIP сервере. После этого " "сервер будет назначать DNS-имя на новый IP-адрес, и если кто-то из Интернета " "запрашивает DNS-имя, они будут получать ответ ваш текущий IP-адрес." @@ -1281,12 +1382,10 @@ msgid "Dynamic DNS Client" msgstr "Клиент динамического DNS" #: plinth/modules/dynamicdns/__init__.py:65 -#, fuzzy -#| msgid "Domain Name" msgid "Dynamic Domain Name" -msgstr "Доменное имя" +msgstr "Динамическое доменное имя" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1296,7 +1395,7 @@ msgstr "" "использоваться в URL-адресе. Для получения дополнительной информации " "смотрите примеры обновления URL." -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1306,26 +1405,26 @@ msgstr "" "ваш провайдер не поддерживает протокол GnudIP или поставщик не указан, вы " "можете использовать URL-адрес обновления вашего провайдера." -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -"Пожалуйста, не вводите URL здесь (как «https://example.com/»), только имя " +"Пожалуйста, не вводите URL здесь (как «https://example.com/»), только имя " "хоста сервера GnuDIP (как \"example.com\")." -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "Общее доменное имя для подключения к вашему {box_name}." -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Используйте этот параметр, если ваш провайдер использует самостоятельно " "подписанные сертификаты." -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1333,11 +1432,11 @@ msgstr "" "Если выбран этот параметр, будет использоваться имя пользователя и пароль " "для обычной проверки подлинности HTTP." -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "Оставьте это поле пустым, если вы хотите сохранить ваш текущий пароль." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1347,71 +1446,77 @@ msgid "" msgstr "" "Необязательное значение. Если ваш {box_name} не подключен непосредственно к " "Интернету, (т.е. подключенный к маршрутизатору) этот URL-адрес используется " -"для определения настоящего IP адреса. URL-адрес должен просто вернуть IP " +"для определения настоящего IP адреса. URL-адрес должен просто вернуть IP " "(пример: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "Имя пользователя, которое использовалось при создании учетной записи." +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +#, fuzzy +#| msgid "Update URL" +msgid "other update URL" +msgstr "Обновление URL-адреса" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "Включение динамического DNS" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "Тип службы" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "Адрес сервера GnuDIP" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "Недопустимое имя сервера" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "Обновление URL-адреса" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "Принимать все SSL-сертификаты" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "Использовать базовую аутентификацию HTTP" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "Имя пользователя" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "Пароль" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "Показать пароль" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "URL-адрес для поиска публичного IP" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Просьба предоставьте URL-адрес или адрес сервера GnuDIP" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "Просьба представить имя пользователя GnuDIP" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "Просьба предоставить имя домена GnuDIP" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "Введите пароль" @@ -1426,7 +1531,7 @@ msgstr "" "Если вы ищете бесплатный сервер динамического DNS, вы можете найти " "бесплатный сервис GnuDIP на gnudip.datasystems24.net или вы можете найти беслатную " -"службу обновления URL-адреса на freedns.afraid.org." #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1445,7 +1550,7 @@ msgid "" "You have disabled Javascript. Dynamic form mode is disabled and some helper " "functions may not work (but the main functionality should work)." msgstr "" -"Вы отключили Javascript. Динамические элементы отключены и некоторые " +"Вы отключили Javascript. Динамические элементы отключены и некоторые " "вспомогательные функции могут не работать (но основные функции должны " "работать)." @@ -1475,18 +1580,18 @@ msgid "" msgstr "" "Behind NAT. Это означает, что служба динамического DNS будет опрашивать " "«Публичный IP URL-адреса» для изменения (для этого необходима запись " -"«Публичный IP URL-адреса» - в противном случае не будет обнаружено " -"изменение IP). В случае, если WAN IP меняется, это может занять до " -"%(timer)s минут до тех пор, пока ваша DNS-запись обновляется." +"«Публичный IP URL-адреса» - в противном случае не будет обнаружено изменение " +"IP). В случае, если WAN IP меняется, это может занять до %(timer)s минут до " +"тех пор, пока ваша DNS-запись обновляется." #: plinth/modules/dynamicdns/templates/dynamicdns_status.html:33 msgid "Last update" msgstr "Последнее обновление" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" -msgstr "О службе" +msgstr "О проекте" #: plinth/modules/dynamicdns/views.py:32 #: plinth/modules/firewall/templates/firewall.html:10 @@ -1519,12 +1624,7 @@ msgstr "" "Здесь вы можете запустить и настроить сервер XMPP, называемый ejabberd." #: plinth/modules/ejabberd/__init__.py:40 -#, fuzzy, python-brace-format -#| msgid "" -#| "To actually communicate, you can use the web " -#| "client or any other XMPP client. When enabled, ejabberd can be accessed " -#| "by any user with a {box_name} login." +#, python-brace-format msgid "" "To actually communicate, you can use the web client or any other веб-клиент или " "любой другой " "XMPP клиент. Когда включено, ejabberd доступен всем пользователям {box_name} ." +"\"{users_url}\"> пользователям {box_name} ." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "еjabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Чат-сервер" @@ -1598,11 +1698,11 @@ msgstr "" "новый аккаунт на публичных серверах xmpp (в том числе через Tor), или даже " "подключиться к собственному серверу для дополнительной безопасности." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "Gajim" @@ -1617,11 +1717,11 @@ msgstr "" "пользователей будет выглядеть как username@%(domainname)s. Вы можете " "настроить ваш домен на странице Настройка." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "Управление архивом сообщение включено" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "Управление архивом сообщений выключено" @@ -1642,16 +1742,14 @@ msgid "Firewall" msgstr "Брандмауэр" #: plinth/modules/firewall/components.py:133 -#, fuzzy, python-brace-format -#| msgid "%(service_name)s is available only on internal networks." +#, python-brace-format msgid "Port {name} ({details}) available for internal networks" -msgstr "%(service_name)s доступно только во внутренних сетях." +msgstr "Порт {name} ({details}) доступен для внутренних сетей" #: plinth/modules/firewall/components.py:141 -#, fuzzy, python-brace-format -#| msgid "%(service_name)s is available only on internal networks." +#, python-brace-format msgid "Port {name} ({details}) available for external networks" -msgstr "%(service_name)s доступно только во внутренних сетях." +msgstr "Порт {name} ({details}) доступен для внешних сетей" #: plinth/modules/firewall/components.py:146 #, python-brace-format @@ -1682,12 +1780,14 @@ msgstr "Служба/Порт" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Включено" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Выключено" @@ -1721,26 +1821,27 @@ msgstr "" #: plinth/modules/networks/templates/networks_configuration.html:49 #: plinth/modules/storage/templates/storage.html:94 msgid "Advanced" -msgstr "" +msgstr "Дополнительные" #: plinth/modules/firewall/templates/firewall.html:98 msgid "" "Advanced firewall operations such as opening custom ports are provided by " "the Cockpit app." msgstr "" +"Расширенные операции межсетевого экрана, такие как открытие настраиваемых " +"портов, предоставляются приложением Cockpit." #: plinth/modules/first_boot/forms.py:14 -#, fuzzy, python-brace-format -#| msgid "" -#| "Enter the secret generated during FreedomBox installation. This secret " -#| "can also be obtained from the file /var/lib/plinth/firstboot-wizard-secret" +#, python-brace-format msgid "" "Enter the secret generated during FreedomBox installation. This secret can " "also be obtained by running the command \"sudo cat /var/lib/plinth/firstboot-" "wizard-secret\" on your {box_name}" msgstr "" -"Введите секрет, созданный во время установки FreedomBox. Этот секрет можно " -"также получить из файла /var/lib/plinth/firstboot-wizard-secret" +"Введите секрет, созданный при установке FreedomBox. Этот секрет также можно " +"получить, выполнив команду \"sudo cat/var/lib/plinth/firstboot-wizard-secret" +"\" на вашем {box_name}" #: plinth/modules/first_boot/forms.py:19 msgid "Firstboot Wizard Secret" @@ -1786,6 +1887,14 @@ msgid "" "available graphical clients. And you can share your code with people around " "the world." msgstr "" +"Git - это распределенная система контроля версий для отслеживания изменений " +"в исходном коде во время разработки программного обеспечения. Gitweb " +"предоставляет веб-интерфейс для репозиториев Git. Вы можете просматривать " +"историю и содержимое исходного кода, использовать поиск, чтобы найти " +"соответствующие коммиты и код. Вы также можете клонировать репозитории и " +"загружать изменения кода с помощью клиента Git командной строки или " +"нескольких доступных графических клиентов. И вы можете поделиться своим " +"кодом с людьми по всему миру." #: plinth/modules/gitweb/__init__.py:35 msgid "" @@ -1800,7 +1909,6 @@ msgid "Read-write access to Git repositories" msgstr "Доступ к Git-репозиторию с возможностью чтения и записи" #: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:13 -#, fuzzy msgid "Gitweb" msgstr "Gitweb" @@ -1808,127 +1916,101 @@ msgstr "Gitweb" msgid "Simple Git Hosting" msgstr "Простой хостинг Git" -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "Invalid hostname" +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." -msgstr "Недопустимое имя хоста" +msgstr "Неверный URL репозитория." -#: plinth/modules/gitweb/forms.py:54 -#, fuzzy -#| msgid "Invalid hostname" +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." -msgstr "Недопустимое имя хоста" +msgstr "Неверное имя репозитория." -#: plinth/modules/gitweb/forms.py:62 -#, fuzzy -#| msgid "" -#| "Repository path is neither empty nor is an existing backups repository." +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." -msgstr "" -"Путь к хранилищу не пустой и не является существующим репозиторием резервных " -"копий." +msgstr "Имя нового репозитория или URL для импорта существующего репозитория." -#: plinth/modules/gitweb/forms.py:68 -#, fuzzy -#| msgid "Create new repository" +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" -msgstr "Создать новый репозиторий" +msgstr "Описание репозитория" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "Дополнительно, для показа на Gitweb." -#: plinth/modules/gitweb/forms.py:71 -#, fuzzy -#| msgid "Repository removed." +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" -msgstr "Репозиторий удалён." +msgstr "Имя владельца репозитория" -#: plinth/modules/gitweb/forms.py:76 -#, fuzzy -#| msgid "Create Repository" +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" -msgstr "Создать репозиторий" +msgstr "Частный репозиторий" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" "Доступ к этому репозиторий разрешён только авторизованным пользователям." -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 -#, fuzzy -#| msgid "A share with this name already exists." +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." -msgstr "Общий ресурс с таким именем уже существует." +msgstr "Репозиторий с таким именем уже существует." -#: plinth/modules/gitweb/forms.py:111 -#, fuzzy -#| msgid "Name of the share" +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" -msgstr "Имя общего ресурса" +msgstr "Имя репозитория" -#: plinth/modules/gitweb/forms.py:115 -#, fuzzy -#| msgid "" -#| "A lowercase alpha-numeric string that uniquely identifies a share. " -#| "Example: media." +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" -"Цифро-буквенная строка в нижнем регистре, однозначно идентифицирующая " -"ресурс. Пример: media." +"Буквенно-цифровая строка, которая однозначно идентифицирует репозиторий." + +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default Skin" +msgid "Default branch" +msgstr "Скин по умолчанию" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" #: plinth/modules/gitweb/manifest.py:21 -#, fuzzy msgid "Git" msgstr "Git" #: plinth/modules/gitweb/templates/gitweb_configure.html:31 -#, fuzzy -#| msgid "Create Repository" msgid "Manage Repositories" -msgstr "Создать репозиторий" +msgstr "Управление репозиториями" #: plinth/modules/gitweb/templates/gitweb_configure.html:35 #: plinth/modules/gitweb/templates/gitweb_configure.html:37 -#, fuzzy -#| msgid "Create Repository" msgid "Create repository" msgstr "Создать репозиторий" #: plinth/modules/gitweb/templates/gitweb_configure.html:44 -#, fuzzy -#| msgid "Tor relay port available" msgid "No repositories available." -msgstr "Доступен порт трансляции Tor" +msgstr "Нет доступных репозиториев." #: plinth/modules/gitweb/templates/gitweb_configure.html:52 -#, fuzzy, python-format -#| msgid "Delete user %(username)s" +#, python-format msgid "Delete repository %(repo.name)s" -msgstr "Удалить пользователя %(username)s" +msgstr "Удалить репозиторий %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_configure.html:68 msgid "Cloning…" -msgstr "" +msgstr "Клонирование…" #: plinth/modules/gitweb/templates/gitweb_configure.html:73 -#, fuzzy, python-format -#| msgid "Go to site %(site)s" +#, python-format msgid "Go to repository %(repo.name)s" -msgstr "Перейти к %(site)s" +msgstr "Перейти в репозиторий %(repo.name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:12 -#, fuzzy, python-format -#| msgid "Delete Wiki or Blog %(name)s" +#, python-format msgid "Delete Git Repository %(name)s" -msgstr "Удалить Вики или Блог %(name)s" +msgstr "Удалить репозиторий Git %(name)s" #: plinth/modules/gitweb/templates/gitweb_delete.html:18 -#, fuzzy -#| msgid "Delete this snapshot permanently?" msgid "Delete this repository permanently?" -msgstr "Окончательно удалить этот снимок?" +msgstr "Удалить этот репозиторий навсегда?" #: plinth/modules/gitweb/templates/gitweb_delete.html:27 #: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 @@ -1937,33 +2019,20 @@ msgid "Delete %(name)s" msgstr "Удаление %(name)s" #: plinth/modules/gitweb/views.py:45 -#, fuzzy -#| msgid "Repository removed." msgid "Repository created." -msgstr "Репозиторий удалён." +msgstr "Репозиторий создан." #: plinth/modules/gitweb/views.py:69 -#, fuzzy -#| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." -msgstr "Произошла ошибка во время настройки." +msgstr "Ошибка при создании репозитория." #: plinth/modules/gitweb/views.py:84 -#, fuzzy -#| msgid "Repository removed." msgid "Repository edited." -msgstr "Репозиторий удалён." +msgstr "Репозиторий отредактирован." #: plinth/modules/gitweb/views.py:89 -#, fuzzy -#| msgid "Create Repository" msgid "Edit repository" -msgstr "Создать репозиторий" - -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "Произошла ошибка во время настройки." +msgstr "Редактировать репозиторий" #: plinth/modules/gitweb/views.py:138 #, python-brace-format @@ -1975,36 +2044,36 @@ msgstr "{name} удален." msgid "Could not delete {name}: {error}" msgstr "Не удалось удалить {name}: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Документация" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "Руководство" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Получить поддержку" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" -msgstr "" +msgstr "Отправить отзыв" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" -msgstr "" +msgstr "Помощь проекту" #: plinth/modules/help/templates/help_about.html:17 #, python-format @@ -2080,20 +2149,6 @@ msgstr "Доступна новая версия %(box_name)s." msgid "%(box_name)s is up to date." msgstr "%(box_name)s в актуальном состоянии." -#: plinth/modules/help/templates/help_about.html:79 -#, fuzzy -#| msgid "Security" -msgid "Security Notice" -msgstr "Безопасность" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2102,7 +2157,7 @@ msgstr "Установка %(box_name)s" #: plinth/modules/help/templates/help_contribute.html:12 msgid "The FreedomBox project welcomes contributions of all kinds." -msgstr "" +msgstr "Проект FreedomBox приветствует вклад любого рода." #: plinth/modules/help/templates/help_contribute.html:18 msgid "" @@ -2112,6 +2167,11 @@ msgid "" "into your language, hosting hackathons or install fests, and by spreading " "the word." msgstr "" +"Вы можете внести свой вклад, написав код, тестируя и сообщая об ошибках, " +"обсуждая новые варианты использования и приложения, создавая логотипы и " +"изображения, оказывая поддержку другим пользователям, переводя FreedomBox и " +"его приложения на свой язык, проводя хакатоны или фестивали, а также " +"распространяя слово." #: plinth/modules/help/templates/help_contribute.html:28 msgid "" @@ -2124,6 +2184,14 @@ msgid "" "throughout the world. The FreedomBox Foundation would not exist without its " "supporters." msgstr "" +"Вы также можете помочь проекту финансово, пожертвовав некоммерческой " +"организации FreedomBox Foundation. Фонд FreedomBox, основанный в 2011 году, " +"является некоммерческой организацией со статусом 501(c)(3), базирующейся в " +"Нью-Йорке, которая существует для поддержки FreedomBox. Он предоставляет " +"техническую инфраструктуру и юридические услуги для проекта, поддерживает " +"партнерские отношения и защищает FreedomBox по всему миру. Фонд FreedomBox " +"не существовал бы без своих сторонников." #: plinth/modules/help/templates/help_contribute.html:42 #: plinth/modules/power/templates/power_restart.html:27 @@ -2148,23 +2216,17 @@ msgstr "" "\" target=\"_blank\"> discussion forum." #: plinth/modules/help/templates/help_feedback.html:26 -#, fuzzy -#| msgid "" -#| "If you find any bugs or issues, please use the issue " -#| "tracker to let our developers know. To report, first check if the " -#| "issue is already reported and then use the \"New issue\" button." msgid "" "If you find any bugs or issues, please use the issue " "tracker to let our developers know. To report, first check if the issue " "is already reported and then use the \"New issue\" button." msgstr "" -"Если вы обнаружили ошибку или проблему, используйте, пожалуйста: issue tracker , чтобы сообщить разработчикам. Прежде чем сделать это, " -"проверьте, нет ли уже сообщения о такой проблеме и только потом нажимайте " -"кнопку \"New issue\"." +"Если вы обнаружите какие-либо ошибки или проблемы, используйте трекер ошибок, чтобы сообщить об этом нашим разработчикам. " +"Перед тем как сообщить, сначала проверьте, не сообщается ли уже о проблеме, " +"а затем нажмите кнопку \"Новая проблема\"." #: plinth/modules/help/templates/help_feedback.html:36 msgid "Thank you!" @@ -2220,10 +2282,8 @@ msgstr "" "#freedombox используя веб-интерфейс." #: plinth/modules/help/templates/help_manual.html:25 -#, fuzzy -#| msgid "downloading" msgid "Download as PDF" -msgstr "Загрузка" +msgstr "Скачать как PDF" #: plinth/modules/help/templates/help_support.html:12 #, python-format @@ -2232,12 +2292,18 @@ msgid "" "using %(box_name)s, you can ask for help from our community of users and " "contributors." msgstr "" +"Если вам нужна помощь в выполнении чего-либо или если вы столкнулись с " +"проблемами при использовании %(box_name)s, вы можете обратиться за помощью к " +"нашему сообществу пользователей и участников." #: plinth/modules/help/templates/help_support.html:20 msgid "" "Search for past discussions or post a new query on our discussion forum." msgstr "" +"Найдите прошлые обсуждения или разместите новый запрос на нашем дискуссионном форуме." #: plinth/modules/help/templates/help_support.html:27 msgid "" @@ -2256,22 +2322,17 @@ msgid "Status Log" msgstr "Лог состояния" #: plinth/modules/help/templates/statuslog.html:13 -#, fuzzy, python-format -#| msgid "" -#| "These are the last %(num_lines)s lines of the status log for this web " -#| "interface. If you want to report a bug, please use the bug tracker and " -#| "attach this status log to the bug report." +#, python-format msgid "" "These are the last %(num_lines)s lines of the status log for this web " "interface. If you want to report a bug, please use the bug tracker and " "attach this status log to the bug report." msgstr "" -"Последняя строка %(num_lines)s это журнал состояния для этого веб-" -"интерфейса. Если вы хотите отправить отчет об ошибке, пожалуйста, " -"используйте bug tracker и прикрепите этот журнал состояния к этом отчету." +"Это последние %(num_lines)s строк журнала состояния для этого веб-" +"интерфейса. Если вы хотите сообщить об ошибке, используйте трекер ошибок и " +"прикрепите этот журнал состояния к отчету об ошибке." #: plinth/modules/help/templates/statuslog.html:24 msgid "" @@ -2281,16 +2342,16 @@ msgstr "" "Удалите любые пароли или другую личную информацию из журнала перед отправкой " "отчета об ошибке." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "Документация и FAQ" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "О {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "Руководство {box_name}" @@ -2302,18 +2363,18 @@ msgid "" "anonymity by sending encrypted traffic through a volunteer-run network " "distributed around the world." msgstr "" +"Проект \"Невидимый Интернет\" - это анонимный сетевой уровень, " +"предназначенный для защиты коммуникации от цензуры и наблюдения. I2P " +"обеспечивает анонимность, отправляя зашифрованный трафик через сеть, " +"управляемую волонтерами, по всему миру." #: plinth/modules/i2p/__init__.py:32 -#, fuzzy -#| msgid "" -#| "For more information about the %(box_name)s project, see the %(box_name)s Wiki." msgid "" "Find more information about I2P on their project homepage." msgstr "" -"Дополнительные сведения о проекте %(box_name)s смотрите в Wiki ." +"Более подробную информацию об I2P можно найти на домашней странице их проекта." #: plinth/modules/i2p/__init__.py:34 msgid "" @@ -2322,26 +2383,21 @@ msgid "" msgstr "" "При первом посещении веб-интерфейса будет запущен процесс конфигурации." -#: plinth/modules/i2p/__init__.py:62 -#, fuzzy -#| msgid "Enable application" +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" -msgstr "Включить приложение" +msgstr "Управление приложением I2P" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 -#, fuzzy +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" -msgstr "Anonymity Network" +msgstr "Анонимная сеть" -#: plinth/modules/i2p/__init__.py:88 -#, fuzzy -#| msgid "Web Proxy" +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" -msgstr "Web-прокси" +msgstr "I2P Прокси" #: plinth/modules/i2p/templates/i2p.html:12 msgid "I2P Proxies and Tunnels" @@ -2362,6 +2418,9 @@ msgid "" "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" +"I2P позволяет анонимно просматривать Интернет и скрытые сервисы (электронные " +"сайты). Для этого ваш браузер, предпочтительно Tor Browser, должен быть " +"настроен для работы через прокси." #: plinth/modules/i2p/views.py:19 msgid "" @@ -2377,24 +2436,19 @@ msgid "" "network. Download files by adding torrents or create a new torrent to share " "a file." msgstr "" +"I2P предоставляет приложение для анонимной загрузки файлов в одноранговой " +"сети. Скачайте файлы, добавив торренты, или создайте новый торрент, чтобы " +"поделиться файлом." #: plinth/modules/ikiwiki/__init__.py:27 -#, fuzzy -#| msgid "" -#| "ikiwiki is a simple wiki and blog application. It supports several " -#| "lightweight markup languages, including Markdown, and common blogging " -#| "functionality such as comments and RSS feeds. When enabled, the blogs and " -#| "wikis will be available at /ikiwiki (once " -#| "created)." msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -"ikiwiki это простое приложение wiki и блога. Оно поддерживает легковесные " -"языки разметки, включая Markdown, и основную функциональность блоков, как " -"комментарии и RSS-каналы. Когда включен, блоги и вики доступны по адресу /ikiwiki (после создания)." +"ikiwiki - это простое приложение для вики и блога. Он поддерживает несколько " +"облегченных языков разметки, включая Markdown, и общие функции ведения " +"блогов, такие как комментарии и RSS-каналы." #: plinth/modules/ikiwiki/__init__.py:31 #, python-brace-format @@ -2404,7 +2458,7 @@ msgid "" "edit existing ones. In the User " "Configuration you can change these permissions or add new users." msgstr "" -"Только пользователи {box_name} группы администраторов могут " +"Только пользователи {box_name} группы администраторов могут " "создавать и управлять блогами и вики, но любой пользователь " "группы wiki могжет редактировать существующие. На странице Конфигурация пользователей вы можете изменить " @@ -2488,16 +2542,14 @@ msgid "Could not create blog: {error}" msgstr "Не удалось создать блог: {error}" #: plinth/modules/ikiwiki/views.py:101 -#, fuzzy, python-brace-format -#| msgid "{name} deleted." +#, python-brace-format msgid "{title} deleted." -msgstr "{name} удален." +msgstr "{title} удалён." #: plinth/modules/ikiwiki/views.py:105 -#, fuzzy, python-brace-format -#| msgid "Could not delete {name}: {error}" +#, python-brace-format msgid "Could not delete {title}: {error}" -msgstr "Не удалось удалить {name}: {error}" +msgstr "Не удалось удалить {title}: {error}" #: plinth/modules/infinoted/__init__.py:25 msgid "infinoted is a server for Gobby, a collaborative text editor." @@ -2514,11 +2566,11 @@ msgstr "" "a>, настольный клиент и установите его. Затем запустите Gobby и выберите " "«Подключиться к серверу» и введите доменное имя вашего {box_name}." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Сервер Gobby" @@ -2536,7 +2588,7 @@ msgid "" "Start Gobby and select \"Connect to Server\" and enter your {box_name}'s " "domain name." msgstr "" -"Запустите Gobby, выберите \"Подключиться к серверу\" и введите доменное имя " +"Запустите Gobby, выберите \"Подключиться к серверу\" и введите доменное имя " "вашего {box_name}." #: plinth/modules/jsxc/__init__.py:23 @@ -2643,16 +2695,6 @@ msgstr "Не сертификата" msgid "Re-obtain" msgstr "Получить повторно" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Удалить" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Отменить" @@ -2662,16 +2704,13 @@ msgid "Obtain" msgstr "Получить" #: plinth/modules/letsencrypt/templates/letsencrypt.html:117 -#, fuzzy, python-format -#| msgid "" -#| "No domains have been configured. Configure domains to be able to obtain " -#| "certificates for them." +#, python-format msgid "" "No domains have been configured. Configure " "domains to be able to obtain certificates for them." msgstr "" -"Не настроено ни одного домена. Настройте домены, чтобы иметь возможность " -"получить сертификаты для них." +"Домены не настроены. Настройте домены, чтобы " +"иметь возможность получать для них сертификаты." #: plinth/modules/letsencrypt/views.py:41 #, python-brace-format @@ -2709,7 +2748,7 @@ msgstr "Сертификат успешно удален для домена {do msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Не удалось удалить сертификат для домена {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2726,17 +2765,17 @@ msgstr "" "одном сервере Matrix могут общаться с пользователями на всех остальных " "серверах." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -"Для общения вы можете использоваьт различные клиенты для телефонов, десктопов или Веба. " -"Рекомендуется использовать Riot." +"Для общения вы можете использовать различные клиенты для телефонов, десктопов или web. " +"Рекомендуется использовать Element." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -2752,11 +2791,11 @@ msgid "" msgstr "" "Включение государственной регистрации означает, что любой пользователь " "Интернета может зарегистрировать новую учетную запись на вашем сервере " -"Martix. Отключите это, если нужен доступ только существующим пользователям." +"Martix. Отключите это, если нужен доступ только существующим пользователям." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "Riot" +msgid "Element" +msgstr "Element" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2814,6 +2853,8 @@ msgid "" "New users can be registered from any client if public registration is " "enabled." msgstr "" +"Новые пользователи могут быть зарегистрированы с любого клиента, если " +"включена публичная регистрация." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:30 #, python-format @@ -2827,11 +2868,11 @@ msgstr "" "Пожалуйста, посетите Let's Encrypt, " "чтобы получить его." -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "Публичная регистрация включена" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "Публичная регистрация отключена" @@ -2859,7 +2900,7 @@ msgstr "" "администратора. Вы можете установить новый пароль в разделе \"Настройки\" и " "войдите в систему, используя \"Учетная запись администратора\". Затем вы " "можете создать несколько учетных записей пользователей от самой mediawiki, " -"перейдя в раздел Special:CreateAccount." #: plinth/modules/mediawiki/__init__.py:36 @@ -2917,16 +2958,16 @@ msgstr "" "отключены." #: plinth/modules/mediawiki/forms.py:42 -#, fuzzy -#| msgid "Default" msgid "Default Skin" -msgstr "По умолчанию" +msgstr "Скин по умолчанию" #: plinth/modules/mediawiki/forms.py:43 msgid "" "Choose a default skin for your MediaWiki installation. Users have the option " "to select their preferred skin." msgstr "" +"Выберите скин по умолчанию для вашей установки MediaWiki. Пользователи могут " +"выбрать предпочитаемый скин." #: plinth/modules/mediawiki/views.py:48 msgid "Password updated" @@ -2949,10 +2990,8 @@ msgid "Private mode disabled" msgstr "Режим приватности выключен" #: plinth/modules/mediawiki/views.py:86 -#, fuzzy -#| msgid "Setting unchanged" msgid "Default skin changed" -msgstr "Настройки без изменений" +msgstr "Скин по умолчанию изменен" #: plinth/modules/minetest/__init__.py:38 #, python-brace-format @@ -2967,12 +3006,12 @@ msgstr "" "порту (30000). Для подключения к серверу требуется Minetest клиент." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Песочница" @@ -3020,7 +3059,7 @@ msgstr "" "Когда выключено, игроки не могут умереть или получить урон любого рода." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Адрес" @@ -3029,19 +3068,19 @@ msgstr "Адрес" msgid "Port" msgstr "Порт" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "Максимум игроков обновлен" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "Конфигурация творческого режима обновлена" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "Конфигурация PVP обновлена" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "Конфигурация урона обновлена" @@ -3055,24 +3094,29 @@ msgid "" "gaming systems (such as PS3 and Xbox 360) or applications such as totem and " "Kodi." msgstr "" +"MiniDLNA - это простое программное обеспечение медиасервера, полностью " +"совместимое с клиентами DLNA/UPnP-AV. Демон MiniDNLA обслуживает " +"мультимедийные файлы (музыку, изображения и видео) клиентам в сети. DNLA/" +"UPnP - это протокол нулевой конфигурации, который совместим с любым " +"устройством, прошедшим сертификацию DLNA, например портативными " +"медиаплеерами, смартфонами, телевизорами и игровыми системами (такими как " +"PS3 и Xbox 360) или такими приложениями, как totem и Kodi." #: plinth/modules/minidlna/__init__.py:44 msgid "Media streaming server" -msgstr "" +msgstr "Сервер потоковой передачи мультимедиа" #: plinth/modules/minidlna/__init__.py:47 msgid "MiniDLNA" -msgstr "" +msgstr "MiniDLNA" #: plinth/modules/minidlna/__init__.py:48 -#, fuzzy -#| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" -msgstr "Mumble Сервер Голосового Чата" +msgstr "Простой медиа-сервер" #: plinth/modules/minidlna/forms.py:13 msgid "Media Files Directory" -msgstr "" +msgstr "Каталог медиафайлов" #: plinth/modules/minidlna/forms.py:14 msgid "" @@ -3081,30 +3125,35 @@ msgid "" "that the new directory exists and that is readable from the \"minidlna\" " "user. Any user media directories (\"/home/username/\") will usually work." msgstr "" +"Каталог, который MiniDLNA Server будет читать для содержимого. Все его " +"подкаталоги также будут сканироваться на наличие файлов мультимедиа. Если вы " +"измените значение по умолчанию, убедитесь, что новый каталог существует и " +"доступен для чтения пользователем minidlna. Любые пользовательские медиа-" +"каталоги (\"/home/username/\") обычно работают." #: plinth/modules/minidlna/manifest.py:10 msgid "vlc" -msgstr "" +msgstr "vlc" #: plinth/modules/minidlna/manifest.py:49 msgid "kodi" -msgstr "" +msgstr "kodi" #: plinth/modules/minidlna/manifest.py:88 msgid "yaacc" -msgstr "" +msgstr "yaacc" #: plinth/modules/minidlna/manifest.py:99 msgid "totem" -msgstr "" +msgstr "totem" #: plinth/modules/minidlna/views.py:37 msgid "Specified directory does not exist." -msgstr "" +msgstr "Указанный каталог не существует." #: plinth/modules/minidlna/views.py:42 msgid "Updated media directory" -msgstr "" +msgstr "Обновленный каталог медиа" #: plinth/modules/mldonkey/__init__.py:27 msgid "" @@ -3341,25 +3390,25 @@ msgstr "" "64738. На Клиенты вы можете найти " "клиенты для вашего компьютера и Android устройств." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "Голосовой чат" #: plinth/modules/mumble/forms.py:14 -#, fuzzy -#| msgid "SSH server password" msgid "Set SuperUser Password" -msgstr "Пароль SSH-сервера" +msgstr "Установить пароль суперпользователя" #: plinth/modules/mumble/forms.py:17 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." msgstr "" +"По желанию. Оставьте это поле пустым, чтобы сохранить текущий пароль. Пароль " +"суперпользователя можно использовать для управления разрешениями в Mumble." #: plinth/modules/mumble/manifest.py:37 msgid "Plumble" @@ -3371,32 +3420,24 @@ msgstr "Mumblefly" #: plinth/modules/mumble/manifest.py:60 msgid "Mumla" -msgstr "" +msgstr "Mumla" -#: plinth/modules/mumble/views.py:29 -#, fuzzy -#| msgid "Password changed successfully." +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." -msgstr "Пароль успешно изменён." +msgstr "Пароль суперпользователя успешно обновлён." #: plinth/modules/names/__init__.py:26 -#, fuzzy, python-brace-format -#| msgid "" -#| "Name Services provides an overview of the ways {box_name} can be reached " -#| "from the public Internet: domain name, Tor hidden service, and Pagekite. " -#| "For each type of name, it is shown whether the HTTP, HTTPS, and SSH " -#| "services are enabled or disabled for incoming connections through the " -#| "given name." +#, python-brace-format msgid "" "Name Services provides an overview of the ways {box_name} can be reached " "from the public Internet: domain name, Tor onion service, and Pagekite. For " "each type of name, it is shown whether the HTTP, HTTPS, and SSH services are " "enabled or disabled for incoming connections through the given name." msgstr "" -"Службы имён предоставляют перечень способов, какими {box_name} может быть " -"достигнут из публичного интернета: доменное имя, скрытые сервисы Tor и " -"PageKite. Для каждого способа указывается, включён или отключён доступ по " -"HTTP, HTTPS и SSH для входящих соединений на данное имя." +"Службы имён предоставляют обзор способов {box_name} доступа из " +"общедоступного Интернета: доменное имя, луковая служба Tor и Pagekite. Для " +"каждого типа имени отображается, включены или отключены службы HTTP, HTTPS и " +"SSH для входящих подключений через данное имя." #: plinth/modules/names/__init__.py:46 msgid "Name Services" @@ -3404,56 +3445,64 @@ msgstr "Название услуги" #: plinth/modules/names/components.py:12 msgid "All" -msgstr "" +msgstr "Все" #: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20 msgid "All web apps" -msgstr "" +msgstr "Все веб-приложения" + +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Служба" #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" +"Настроить сетевые устройства. Подключайтесь к Интернету через Ethernet, Wi-" +"Fi или PPPoE. Поделитесь этим подключением с другими устройствами в сети." #: plinth/modules/networks/__init__.py:42 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" +"Устройства, администрируемые другими методами, могут быть недоступны для " +"настройки здесь." -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Сети" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Использовать DNSSEC на IPv{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Тип подключения" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Имя подключения" -#: plinth/modules/networks/forms.py:30 -#, fuzzy -#| msgid "Interface" -msgid "Network Interface" -msgstr "Интерфейс" - #: plinth/modules/networks/forms.py:31 +msgid "Network Interface" +msgstr "Сетевой интерфейс" + +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "К этому подключению должно быть привязано сетевое устройство." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Зона Брандмауэра" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3461,21 +3510,21 @@ msgstr "" "Зона брандмауэра будет контролировать службы, доступные через этот " "интерфейс. Выбирайте Внутренний только в доверенных сетях." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Внешний" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Внутренний" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "Метод адресации IPv4" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3486,19 +3535,24 @@ msgstr "" "сети в качестве клиента. \"Общий\" метод позволяет {box_name} выступать как " "роутер, настраивая клиентов в сети, разделяя подключение к интернету." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "Автоматически (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Общее" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "Вручную" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Маска сети" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3506,21 +3560,21 @@ msgstr "" "Необязательное значение. Если оставить пустым, будет использоваться маска " "подсети по умолчанию, основанная на адресе." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Шлюз" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "Необязательное значение." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS-сервер" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3528,23 +3582,23 @@ msgstr "" "Необязательное значение. Если задано это значение, и метод адресации IPv4 " "«Автомат», предоставляемые DHCP-сервером DNS-серверы будут игнорироваться." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "Второй DNS-сервер" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" "Необязательное значение. Если задано это значение и метод адресации IPv4 " -"«Автомат», предоставляемые DHCP-сервером DNS-серверы будут игнорироваться." +"«Автомат», предоставляемые DHCP-сервером DNS-серверы будут игнорироваться." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "Метод адресации IPv6" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3553,27 +3607,27 @@ msgstr "" "Метод \"Автоматически\" позволит получить {box_name} конфигурацию этой сети, " "что сделает его клиентом." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Автоматически" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "Автоматически, только DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "Игнорировать" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "Префикс" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "Значение от 1 до 128." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3582,63 +3636,63 @@ msgstr "" "«Автоматически», предоставляемые DHCP-сервером DNS-серверы будут " "игнорироваться." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" "Необязательное значение. Если задано это значение и метод адресации IPv6 " -"«Автоматически», предоставляемые DHCP-сервером DNS-серверы будут " +"«Автоматически», предоставляемые DHCP-сервером DNS-серверы будут " "игнорироваться." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- Выберите --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "Отображаемое имя сети." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Режим" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Инфраструктура" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Точка доступа" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" -msgstr "Беспроводная Ad-hoc" +msgstr "Беспроводная Ad-hoc" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Полоса частот" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "А (5 ГГц)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 ГГц)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Канал" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3646,11 +3700,11 @@ msgstr "" "Необязательное значение. Ограничение беспроводного канала в выбранном " "диапазоне частот. Оставьте пустым или укажите 0 для автоматического выбора." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3660,11 +3714,11 @@ msgstr "" "подключении к точке доступа, подключатся только по BSSID. Пример: 00:11:22:" "aa:bb:cc." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Режим проверки подлинности" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3672,28 +3726,31 @@ msgstr "" "Выберите WPA, если беспроводная сеть защищена и требует от клиентов пароль " "для подключения." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Open" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "Укажите, как ваше {box_name} подключено к сети" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " "Internet connection from your router via Wi-Fi or Ethernet cable. This is a " "typical home setup.

    " msgstr "" +"Подключено к маршрутизатору

    Ваш {box_name} получает " +"подключение к Интернету от вашего маршрутизатора через Wi-Fi или кабель " +"Ethernet. Это типичная домашняя обстановка.

    " -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3701,20 +3758,27 @@ msgid "" "adapter. {box_name} is directly connected to the Internet and all your " "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" +"{box_name} - это ваш маршрутизатор.

    У вашего " +"{box_name} есть несколько сетевых интерфейсов, например, несколько портов " +"Ethernet или адаптер Wi-Fi. {box_name} напрямую подключен к Интернету, и все " +"ваши устройства подключаются к {box_name} для подключения к Интернету.

    " -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " "connection is directly attached to your {box_name} and there are no other " "devices on the network. This can happen on community or cloud setups.

    " msgstr "" +"Прямое подключение к Интернету

    Ваше Интернет-" +"соединение напрямую подключено к вашему {box_name}, и в сети нет других " +"устройств. Это может произойти в сообществах или в облаке.

    " -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" -msgstr "" +msgstr "Выберите тип подключения к Интернету" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3724,8 +3788,16 @@ msgid "" "connectivity. If you have a public IP address but are unsure if it changes " "over time or not, it is safer to choose this option.

    " msgstr "" +"У меня есть общедоступный IP-адрес, который со временем может измениться.

    Это означает, что устройства в Интернете могут " +"связаться с вами, когда вы подключены к Интернету. Каждый раз, когда вы " +"подключаетесь к Интернету с помощью своего интернет-провайдера (ISP), вы " +"можете получать другой IP-адрес, особенно по прошествии некоторого времени в " +"автономном режиме. Многие интернет-провайдеры предлагают этот тип " +"подключения. Если у вас есть общедоступный IP-адрес, но вы не уверены, " +"изменится он со временем или нет, безопаснее выбрать этот вариант.

    " -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" +"У меня есть общедоступный IP-адрес, который не меняется со временем " +"(рекомендуется).

    Это означает, что устройства в " +"Интернете могут связаться с вами, когда вы подключены к Интернету. Каждый " +"раз, когда вы подключаетесь к Интернету через вашего интернет-провайдера " +"(ISP), вы всегда получаете один и тот же IP-адрес. Это наиболее " +"беспроблемная установка для многих {box_name} сервисов, но очень немногие " +"интернет-провайдеры предлагают это. Вы можете получить эту услугу у своего " +"интернет-провайдера, внеся дополнительную плату.

    " -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3748,20 +3828,28 @@ msgid "" "troublesome situation for hosting services at home. {box_name} provides many " "workaround solutions but each solution has some limitations.

    " msgstr "" +"У меня нет общедоступного IP-адреса.

    Это означает, " +"что устройства в Интернете не могут связаться с вами, когда вы " +"подключены к Интернету. Каждый раз, когда вы подключаетесь к Интернету через " +"своего интернет-провайдера (ISP), вы получаете IP-адрес, который актуален " +"только для локальных сетей. Многие интернет-провайдеры предлагают этот тип " +"подключения. Это самая хлопотная ситуация для хостинга на дому. {box_name} " +"предоставляет множество обходных решений, но каждое решение имеет некоторые " +"ограничения.

    " -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" +"Я не знаю, какой тип соединения предоставляет мой интернет-провайдер.

    Вам будут предложены самые консервативные действия.

    " -#: plinth/modules/networks/forms.py:400 -#, fuzzy -#| msgid "Current Network Configuration" +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" -msgstr "Текущая конфигурация сети" +msgstr "Предпочтительная конфигурация маршрутизатора" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" +"Используйте функцию DMZ для пересылки всего трафика (рекомендуется).

    Большинство маршрутизаторов предоставляют параметр " +"конфигурации, называемый DMZ. Это позволит маршрутизатору перенаправлять " +"весь входящий трафик из Интернета на один IP-адрес, такой как IP-адрес " +"{box_name}. Сначала не забудьте настроить статический локальный IP-адрес для " +"вашего {box_name} в конфигурации вашего маршрутизатора.

    " -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" +"Перенаправляйте определенный трафик по мере необходимости для каждого " +"приложения.

    Вы также можете выбрать пересылку только " +"определенного трафика на ваш {box_name}. Это идеально, если у вас есть " +"другие серверы, такие как {box_name} в вашей сети, или если ваш " +"маршрутизатор не поддерживает функцию DMZ. Все приложения, которые " +"предоставляют веб-интерфейс, нуждаются в перенаправлении трафика с портов 80 " +"и 443 для работы. Каждое из других приложений предложит, какой порт(-ы) " +"необходимо перенаправить для работы этого приложения.

    " -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " "to be reminded later. Some of the other configuration steps may fail.

    " msgstr "" +"Маршрутизатор в настоящее время не настроен.

    Выберите это, если вы не настроили или не можете настроить маршрутизатор " +"в настоящее время и хотите получить напоминание позже. Некоторые другие шаги " +"настройки могут завершиться ошибкой.

    " #: plinth/modules/networks/templates/connection_show.html:28 msgid "Edit connection" @@ -3968,20 +4074,22 @@ msgid "" "This interface is not maintained by %(box_name)s. For security, it is " "automatically assigned to the external zone." msgstr "" +"Этот интерфейс не поддерживается %(box_name)s. В целях безопасности он " +"автоматически назначается внешней зоне." #: plinth/modules/networks/templates/connections_create.html:19 msgid "Create Connection" msgstr "Создание подключения" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Удаление подключения" #: plinth/modules/networks/templates/connections_delete.html:14 #, python-format msgid "Delete connection %(name)s permanently?" -msgstr "Окончательно удалить подключение %(name)s?" +msgstr "Окончательно удалить подключение %(name)s?" #: plinth/modules/networks/templates/connections_diagram.html:50 msgid "Internet" @@ -4019,25 +4127,23 @@ msgid "Computer" msgstr "Компьютер" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Редактирование подключения" #: plinth/modules/networks/templates/connections_list.html:8 -#, fuzzy -#| msgid "Connection" msgid "Connections" -msgstr "Подключение" +msgstr "Подключения" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "Соседние сети Wi-Fi" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Добавить подключение" @@ -4061,31 +4167,32 @@ msgstr "Создать..." #: plinth/modules/networks/templates/internet_connectivity_content.html:10 msgid "What Type Of Internet Connection Do You Have?" -msgstr "" +msgstr "Какой у вас тип подключения к Интернету?" #: plinth/modules/networks/templates/internet_connectivity_content.html:16 msgid "" "Select an option that best describes the type of Internet connection. This " "information is used only to guide you with further setup." msgstr "" +"Выберите вариант, который лучше всего описывает тип подключения к Интернету. " +"Эта информация используется только для руководства при дальнейшей настройке." #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 msgid "Skip this step" -msgstr "" +msgstr "Пропустить этот шаг" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" -msgstr "" +msgstr "Следующий" #: plinth/modules/networks/templates/internet_connectivity_main.html:9 -#, fuzzy -#| msgid "Connection Type" msgid "Your Internet Connection Type" -msgstr "Тип подключения" +msgstr "Ваш тип подключения к Интернету" #: plinth/modules/networks/templates/internet_connectivity_main.html:14 msgid "" @@ -4093,29 +4200,34 @@ msgid "" "your ISP. This information is only used to suggest you necessary " "configuration actions." msgstr "" +"Следующее лучше всего описывает тип подключения к Интернету, предоставляемый " +"вашим интернет-провайдером. Эта информация используется только для того, " +"чтобы предложить вам необходимые действия по настройке." #: plinth/modules/networks/templates/internet_connectivity_main.html:23 msgid "My ISP provides a public IP address that does not change over time." msgstr "" +"Мой интернет-провайдер предоставляет общедоступный IP-адрес, который не " +"меняется со временем." #: plinth/modules/networks/templates/internet_connectivity_main.html:27 msgid "My ISP provides a public IP address that may change over time." msgstr "" +"Мой интернет-провайдер предоставляет общедоступный IP-адрес, который со " +"временем может измениться." #: plinth/modules/networks/templates/internet_connectivity_main.html:31 msgid "My ISP does not provide a public IP address." -msgstr "" +msgstr "Мой интернет-провайдер не предоставляет общедоступный IP-адрес." #: plinth/modules/networks/templates/internet_connectivity_main.html:35 msgid "I do not know the type of connection my ISP provides." -msgstr "" +msgstr "Я не знаю, какой тип подключения предоставляет мой интернет-провайдер." #: plinth/modules/networks/templates/internet_connectivity_main.html:41 #: plinth/modules/networks/templates/network_topology_main.html:41 -#, fuzzy -#| msgid "Update" msgid "Update..." -msgstr "Обновление" +msgstr "Обновление…" #: plinth/modules/networks/templates/network_topology_content.html:10 #, python-format @@ -4129,11 +4241,14 @@ msgid "" "your network. This information is used to guide you with further setup. It " "can be changed later." msgstr "" +"Выберите вариант, который лучше всего описывает, как ваш %(box_name)s " +"подключен к вашей сети. Эта информация используется, чтобы помочь вам в " +"дальнейшей настройке. Позже его можно будет изменить." #: plinth/modules/networks/templates/network_topology_main.html:9 #, python-format msgid "%(box_name)s Internet Connectivity" -msgstr "" +msgstr "%(box_name)s Подключён к Интернету" #: plinth/modules/networks/templates/network_topology_main.html:15 #, python-format @@ -4142,6 +4257,9 @@ msgid "" "network. This information is used only to suggest necessary configuration " "actions." msgstr "" +"Следующее лучше всего описывает, как ваш %(box_name)s подключён к вашей " +"сети. Эта информация используется только для предложения необходимых " +"действий по настройке." #: plinth/modules/networks/templates/network_topology_main.html:24 #, python-format @@ -4149,6 +4267,8 @@ msgid "" "Your %(box_name)s gets its Internet connection from your router via Wi-Fi or " "Ethernet cable. This is a typical home setup." msgstr "" +"%(box_name)s получает подключение к Интернету от маршрутизатора через Wi-Fi " +"или кабель Ethernet. Это типичная домашняя установка." #: plinth/modules/networks/templates/network_topology_main.html:29 #, python-format @@ -4156,6 +4276,8 @@ msgid "" "Your %(box_name)s is directly connected to the Internet and all your devices " "connect to %(box_name)s for their Internet connectivity." msgstr "" +"Ваш %(box_name)s напрямую подключен к Интернету, и все ваши устройства " +"подключаются к %(box_name)s для подключения к Интернету." #: plinth/modules/networks/templates/network_topology_main.html:34 #, python-format @@ -4163,18 +4285,22 @@ msgid "" "Your Internet connection is directly attached to your %(box_name)s and there " "are no other devices on the network." msgstr "" +"Ваше Интернет-соединение напрямую подключено к вашему %(box_name)s, и в сети " +"нет других устройств." #: plinth/modules/networks/templates/networks_configuration.html:51 msgid "" "Advanced networking operations such as bonding, bridging and VLAN management " "are provided by the Cockpit app." msgstr "" +"Расширенные сетевые операции, такие как соединение, мостовое соединение и " +"управление VLAN, обеспечиваются приложением Cockpit." #: plinth/modules/networks/templates/router_configuration_content.html:10 -#, fuzzy, python-format -#| msgid "%(box_name)s is up to date." +#, python-format msgid "Setup %(box_name)s Behind a Router" -msgstr "%(box_name)s в актуальном состоянии." +msgstr "Настройка %(box_name)s за маршрутизатором" #: plinth/modules/networks/templates/router_configuration_content.html:16 #, python-format @@ -4182,6 +4308,8 @@ msgid "" "Your %(box_name)s gets its internet connection from your router via Wi-Fi or " "Ethernet cable. This is a typical home setup." msgstr "" +"%(box_name)s получает подключение к Интернету от маршрутизатора через Wi-Fi " +"или кабель Ethernet. Это типичная домашняя установка." #: plinth/modules/networks/templates/router_configuration_content.html:23 #, python-format @@ -4191,6 +4319,10 @@ msgid "" "configured to forward all traffic it receives so that %(box_name)s provides " "the services." msgstr "" +"При такой настройке любое устройство в Интернете, пытающееся подключиться к " +"вашему %(box_name)s, должно будет проходить через ваш маршрутизатор. " +"Маршрутизатор необходимо настроить для пересылки всего получаемого трафика, " +"чтобы %(box_name)s предоставлял услуги." #: plinth/modules/networks/templates/router_configuration_content.html:32 msgid "" @@ -4198,16 +4330,21 @@ msgid "" "see options to overcome this limitation, choose 'no public address' option " "in Internet connection type selection." msgstr "" +"Если у вас нет контроля над маршрутизатором, не настраивайте его. Чтобы " +"увидеть варианты преодоления этого ограничения, выберите опцию 'без " +"публичного адреса' в выборе типа подключения к Интернету." #: plinth/modules/networks/templates/router_configuration_content.html:39 msgid "Choose How You Wish to Configure Your Router" -msgstr "" +msgstr "Выберите, как вы хотите настроить свой маршрутизатор" #: plinth/modules/networks/templates/router_configuration_content.html:42 msgid "" "You will need to login to your router's administration console provided by " "the router. This may look like one of the following:" msgstr "" +"Вам нужно будет войти в административную консоль вашего маршрутизатора, " +"предоставляемую маршрутизатором. Это может выглядеть следующим образом:" #: plinth/modules/networks/templates/router_configuration_content.html:54 msgid "" @@ -4218,72 +4355,79 @@ msgid "" "model number and search online for the router's manual. This will provide " "full instructions on how to perform this task." msgstr "" +"Имя пользователя и пароль настраиваются вами при первой настройке " +"маршрутизатора. Для многих маршрутизаторов эта информация печатается на " +"задней панели маршрутизатора. Если вы не помните учетные данные или IP-адрес " +"маршрутизатора, вы можете решить сбросить его и настроить заново. Найдите " +"номер модели своего маршрутизатора и найдите в Интернете руководство к " +"маршрутизатору. Это предоставит полные инструкции о том, как выполнить эту " +"задачу." -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Сетевые подключения" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "Не удается показать подключение: соединение не найдено." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "Сведения о подключении" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "Нельзя редактировать подключение: подключение не найдено." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "Этот тип подключения еще не понятен." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "Установленное подключение {name}." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "Невозможно установить подключение: Подключение не найдено." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "Не удалось установить подключение {name}: Нет подходящего устройства." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Разорвано подключение {name}." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "Не удалось разорвать подключение: соединение не найдено." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "Добавление нового общего подключения" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "Добавление нового подключения Ethernet" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "Добавление нового подключения PPPoE" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "Добавление нового подключения Wi-Fi" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "Подключение {name} удалено." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "Не удалось удалить подключение: соединение не найдено." @@ -4305,16 +4449,16 @@ msgstr "" "также получить доступ к остальной части Интернет через {box_name} для " "дополнительной безопасности и анонимности." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Виртуальная частная сеть" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4323,7 +4467,7 @@ msgstr "" #: plinth/modules/openvpn/manifest.py:48 msgid "Tunnelblick" -msgstr "" +msgstr "Tunnelblick" #: plinth/modules/openvpn/templates/openvpn.html:20 #, python-format @@ -4361,24 +4505,17 @@ msgid "Profile" msgstr "Профиль" #: plinth/modules/openvpn/templates/openvpn.html:64 -#, fuzzy, python-format -#| msgid "" -#| "To connect to %(box_name)s's VPN, you need to download a profile and feed " -#| "it to an OpenVPN client on your mobile or desktop machine. OpenVPN " -#| "Clients are available for most platforms. See the manual page " -#| "on recommended clients and instructions on how to configure them." +#, python-format msgid "" "To connect to %(box_name)s's VPN, you need to download a profile and feed it " "to an OpenVPN client on your mobile or desktop machine. OpenVPN Clients are " "available for most platforms. Click \"Learn more...\" above for recommended " "clients and instructions on how to configure them." msgstr "" -"Для подключения к VPN %(box_name)s, вам надо скачать профиль и добавить его " -"в клиент OpenVPN на вашем мобильном устройстве или настольном компьютере. " -"Клиенты OpenVPN доступны для большинства платформ. Смотри Документация с рекомендуемыми клиентами и инструкциями по их " +"Чтобы подключиться к VPN %(box_name)s, вам необходимо загрузить профиль и " +"передать его клиенту OpenVPN на вашем мобильном или настольном компьютере. " +"Клиенты OpenVPN доступны для большинства платформ. Нажмите \"Узнать больше..." +"\" выше, чтобы просмотреть рекомендуемые клиенты и инструкции по их " "настройке." #: plinth/modules/openvpn/templates/openvpn.html:74 @@ -4392,11 +4529,11 @@ msgstr "" msgid "Download my profile" msgstr "Скачать мой профиль" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Установка завершена." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Установка не удалась." @@ -4446,20 +4583,14 @@ msgid "Your ISP limits incoming connections." msgstr "Ваш провайдер ограничивает входящие соединения." #: plinth/modules/pagekite/__init__.py:44 -#, fuzzy, python-brace-format -#| msgid "" -#| "PageKite works around NAT, firewalls and IP-address limitations by using " -#| "a combination of tunnels and reverse proxies. You can use any pagekite " -#| "service provider, for example pagekite." -#| "net. In future it might be possible to use your buddy's {box_name} " -#| "for this." +#, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " "combination of tunnels and reverse proxies. You can use any pagekite service " "provider, for example pagekite.net. In " "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -"PageKite обходит NAT, брандмауэр и ограничения IP-адреса, используя " +"PageKite обходит NAT, брандмауэр и ограничения IP адреса, используя " "комбинацию туннелей и обратных прокси. Можно использовать любого поставщика " "услуг pagekite, например pagekite.net. " "В будущем, для этого возможно будет использовать {box_name} вашего приятеля." @@ -4473,10 +4604,8 @@ msgid "Public Visibility" msgstr "Публичная видимость" #: plinth/modules/pagekite/__init__.py:76 -#, fuzzy -#| msgid "PageKite Account" msgid "PageKite Domain" -msgstr "Учетная запись PageKite" +msgstr "PageKite Домен" #: plinth/modules/pagekite/forms.py:47 msgid "Server domain" @@ -4543,14 +4672,8 @@ msgid "Deleted custom service" msgstr "Удалить пользовательские службы" #: plinth/modules/pagekite/forms.py:174 -#, fuzzy -#| msgid "" -#| "This service is available as a standard service. Please use the " -#| "\"Standard Services\" page to enable it." msgid "This service is already available as a standard service." -msgstr "" -"Этот сервис доступна как стандартная служба. Пожалуйста, используйте " -"страницу \"Стандартные службы\" чтобы включить её." +msgstr "Эта служба уже доступна как стандартная." #: plinth/modules/pagekite/forms.py:182 msgid "Added custom service" @@ -4566,10 +4689,8 @@ msgstr "Пользовательские службы" #: plinth/modules/pagekite/templates/pagekite_configure.html:29 #: plinth/modules/pagekite/templates/pagekite_configure.html:31 -#, fuzzy -#| msgid "Custom Services" msgid "Add Custom Service" -msgstr "Пользовательские службы" +msgstr "Добавить пользовательскую службу" #: plinth/modules/pagekite/templates/pagekite_configure.html:47 #, python-format @@ -4582,10 +4703,8 @@ msgstr "Удалить эту службу" #: plinth/modules/pagekite/templates/pagekite_custom_services.html:11 #: plinth/modules/pagekite/views.py:33 -#, fuzzy -#| msgid "Added custom service" msgid "Add custom PageKite service" -msgstr "Добавить пользовательскую службу" +msgstr "Добавить собственный сервис PageKite" #: plinth/modules/pagekite/templates/pagekite_custom_services.html:14 msgid "" @@ -4630,13 +4749,24 @@ msgstr "" #: plinth/modules/performance/__init__.py:16 #: plinth/modules/performance/__init__.py:45 msgid "Performance" +msgstr "Производительность" + +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." msgstr "" #: plinth/modules/performance/__init__.py:46 -#, fuzzy -#| msgid "System Configuration" msgid "System Monitoring" -msgstr "Конфигурация системы" +msgstr "Системный мониторинг" #: plinth/modules/power/__init__.py:16 msgid "Restart or shut down the system." @@ -4675,8 +4805,8 @@ msgid "" "Currently an installation or upgrade is running. Consider waiting until it's " "finished before restarting." msgstr "" -"В настоящее выполняется время установка или обновление. Пожалуйста " -"дождитесь окончания процесса до перезагрузки." +"В настоящее выполняется время установка или обновление. Пожалуйста дождитесь " +"окончания процесса до перезагрузки." #: plinth/modules/power/templates/power_restart.html:48 #: plinth/modules/power/templates/power_restart.html:51 @@ -4738,7 +4868,7 @@ msgstr "Privoxy" msgid "Web Proxy" msgstr "Web-прокси" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Доступ к {url} с прокси {proxy} на tcp{kind}" @@ -4772,11 +4902,11 @@ msgstr "" "downloads\">для десктопов и мобильных устройств." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "IRC-клиент" @@ -4784,13 +4914,8 @@ msgstr "IRC-клиент" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:33 -#, fuzzy, python-brace-format -#| msgid "" -#| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " -#| "sharing of scheduling and contact data. To use Radicale, a supported client application is " -#| "needed. Radicale can be accessed by any user with a {box_name} login." +#: plinth/modules/radicale/__init__.py:29 +#, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " "sharing of scheduling and contact data. To use Radicale, a is needed. Radicale can be accessed by any user with a " "{box_name} login." msgstr "" -"Radicale это CalDAV и CardDAV сервер. Он позволяет синхронизировать и " -"делиться запланированными событиями и контактами. Чтобы использовать " -"Radicale, необходим поддерживаемое " -"клиентское приложение. Radicale будет доступен всем пользователям " -"{box_name}." +"Radicale - это сервер CalDAV и CardDAV. Он позволяет синхронизировать и " +"обмениваться данными расписания и контактов. Чтобы использовать Radicale, " +"необходимо поддерживаемое клиентское приложение. Доступ к " +"Radicale может получить любой пользователь с логином {box_name}." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4814,12 +4939,12 @@ msgstr "" "создание новых календарей и адресных книг. Он не поддерживает добавление " "событий или контактов, для этого требуется отдельный клиент." -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "Календарь и Адресная книга" @@ -4847,6 +4972,12 @@ msgstr "" "Любой пользователь с логином {box_name} может просматривать или вносить " "изменения в любой календарь/адресную книгу." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Точка доступа" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "DAVx5" @@ -4904,19 +5035,12 @@ msgid "" "from an email client, including MIME support, address book, folder " "manipulation, message searching and spell checking." msgstr "" -"Roundcube webmail это основанный на браузере многоязычный IMAP клиент с " +"Roundcube webmail это основанный на браузере многоязычный IMAP клиент с " "пользовательским интерфейсом. Это предоставляет полную функциональность, " "которую вы ожидаете от почтового клиента, включая поддержку MIME, адресную " "книгу, управление папками, поиск сообщений и проверку орфографии." #: plinth/modules/roundcube/__init__.py:26 -#, fuzzy -#| msgid "" -#| "You can access Roundcube from /roundcube. " -#| "Provide the username and password of the email account you wish to access " -#| "followed by the domain name of the IMAP server for your email provider, " -#| "like imap.example.com. For IMAP over SSL (recommended), " -#| "fill the server field like imaps://imap.example.com." msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -4924,12 +5048,11 @@ msgid "" "(recommended), fill the server field like imaps://imap.example.com." msgstr "" -"Вы можете получить доступ к Roundcube на /roundcube. Предоставьте имя пользователя и пароль от учетной записи электронной " -"почты с указанием доменного имени IMAP сервера вашего провайдера электронной " -"почты, например imap.example.com Для IMAP оver SSL " -"(рекомендуется) заполните поле сервера, например imaps://imap.example." -"com." +"Вы можете использовать его, указав имя пользователя и пароль учетной записи " +"электронной почты, к которой вы хотите получить доступ, а затем имя домена " +"сервера IMAP для вашего провайдера электронной почты, например imap." +"example.com. Для IMAP через SSL (рекомендуется) заполните поле " +"сервера, например imaps://imap.example.com." #: plinth/modules/roundcube/__init__.py:31 msgid "" @@ -4961,6 +5084,8 @@ msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" +"Samba позволяет обмениваться файлами и папками между FreedomBox и другими " +"компьютерами в вашей локальной сети." #: plinth/modules/samba/__init__.py:35 #, python-brace-format @@ -4970,79 +5095,79 @@ msgid "" "\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " "There are three types of shares you can choose from: " msgstr "" +"После установки вы можете выбрать, какие диски использовать для совместного " +"использования. Включённые общие ресурсы доступны в файловом менеджере на " +"вашем компьютере по адресу \\\\{hostname} (в Windows) или smb://{hostname}." +"local (в Linux и Mac). Вы можете выбрать один из трёх типов: " #: plinth/modules/samba/__init__.py:40 msgid "Open share - accessible to everyone in your local network." -msgstr "" +msgstr "Открытый общий ресурс - доступен всем в вашей локальной сети." #: plinth/modules/samba/__init__.py:41 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" +"Общий доступ к группе - доступен только пользователям FreedomBox, которые " +"находятся в группе Freedombox-share." #: plinth/modules/samba/__init__.py:43 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" +"Домашняя папка - каждый пользователь в группе Freedombox-share может иметь " +"собственное личное пространство." #: plinth/modules/samba/__init__.py:59 msgid "Access to the private shares" -msgstr "" +msgstr "Доступ к частным общим ресурсам" #: plinth/modules/samba/__init__.py:62 msgid "Samba" -msgstr "" +msgstr "Samba" #: plinth/modules/samba/__init__.py:63 -#, fuzzy -#| msgid "Network Time Server" msgid "Network File Storage" -msgstr "Сетевой сервер времени" +msgstr "Сетевое хранилище файлов" #: plinth/modules/samba/manifest.py:15 -#, fuzzy -#| msgid "IRC Client" msgid "Android Samba Client" -msgstr "IRC-клиент" +msgstr "Клиент Samba для Android" #: plinth/modules/samba/manifest.py:28 msgid "Ghost Commander - Samba plugin" -msgstr "" +msgstr "Ghost Commander - Samba плагин" #: plinth/modules/samba/manifest.py:42 msgid "VLC media player" -msgstr "" +msgstr "Медиаплеер VLC" #: plinth/modules/samba/manifest.py:56 -#, fuzzy -#| msgid "GNOME Calendar" msgid "GNOME Files" -msgstr "GNOME календарь" +msgstr "Файлы GNOME" #: plinth/modules/samba/manifest.py:68 msgid "Dolphin" -msgstr "" +msgstr "Dolphin" #: plinth/modules/samba/templates/samba.html:24 #: plinth/modules/samba/templates/samba.html:35 -#, fuzzy -#| msgid "Shared" msgid "Shares" -msgstr "Общее" +msgstr "Поделиться" #: plinth/modules/samba/templates/samba.html:26 msgid "" "Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" +"Примечание. На выбранных дисках будут использоваться только специально " +"созданные каталоги, а не весь диск." #: plinth/modules/samba/templates/samba.html:34 -#, fuzzy -#| msgid "Domain Name" msgid "Disk Name" -msgstr "Доменное имя" +msgstr "Имя диска" #: plinth/modules/samba/templates/samba.html:36 #: plinth/modules/storage/templates/storage.html:29 @@ -5051,7 +5176,7 @@ msgstr "Используется" #: plinth/modules/samba/templates/samba.html:57 msgid "VFAT partitions are not supported" -msgstr "" +msgstr "Разделы VFAT не поддерживаются" #: plinth/modules/samba/templates/samba.html:88 #, python-format @@ -5060,82 +5185,73 @@ msgid "" "\"%(storage_url)s\">storage module page and configure access to the " "shares on the users module page." msgstr "" +"Вы можете найти дополнительную информацию о дисках на странице модуля хранилище и настроить доступ к общим ресурсам " +"на странице модуля пользователи." #: plinth/modules/samba/templates/samba.html:94 msgid "Users who can currently access group and home shares" msgstr "" +"Пользователи, которые в настоящее время могут получить доступ к групповым и " +"домашним ресурсам" #: plinth/modules/samba/templates/samba.html:98 msgid "" "Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" +"Пользователи, которым необходимо повторно ввести свой пароль на странице " +"изменения пароля для доступа к групповым и домашним ресурсам" #: plinth/modules/samba/templates/samba.html:103 -#, fuzzy -#| msgid "Available Domains" msgid "Unavailable Shares" -msgstr "Доступные Домены" +msgstr "Недоступный общий доступ" #: plinth/modules/samba/templates/samba.html:105 msgid "" "Shares that are configured but the disk is not available. If the disk is " "plugged back in, sharing will be automatically enabled." msgstr "" +"Общие ресурсы настроены, но диск недоступен. Если диск снова подключить, " +"общий доступ будет включен автоматически." #: plinth/modules/samba/templates/samba.html:113 -#, fuzzy -#| msgid "Share added." msgid "Share name" -msgstr "Общий ресурс добавлен." +msgstr "Имя общего ресурса" #: plinth/modules/samba/templates/samba.html:114 -#, fuzzy -#| msgid "Actions" msgid "Action" -msgstr "Действия" +msgstr "Действие" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 -#, fuzzy -#| msgid "Add Share" +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" -msgstr "Добавить общий ресурс" +msgstr "Открытый ресурс" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 -#, fuzzy -#| msgid "Add Share" +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" -msgstr "Добавить общий ресурс" +msgstr "Групповой ресурс" -#: plinth/modules/samba/views.py:45 -#, fuzzy -#| msgid "Homepage" +#: plinth/modules/samba/views.py:53 msgid "Home Share" -msgstr "Домашняя страница" +msgstr "Домашний ресурс" -#: plinth/modules/samba/views.py:78 -#, fuzzy -#| msgid "Share deleted." +#: plinth/modules/samba/views.py:86 msgid "Share enabled." -msgstr "Общий ресурс удалён." +msgstr "Общий ресурс включён." -#: plinth/modules/samba/views.py:83 -#, fuzzy, python-brace-format -#| msgid "Error ejecting device: {error_message}" +#: plinth/modules/samba/views.py:91 +#, python-brace-format msgid "Error enabling share: {error_message}" -msgstr "Ошибка извлечения устройства: {error_message}" +msgstr "Ошибка при включении общего доступа: {error_message}" -#: plinth/modules/samba/views.py:88 -#, fuzzy -#| msgid "Share edited." +#: plinth/modules/samba/views.py:96 msgid "Share disabled." -msgstr "Общий ресурс изменён." +msgstr "Общий доступ отключён." -#: plinth/modules/samba/views.py:93 -#, fuzzy, python-brace-format -#| msgid "Error ejecting device: {error_message}" +#: plinth/modules/samba/views.py:101 +#, python-brace-format msgid "Error disabling share: {error_message}" -msgstr "Ошибка извлечения устройства: {error_message}" +msgstr "Ошибка отключения общего доступа: {error_message}" #: plinth/modules/searx/__init__.py:25 msgid "" @@ -5175,10 +5291,6 @@ msgstr "" "Выберите семейный фильтр по умолчанию, чтобы применить к вашим результатам " "поиска." -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "нет" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "Умеренный" @@ -5189,16 +5301,11 @@ msgstr "Строгий" #: plinth/modules/searx/forms.py:18 msgid "Allow Public Access" -msgstr "" +msgstr "Разрешить публичный доступ" #: plinth/modules/searx/forms.py:19 msgid "Allow this application to be used by anyone who can reach it." -msgstr "" - -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "Конфигурация обновлена." +msgstr "Разрешите использовать это приложение всем, у кого есть доступ к нему." #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" @@ -5230,17 +5337,51 @@ msgstr "" #: plinth/modules/security/templates/security.html:11 #: plinth/modules/security/templates/security.html:13 -#, fuzzy -#| msgid "Security" msgid "Show security report" -msgstr "Безопасность" +msgstr "Показать отчёт о безопасности" + +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "Частые обновления функций" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +#, fuzzy +#| msgid "Frequent feature updates are enabled." +msgid "Frequent feature updates are activated." +msgstr "Включены частые обновления функций." + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, fuzzy, python-format +#| msgid "" +#| "This will allow a very limited set of software, including FreedomBox " +#| "service, to be updated to receive newer features regularly instead of " +#| "once every 2 years or so. Note that packages with frequent feature " +#| "updates do not have support from Debian Security Team. They are instead " +#| "maintained by contributors to Debian and the FreedomBox community." +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" +"Это позволит обновлять очень ограниченный набор программного обеспечения, " +"включая службу FreedomBox, для получения новых функций регулярно, а не раз в " +"2 года или около того. Обратите внимание, что пакеты с частыми обновлениями " +"функций не поддерживаются командой безопасности Debian. Вместо этого они " +"поддерживаются участниками Debian и сообществом FreedomBox." #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 -#, fuzzy -#| msgid "Security" +#: plinth/modules/security/views.py:74 msgid "Security Report" -msgstr "Безопасность" +msgstr "Отчёт о безопасности" #: plinth/modules/security/templates/security_report.html:12 #, python-format @@ -5248,12 +5389,17 @@ msgid "" "The installed version of FreedomBox has %(count)s reported security " "vulnerabilities." msgstr "" +"Установленная версия FreedomBox %(count)s сообщила об уязвимостях " +"безопасности." #: plinth/modules/security/templates/security_report.html:18 msgid "" "The following table lists the current reported number, and historical count, " "of security vulnerabilities for each installed app." msgstr "" +"В следующей таблице перечислены текущее зарегистрированное количество и " +"историческое количество уязвимостей безопасности для каждого установленного " +"приложения." #: plinth/modules/security/templates/security_report.html:24 msgid "" @@ -5261,6 +5407,9 @@ msgid "" "sandboxing features are in use. Sandboxing mitigates the impact of a " "potentially compromised app to the rest of the system." msgstr "" +"Для приложений, которые предоставляют услуги, столбец \"Песочница\" " +"показывает, используются ли функции песочницы. Песочница смягчает влияние " +"потенциально скомпрометированного приложения на остальную систему." #: plinth/modules/security/templates/security_report.html:31 msgid "" @@ -5268,61 +5417,52 @@ msgid "" "from the rest of the system. It is only displayed while the service is " "running." msgstr "" +"«Покрытие песочницы» - это оценка того, насколько эффективно служба " +"изолирована от остальной системы. Он отображается только во время работы " +"службы." #: plinth/modules/security/templates/security_report.html:40 -#, fuzzy -#| msgid "Name" msgid "App Name" -msgstr "Имя" +msgstr "Имя приложения" #: plinth/modules/security/templates/security_report.html:41 msgid "Current Vulnerabilities" -msgstr "" +msgstr "Текущие уязвимости" #: plinth/modules/security/templates/security_report.html:42 msgid "Past Vulnerabilities" -msgstr "" +msgstr "Прошлые уязвимости" #: plinth/modules/security/templates/security_report.html:43 -#, fuzzy -#| msgid "Block Sandbox" msgid "Sandboxed" msgstr "Песочница" #: plinth/modules/security/templates/security_report.html:44 -#, fuzzy -#| msgid "Block Sandbox" msgid "Sandbox Coverage" -msgstr "Песочница" +msgstr "Покрытие песочницы" #: plinth/modules/security/templates/security_report.html:55 msgid "N/A" -msgstr "" +msgstr "Н/Д" #: plinth/modules/security/templates/security_report.html:57 -#, fuzzy -#| msgid "yes" msgid "Yes" msgstr "Да" #: plinth/modules/security/templates/security_report.html:59 -#, fuzzy -#| msgid "None" msgid "No" -msgstr "нет" +msgstr "Нет" #: plinth/modules/security/templates/security_report.html:66 -#, fuzzy -#| msgid "is not running" msgid "Not running" -msgstr "не запущен" +msgstr "Не запущен" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Ошибка настройки ограничения доступа: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "Обновлена настройка безопасности" @@ -5331,18 +5471,12 @@ msgid "Shaarli allows you to save and share bookmarks." msgstr "Shaarli позволяет вам сохранять и обмениваться закладками." #: plinth/modules/shaarli/__init__.py:21 -#, fuzzy -#| msgid "" -#| "When enabled, Shaarli will be available from /" -#| "shaarli path on the web server. Note that Shaarli only supports a " -#| "single user account, which you will need to setup on the initial visit." msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -"Когда включен, Shaarli будет доступен на /shaarli " -"на веб-сервере. Обратите внимание, что Shaarli поддерживает только одну " -"учетную запись для начальной установки." +"Обратите внимание, что Shaarli поддерживает только одну учетную запись " +"пользователя, которую вам нужно будет настроить при первом посещении." #: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:8 msgid "Shaarli" @@ -5451,31 +5585,22 @@ msgid "Disk path to a folder on this server that you intend to share." msgstr "Путь к папке на диске этого сервера, которую вы хотите сделать общей." #: plinth/modules/sharing/forms.py:28 -#, fuzzy -#| msgid "Publish Key" msgid "Public share" -msgstr "Опубликовать ключ" +msgstr "Публичный доступ" #: plinth/modules/sharing/forms.py:29 msgid "Make files in this folder available to anyone with the link." -msgstr "" +msgstr "Сделайте файлы в этой папке доступными для всех, у кого есть ссылка." #: plinth/modules/sharing/forms.py:34 -#, fuzzy -#| msgid "User groups who can read the files in the share" msgid "User groups that can read the files in the share" -msgstr "Группы пользователей, которые могут читать файлы общего ресурса" +msgstr "Группы пользователей, которые могут читать файлы в общей папке" #: plinth/modules/sharing/forms.py:36 -#, fuzzy -#| msgid "" -#| "Users who have these permissions will also be able to read the files in " -#| "the share." msgid "" "Users of the selected user groups will be able to read the files in the " "share." -msgstr "" -"Пользователи, имеющие эти права, также смогут читать файлы общего ресурса." +msgstr "Пользователи выбранных групп смогут читать файлы в общей папке." #: plinth/modules/sharing/forms.py:52 msgid "A share with this name already exists." @@ -5484,6 +5609,8 @@ msgstr "Общий ресурс с таким именем уже существ #: plinth/modules/sharing/forms.py:63 msgid "Shares should be either public or shared with at least one group" msgstr "" +"Общий доступ должны быть публично доступным или доступными хотя бы для одной " +"группы" #: plinth/modules/sharing/templates/sharing.html:24 #: plinth/modules/sharing/templates/sharing.html:27 @@ -5508,7 +5635,7 @@ msgstr "С группами" #: plinth/modules/sharing/templates/sharing.html:57 msgid "public access" -msgstr "" +msgstr "публичный доступ" #: plinth/modules/sharing/views.py:39 msgid "Share added." @@ -5637,9 +5764,13 @@ msgid "Yearly Snapshots Limit" msgstr "Готовой лимит снапшотов" #: plinth/modules/snapshot/forms.py:49 +#, fuzzy +#| msgid "" +#| "Keep a maximum of this many yearly snapshots. The default value is 0 " +#| "(disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" "Хранить максимум столько ежегодных снапшотов. По умолчанию 0 (отключено)." @@ -5675,11 +5806,11 @@ msgstr "Откат" #: plinth/modules/snapshot/templates/snapshot_manage.html:42 msgid "will be used at next boot" -msgstr "" +msgstr "будет использоваться при следующей загрузке" #: plinth/modules/snapshot/templates/snapshot_manage.html:47 msgid "in use" -msgstr "" +msgstr "в использовании" #: plinth/modules/snapshot/templates/snapshot_manage.html:56 #, python-format @@ -5687,11 +5818,7 @@ msgid "Rollback to snapshot #%(number)s" msgstr "Откат к снимку #%(number)s" #: plinth/modules/snapshot/templates/snapshot_not_supported.html:11 -#, fuzzy, python-format -#| msgid "" -#| "Your have a filesystem of type %(fs_type)s. Snapshots " -#| "are currently only available on %(types_supported)s " -#| "filesystems." +#, python-format msgid "" "You have a filesystem of type %(fs_type)s. Snapshots are " "currently only available on %(types_supported)s filesystems." @@ -5767,15 +5894,13 @@ msgstr "" "может выполнять задачи администрирования, копировать файлы или запускать " "другие услуги с использованием таких соединений." -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell (SSH) сервер" #: plinth/modules/ssh/forms.py:13 -#, fuzzy -#| msgid "Use HTTP basic authentication" msgid "Disable password authentication" -msgstr "Использовать базовую аутентификацию HTTP" +msgstr "Отключить аутентификацию по паролю" #: plinth/modules/ssh/forms.py:14 msgid "" @@ -5783,40 +5908,39 @@ msgid "" "setup SSH keys in your administrator user account before enabling this " "option." msgstr "" +"Повышает безопасность за счет предотвращения подбора пароля. Перед " +"включением этой опции убедитесь, что в вашей учетной записи администратора " +"установлены ключи SSH." #: plinth/modules/ssh/templates/ssh.html:11 -#, fuzzy -#| msgid "SSH Fingerprint" msgid "Server Fingerprints" -msgstr "SSH отпечаток" +msgstr "Отпечатки сервера" #: plinth/modules/ssh/templates/ssh.html:14 msgid "" "When connecting to the server, ensure that the fingerprint shown by the SSH " "client matches one of these fingerprints." msgstr "" +"При подключении к серверу убедитесь, что отпечаток, показанный клиентом SSH, " +"совпадает с одним из этих отпечатков." #: plinth/modules/ssh/templates/ssh.html:23 msgid "Algorithm" -msgstr "" +msgstr "Алгоритм" #: plinth/modules/ssh/templates/ssh.html:24 -#, fuzzy -#| msgid "SSH Fingerprint" msgid "Fingerprint" -msgstr "SSH отпечаток" +msgstr "Отпечаток" #: plinth/modules/ssh/views.py:48 msgid "SSH authentication with password disabled." -msgstr "" +msgstr "SSH-аутентификация с отключенным паролем." #: plinth/modules/ssh/views.py:51 -#, fuzzy -#| msgid "Authentication to remote server failed." msgid "SSH authentication with password enabled." -msgstr "Аутентификация на удалённый сервер не прошла." +msgstr "SSH-аутентификация с включённым паролем." -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "Единый вход" @@ -5835,160 +5959,149 @@ msgstr "" "{box_name}. Вы можете видеть, какие носители используются, монтировать и " "размонтировать подключаемые носители, увеличивать корневой раздел итп." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" -msgstr "Storage" +msgstr "Хранилище" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} байт" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} КиБ" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} Миб" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} Гиб" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} Тиб" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "Операция не удалась." -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "Операция была отменена." -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "Устройство уже отключается." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" "Операция не поддерживается из-за отсутствия поддержки драйвера или утилиты." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "Время операции вышло." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Операция пробудит диск, находящийся в режиме глубокого сна." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "Попытка отключения устройства, которое используется." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "Операция уже отменена." -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "Отсутствует авторизация для выполнения запрошенной операции." -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "Устройство уже подключено." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "Устройство не подключено." -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "Использование запрошенной опции не разрешено." -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "Устройство подключено другим пользователем." -#: plinth/modules/storage/__init__.py:314 -#, fuzzy, no-python-format, python-brace-format -#| msgid "" -#| "Warning: Low space on system partition ({percent_used}% used, " -#| "{free_space} free)." +#: plinth/modules/storage/__init__.py:307 +#, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -"Предупреждение: недостаточно свободного пространства на системном разделе " -"({percent_used}% используется, {free_space} свободно)." +"Недостаточно места в системном разделе: использовано {percent_used}%, " +"свободно {free_space}." -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" -msgstr "" +msgstr "Недостаточно места на диске" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" -msgstr "" +msgstr "Неизбежный сбой диска" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" +"Диск {id} сообщает, что в ближайшем будущем он может выйти из строя. " +"Скопируйте любые данные, пока еще можете, и замените диск." #: plinth/modules/storage/forms.py:63 -#, fuzzy -#| msgid "Invalid hostname" msgid "Invalid directory name." -msgstr "Недопустимое имя хоста" +msgstr "Неверное имя каталога." #: plinth/modules/storage/forms.py:80 msgid "Directory does not exist." -msgstr "" +msgstr "Каталог не существует." #: plinth/modules/storage/forms.py:83 -#, fuzzy -#| msgid "Download directory" msgid "Path is not a directory." -msgstr "Папка для загрузок" +msgstr "Путь не каталог." #: plinth/modules/storage/forms.py:86 -#, fuzzy -#| msgid "The device is mounted by another user." msgid "Directory is not readable by the user." -msgstr "Устройство подключено другим пользователем." +msgstr "Каталог не читается пользователем." #: plinth/modules/storage/forms.py:89 msgid "Directory is not writable by the user." -msgstr "" +msgstr "Каталог не доступен для записи пользователем." #: plinth/modules/storage/forms.py:94 -#, fuzzy -#| msgid "Download directory" msgid "Directory" -msgstr "Папка для загрузок" +msgstr "Каталог" #: plinth/modules/storage/forms.py:96 msgid "Subdirectory (optional)" -msgstr "" +msgstr "Подкаталог (необязательно)" #: plinth/modules/storage/forms.py:143 -#, fuzzy -#| msgid "Shared" msgid "Share" -msgstr "Общее" +msgstr "Поделиться" #: plinth/modules/storage/forms.py:151 msgid "Other directory (specify below)" -msgstr "" +msgstr "Другой каталог (укажите ниже)" #: plinth/modules/storage/templates/storage.html:20 msgid "The following storage devices are in use:" @@ -6029,6 +6142,9 @@ msgid "" "Advanced storage operations such as disk partitioning and RAID management " "are provided by the Cockpit app." msgstr "" +"Расширенные операции хранения, такие как разбиение диска на разделы и " +"управление RAID, предоставляются приложением Cockpit." #: plinth/modules/storage/templates/storage_expand.html:14 #, python-format @@ -6077,14 +6193,7 @@ msgstr "" "на все другие устройства, на которых работает Syncthing." #: plinth/modules/syncthing/__init__.py:32 -#, fuzzy, python-brace-format -#| msgid "" -#| "Running Syncthing on {box_name} provides an extra synchronization point " -#| "for your data that is available most of the time, allowing your devices " -#| "to synchronize more often. {box_name} runs a single instance of " -#| "Syncthing that may be used by multiple users. Each user's set of devices " -#| "may be synchronized with a distinct set of folders. The web interface on " -#| "{box_name} is only available for users belonging to the \"admin\" group." +#, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " "your data that is available most of the time, allowing your devices to " @@ -6100,7 +6209,7 @@ msgstr "" "один экземпляр Syncthing и он может быть использован многими " "пользователями. Устройства каждого пользователя будут синхронизированы в " "собственный набор папок. Веб-интерфейс доступен только для пользователей, " -"принадлежащих к группе «admin»." +"принадлежащих к группе «admin» или «syncthing»." #: plinth/modules/syncthing/__init__.py:56 msgid "Administer Syncthing application" @@ -6138,11 +6247,11 @@ msgstr "" "быть добавлены дополнительные посредники, которые вводят этот узел в другие " "узлы хранения." -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "Распределенное Хранилище Файлов" @@ -6155,8 +6264,8 @@ msgid "" "%(domain_name)s:5678\">https://%(domain_name)s:5678." msgstr "" "Сервер Tahoe-LAFS доступен на %(domain_name)s. Изменение доменного " -"имени FreedomBox потребует переустановки Tahoe-LAFS и ВЫ МОЖЕТЕ ПОТЕРЯТЬ " -"ВСЕ ВАШИ ДАННЫЕ. Вы получить доступ к Tahoe-LAFS на https://%(domain_name)s:5678." #: plinth/modules/tahoe/templates/tahoe-post-setup.html:29 @@ -6185,7 +6294,7 @@ msgstr "Подключенные посредники" msgid "Remove" msgstr "Удалить" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6199,42 +6308,40 @@ msgstr "" "\"https://www.torproject.org/download/download-easy.html.en\">Tor Browser." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:65 -#, fuzzy -#| msgid "Tor Hidden Service" +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" -msgstr "Скрытый сервис Tor" +msgstr "Сервис Tor Onion" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "Tor Socks прокси" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "Ретранслятор Tor типа мост" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "Доступен порт трансляции Tor" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Obfs3 транспорт зарегестрирован" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Obfs4 транспорт зарегистрирован" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Доступ к {url} по tcp{kind} через Tor" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Подтверждение использования Tor в {url} по tcp {kind}" @@ -6308,17 +6415,11 @@ msgstr "" "цензуру." #: plinth/modules/tor/forms.py:103 -#, fuzzy -#| msgid "Enable Tor Hidden Service" msgid "Enable Tor Hidden Service" msgstr "Включить скрытый сервис Tor" #: plinth/modules/tor/forms.py:105 -#, fuzzy, python-brace-format -#| msgid "" -#| "A hidden service will allow {box_name} to provide selected services (such " -#| "as wiki or chat) without revealing its location. Do not use this for " -#| "strong anonymity yet." +#, python-brace-format msgid "" "A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " @@ -6359,10 +6460,8 @@ msgid "Tor configuration is being updated" msgstr "В настоящее время обновляется конфигурация Tor" #: plinth/modules/tor/templates/tor.html:25 -#, fuzzy -#| msgid "Hidden Service" msgid "Onion Service" -msgstr "Скрытая Служба" +msgstr "Onion сервис" #: plinth/modules/tor/templates/tor.html:27 msgid "Ports" @@ -6391,7 +6490,7 @@ msgstr "SОCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Порт Tor SOCKS вашего %(box_name)s доступен по порту TCP 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Настройки без изменений" @@ -6419,23 +6518,15 @@ msgstr "" "новости из любого места, так же удобно, как и в настольных приложениях." #: plinth/modules/ttrss/__init__.py:33 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Tiny Tiny RSS will be available from /" -#| "tt-rss path on the web server. It can be accessed by any user with a {box_name} login." +#, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -"Когда включен, Tiny Tiny RSS доступен по адресу /tt-rss. Он доступен всем пользователям {box_name}." +"Если этот параметр включён, к Tiny Tiny RSS может получить доступ любой пользователь с логином {box_name}." #: plinth/modules/ttrss/__init__.py:37 -#, fuzzy -#| msgid "" -#| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " -#| "/tt-rss-app for connecting." msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." @@ -6460,27 +6551,31 @@ msgstr "Чтение ленты новостей" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "Проверьте и установите новейшие программы и обновления безопасности." -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " "to be unavailable briefly. If system reboot is deemed necessary, it is done " "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" +"Обновления запускаются в 06:00 каждый день по местному часовому поясу. " +"Установите часовой пояс в приложении «Дата и время». После обновления " +"приложения перезапускаются, в результате чего они становятся недоступными на " +"короткое время. Если перезагрузка системы считается необходимой, она " +"выполняется автоматически в 02:00, в результате чего все приложения на " +"короткое время становятся недоступными." -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "Обновление" -#: plinth/modules/upgrades/__init__.py:83 -#, fuzzy -#| msgid "FreedomBox Foundation" +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" -msgstr "Фонд FrеedomBox" +msgstr "FreedomBox обновлён" #: plinth/modules/upgrades/forms.py:13 msgid "Enable auto-update" @@ -6491,11 +6586,35 @@ msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" "Если опция включена, то FreedomBox автоматически обновляется раз в день." +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "Активировать частые обновления функций (рекомендуется)" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +#, fuzzy +#| msgid "" +#| "Warning! Once frequent feature updates are activated, " +#| "they cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" +"Предупреждение! После активации частых обновлений функций " +"их нельзя деактивировать. Перед продолжением вы можете сделать снимок с " +"помощью снимки хранилища." + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 -#, fuzzy, python-format -#| msgid "%(box_name)s is up to date." +#, python-format msgid "%(box_name)s Updated" -msgstr "%(box_name)s в актуальном состоянии." +msgstr "%(box_name)s обновлён" #: plinth/modules/upgrades/templates/upgrades-new-release.html:13 #, python-format @@ -6503,30 +6622,54 @@ msgid "" "%(box_name)s has been updated to version %(version)s. See the release announcement." msgstr "" +"%(box_name)s обновлен до версии %(version)s. Смотрите объявление о выпуске." #: plinth/modules/upgrades/templates/upgrades-new-release.html:22 #: plinth/templates/notifications.html:44 msgid "Dismiss" -msgstr "" +msgstr "Отклонить" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" +"Можно активировать частые обновления функций. Их рекомендуется активировать." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +#, fuzzy +#| msgid "" +#| "Frequent feature updates can be activated. Activating them is recommended." +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" +"Можно активировать частые обновления функций. Их рекомендуется активировать." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" +"Предупреждение! После активации частых обновлений функций " +"их нельзя деактивировать. Перед продолжением вы можете сделать снимок с " +"помощью снимки хранилища." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" msgstr "Ручное обновление" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "Обновляется..." -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "Обновить сейчас" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 -#, fuzzy -#| msgid "" -#| "This may take a long time to complete. During an update, " -#| "you can not install apps. Also, this web interface may be temporarily " -#| "unavailable and show an error. In that case, refresh the page to continue." +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " @@ -6537,39 +6680,48 @@ msgstr "" "временно недоступен и показывать ошибку. В таком случае, чтобы продолжить, " "обновите страницу." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 -#, fuzzy -#| msgid "Toggle recent update logs" +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" -msgstr "Переключите последние протоколы обновления" +msgstr "Показать журналы последних обновлений" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "Ошибка при настройке автоматического обновления: {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "Автоматические обновления включены" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "Автоматические обновления отключены" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "Начался процесс обновления." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "Сбой при запуске обновления." +#: plinth/modules/upgrades/views.py:91 +#, fuzzy +#| msgid "Frequent feature updates are enabled." +msgid "Frequent feature updates activated." +msgstr "Включены частые обновления функций." + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" +"Создание и управление учетными записями пользователей. Эти учетные записи " +"служат централизованным механизмом аутентификации для большинства " +"приложений. Для некоторых приложений дополнительно требуется, чтобы учетная " +"запись пользователя была частью группы, чтобы разрешить пользователю доступ " +"к приложению." #: plinth/modules/users/__init__.py:44 #, python-brace-format @@ -6578,6 +6730,10 @@ msgid "" "relevant to them in the home page. However, only users of the admin " "group may alter apps or system settings." msgstr "" +"Любой пользователь может войти в веб-интерфейс {box_name}, чтобы увидеть " +"список соответствующих ему приложений на домашней странице. Однако только " +"пользователи группы admin могут изменять приложения или системные " +"настройки." #: plinth/modules/users/__init__.py:65 msgid "Users and Groups" @@ -6587,7 +6743,7 @@ msgstr "Пользователи и группы" msgid "Access to all services and system settings" msgstr "Доступ ко всем сервисам и настройкам системы" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Проверьте запись LDAP \"{search_item}\"" @@ -6597,28 +6753,16 @@ msgid "Username is taken or is reserved." msgstr "Имя пользователя уже занято." #: plinth/modules/users/forms.py:63 -#, fuzzy -#| msgid "Invalid server name" msgid "Enter a valid username." -msgstr "Недопустимое имя сервера" +msgstr "Введите действительное имя пользователя." -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" +"Требуется. 150 символов или меньше. Только английские буквы, цифры и @/./-/_." -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "Разрешения" - -#: plinth/modules/users/forms.py:85 -#, fuzzy -#| msgid "" -#| "Select which services should be available to the new user. The user will " -#| "be able to log in to services that support single sign-on through LDAP, " -#| "if they are in the appropriate group.

    Users in the admin group " -#| "will be able to log in to all services. They can also log in to the " -#| "system through SSH and have administrative privileges (sudo)." +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6632,20 +6776,20 @@ msgstr "" "Пользователи в группе администратора имеют доступ ко всем службам. Они также " "могут войти в систему через SSH и иметь административные привилегии (sudo)." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "Создание пользователя LDAP не удалось." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Не удалось добавить нового пользователя в группу {group}." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Авторизованные SSH ключи" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6656,45 +6800,43 @@ msgstr "" "на каждой строке. Пустые строки и строки, начинающиеся с # будут " "игнорироваться." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "Переименование пользователя LDAP не удалось." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "Не удалось удалить пользователя из группы." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "Не удалось добавить пользователя в группу." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "Не удалось задать ключи SSH." -#: plinth/modules/users/forms.py:281 -#, fuzzy -#| msgid "Failed to add user to group." +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." -msgstr "Не удалось добавить пользователя в группу." +msgstr "Не удалось изменить статус пользователя." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "Невозможно удалить единственного администратора в системе." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "Изменение LDAP пароля пользователя не удалось." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Не удалось добавить нового пользователя в группу администратора." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "Не удалось ограничить доступ к консоли." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "Учетная запись пользователя создана, теперь вы вошли" @@ -6801,7 +6943,7 @@ msgstr "Сбой при удалении LDAP пользователя." #: plinth/modules/users/views.py:146 msgid "Change Password" -msgstr "Смена пароля" +msgstr "Изменить пароль" #: plinth/modules/users/views.py:147 msgid "Password changed successfully." @@ -6809,7 +6951,7 @@ msgstr "Пароль успешно изменён." #: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." -msgstr "" +msgstr "WireGuard - это быстрый, современный и безопасный VPN-туннель." #: plinth/modules/wireguard/__init__.py:26 #, python-brace-format @@ -6817,6 +6959,9 @@ msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" +"Его можно использовать для подключения к провайдеру VPN, который " +"поддерживает WireGuard, и для маршрутизации всего исходящего трафика от " +"{box_name} через VPN." #: plinth/modules/wireguard/__init__.py:30 #, python-brace-format @@ -6825,60 +6970,59 @@ msgid "" "travelling. While connected to a public Wi-Fi network, all traffic can be " "securely relayed through {box_name}." msgstr "" +"Второй вариант использования - подключить мобильное устройство к {box_name} " +"во время путешествия. При подключении к общедоступной сети Wi-Fi весь трафик " +"может безопасно ретранслироваться через {box_name}." -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" -msgstr "" +msgstr "WireGuard" #: plinth/modules/wireguard/forms.py:32 -#, fuzzy -#| msgid "Invalid kite name" msgid "Invalid key." -msgstr "Недопустимое имя kite" +msgstr "Недействительный ключ." #: plinth/modules/wireguard/forms.py:61 #: plinth/modules/wireguard/templates/wireguard.html:17 #: plinth/modules/wireguard/templates/wireguard.html:74 #: plinth/modules/wireguard/templates/wireguard_delete_server.html:23 -#, fuzzy -#| msgid "Publish Key" msgid "Public Key" -msgstr "Опубликовать ключ" +msgstr "Открытый ключ" #: plinth/modules/wireguard/forms.py:62 msgid "" "Public key of the peer. Example: " "MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." msgstr "" +"Открытый ключ пира. Пример: MConEJFIg6 + DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs =." #: plinth/modules/wireguard/forms.py:70 msgid "Endpoint of the server" -msgstr "" +msgstr "Конечная точка сервера" #: plinth/modules/wireguard/forms.py:71 msgid "" "Domain name and port in the form \"ip:port\". Example: demo.wireguard." "com:12912 ." msgstr "" +"Доменное имя и порт в виде \"ip:port\". Пример: demo.wireguard.com:12912." #: plinth/modules/wireguard/forms.py:76 -#, fuzzy -#| msgid "Published key to keyserver." msgid "Public key of the server" -msgstr "Опубликованый ключ на сервере ключей." +msgstr "Открытый ключ сервера" #: plinth/modules/wireguard/forms.py:77 msgid "" "Provided by the server operator, a long string of characters. Example: " "MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." msgstr "" +"Предоставляется оператором сервера, длинная строка символов. Пример: " +"MConEJFIg6 + DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs =." #: plinth/modules/wireguard/forms.py:82 -#, fuzzy -#| msgid "A list of IP addresses, separated by space" msgid "Client IP address provided by server" -msgstr "Список IP-адресов, разделённых пробелом" +msgstr "IP-адрес клиента, предоставленный сервером" #: plinth/modules/wireguard/forms.py:83 msgid "" @@ -6886,10 +7030,13 @@ msgid "" "endpoint. This value is usually provided by the server operator. Example: " "192.168.0.10." msgstr "" +"IP-адрес, назначенный этому компьютеру в VPN после подключения к конечной " +"точке. Это значение обычно предоставляется оператором сервера. Пример: " +"192.168.0.10." #: plinth/modules/wireguard/forms.py:89 msgid "Private key of this machine" -msgstr "" +msgstr "Приватный ключ этой машины" #: plinth/modules/wireguard/forms.py:90 msgid "" @@ -6898,10 +7045,14 @@ msgid "" "some server operators insist on providing this. Example: " "MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." msgstr "" +"По желанию. Если оставить поле пустым, создаются новые открытые/закрытые " +"ключи. Затем серверу может быть предоставлен открытый ключ. Это " +"рекомендуемый способ. Однако некоторые операторы серверов настаивают на " +"этом. Пример: MConEJFIg6 + DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs =." #: plinth/modules/wireguard/forms.py:98 msgid "Pre-shared key" -msgstr "" +msgstr "Общий ключ" #: plinth/modules/wireguard/forms.py:99 msgid "" @@ -6909,127 +7060,107 @@ msgid "" "layer of security. Fill in only if provided. Example: " "MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." msgstr "" +"По желанию. Общий секретный ключ, предоставляемый сервером для добавления " +"дополнительного уровня безопасности. Заполняйте, только если предоставлено. " +"Пример: MConEJFIg6 + DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs =." #: plinth/modules/wireguard/forms.py:105 msgid "Use this connection to send all outgoing traffic" -msgstr "" +msgstr "Используйте это соединение для отправки всего исходящего трафика" #: plinth/modules/wireguard/forms.py:107 msgid "Typically checked for a VPN service though which all traffic is sent." msgstr "" +"Обычно проверяется на наличие службы VPN, через которую отправляется весь " +"трафик." #: plinth/modules/wireguard/templates/wireguard.html:10 -#, fuzzy -#| msgid "Chat Server" msgid "As a Server" -msgstr "Чат-сервер" +msgstr "Как сервер" #: plinth/modules/wireguard/templates/wireguard.html:12 msgid "Peers allowed to connect to this server:" -msgstr "" +msgstr "Пиры, которым разрешено подключаться к этому серверу:" #: plinth/modules/wireguard/templates/wireguard.html:18 msgid "Allowed IPs" -msgstr "" +msgstr "Разрешенные IP-адреса" #: plinth/modules/wireguard/templates/wireguard.html:19 #: plinth/modules/wireguard/templates/wireguard.html:75 -#, fuzzy -#| msgid "Create Connection" msgid "Last Connected Time" -msgstr "Создание подключения" +msgstr "Время последнего подключения" #: plinth/modules/wireguard/templates/wireguard.html:38 #, python-format msgid "No peers configured to connect to this %(box_name)s yet." msgstr "" +"Нет одноранговых узлов, настроенных для подключения к этому %(box_name)s." #: plinth/modules/wireguard/templates/wireguard.html:47 #, python-format msgid "Public key for this %(box_name)s:" -msgstr "" +msgstr "Открытый ключ для этого %(box_name)s:" #: plinth/modules/wireguard/templates/wireguard.html:53 -#, fuzzy -#| msgid "No shares currently configured." msgid "Not configured yet." -msgstr "Нет настроенных общих ресурсов." +msgstr "Еще не настроен." #: plinth/modules/wireguard/templates/wireguard.html:57 -#, fuzzy -#| msgid "Add new introducer" msgid "Add a new peer" -msgstr "Добавить нового посредника" +msgstr "Добавление нового однорангового узла" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" -msgstr "" +msgstr "Добавить разрешенный клиент" #: plinth/modules/wireguard/templates/wireguard.html:64 -#, fuzzy -#| msgid "Chat Client" msgid "As a Client" -msgstr "Чат-клиент" +msgstr "Как клиент" #: plinth/modules/wireguard/templates/wireguard.html:66 #, python-format msgid "Servers that %(box_name)s will connect to:" -msgstr "" +msgstr "Серверы, к которым %(box_name)s будет подключаться:" #: plinth/modules/wireguard/templates/wireguard.html:73 #: plinth/modules/wireguard/templates/wireguard_delete_server.html:19 msgid "Endpoint" -msgstr "" +msgstr "Конечная точка" #: plinth/modules/wireguard/templates/wireguard.html:96 -#, fuzzy -#| msgid "Authentication to remote server failed." msgid "No connections to remote servers are configured yet." -msgstr "Аутентификация на удалённый сервер не прошла." +msgstr "Подключения к удаленным серверам пока не настроены." #: plinth/modules/wireguard/templates/wireguard.html:104 -#, fuzzy -#| msgid "Add new introducer" msgid "Add a new server" -msgstr "Добавить нового посредника" +msgstr "Добавить новый сервер" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 -#, fuzzy -#| msgid "Add Connection" +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" -msgstr "Добавить подключение" +msgstr "Добавить подключение к серверу" #: plinth/modules/wireguard/templates/wireguard_add_client.html:19 -#, fuzzy -#| msgid "IRC Client" msgid "Add Client" -msgstr "IRC-клиент" +msgstr "Добавить клиент" #: plinth/modules/wireguard/templates/wireguard_delete_client.html:14 -#, fuzzy -#| msgid "Are you sure that you want to remove this repository?" msgid "Are you sure that you want to delete this client?" -msgstr "Вы уверены, что хотите удалить этот репозиторий?" +msgstr "Вы уверены, что хотите удалить этот клиент?" #: plinth/modules/wireguard/templates/wireguard_delete_server.html:14 -#, fuzzy -#| msgid "Are you sure that you want to remove this repository?" msgid "Are you sure that you want to delete this server?" -msgstr "Вы уверены, что хотите удалить этот репозиторий?" +msgstr "Вы уверены, что хотите удалить этот сервер?" #: plinth/modules/wireguard/templates/wireguard_edit_client.html:19 -#, fuzzy -#| msgid "Chat Client" msgid "Update Client" -msgstr "Чат-клиент" +msgstr "Обновить клиент" #: plinth/modules/wireguard/templates/wireguard_edit_server.html:19 -#, fuzzy -#| msgid "Create Connection" msgid "Update Connection" -msgstr "Создание подключения" +msgstr "Обновить соединение" #: plinth/modules/wireguard/templates/wireguard_show_client.html:12 #, python-format @@ -7037,47 +7168,45 @@ msgid "" "%(box_name)s will allow this client to connect to it. Ensure that the client " "is configured with the following information." msgstr "" +"%(box_name)s позволит этому клиенту подключиться к нему. Убедитесь, что " +"клиент настроен со следующей информацией." #: plinth/modules/wireguard/templates/wireguard_show_client.html:20 msgid "Client public key:" -msgstr "" +msgstr "Открытый ключ клиента:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:24 msgid "IP address to use for client:" -msgstr "" +msgstr "IP-адрес для использования клиентом:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:28 #: plinth/modules/wireguard/templates/wireguard_show_server.html:31 msgid "Pre-shared key:" -msgstr "" +msgstr "Общий ключ:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:32 -#, fuzzy -#| msgid "Server domain" msgid "Server endpoints:" -msgstr "Домен сервера" +msgstr "Конечные точки сервера:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:40 #: plinth/modules/wireguard/templates/wireguard_show_server.html:27 -#, fuzzy -#| msgid "Select verified SSH public key" msgid "Server public key:" -msgstr "Выберите проверенный открытый ключ SSH" +msgstr "Открытый ключ сервера:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:50 #: plinth/modules/wireguard/templates/wireguard_show_server.html:49 msgid "Data transmitted:" -msgstr "" +msgstr "Передаваемые данные:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:54 #: plinth/modules/wireguard/templates/wireguard_show_server.html:53 msgid "Data received:" -msgstr "" +msgstr "Полученные данные:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:58 #: plinth/modules/wireguard/templates/wireguard_show_server.html:57 msgid "Latest handshake:" -msgstr "" +msgstr "Последнее рукопожатие:" #: plinth/modules/wireguard/templates/wireguard_show_server.html:14 #, python-format @@ -7086,104 +7215,77 @@ msgid "" "information. Ensure that the server is configured to allow %(box_name)s's " "public key and IP address." msgstr "" +"%(box_name)s попытается связаться с сервером WireGuard со следующей " +"информацией. Убедитесь, что сервер настроен на разрешение открытого ключа и " +"IP-адреса %(box_name)s." #: plinth/modules/wireguard/templates/wireguard_show_server.html:23 -#, fuzzy -#| msgid "Server domain" msgid "Server endpoint:" -msgstr "Домен сервера" +msgstr "Конечная точка сервера:" #: plinth/modules/wireguard/templates/wireguard_show_server.html:35 msgid "Public key of this machine:" -msgstr "" +msgstr "Открытый ключ этой машины:" #: plinth/modules/wireguard/templates/wireguard_show_server.html:39 msgid "IP address of this machine:" -msgstr "" +msgstr "IP-адрес этой машины:" -#: plinth/modules/wireguard/views.py:45 -#, fuzzy -#| msgid "Add new introducer" +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." -msgstr "Добавить нового посредника" +msgstr "Добавлен новый клиент." -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 -#, fuzzy -#| msgid "A share with this name already exists." +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" -msgstr "Общий ресурс с таким именем уже существует." +msgstr "Клиент с открытым ключом уже существует" -#: plinth/modules/wireguard/views.py:73 -#, fuzzy -#| msgid "Email Client" +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" -msgstr "Почтовый клиент" +msgstr "Разрешенный клиент" -#: plinth/modules/wireguard/views.py:95 -#, fuzzy -#| msgid "Update setup" +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." -msgstr "Обновить настройки" +msgstr "Обновленный клиент." -#: plinth/modules/wireguard/views.py:100 -#, fuzzy -#| msgid "Email Client" +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" -msgstr "Почтовый клиент" +msgstr "Изменить клиент" -#: plinth/modules/wireguard/views.py:133 -#, fuzzy -#| msgid "Delete All" +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" -msgstr "Удалить все" +msgstr "Удалить разрешенный клиент" + +#: plinth/modules/wireguard/views.py:140 +msgid "Client deleted." +msgstr "Клиент удалён." #: plinth/modules/wireguard/views.py:142 -#, fuzzy -#| msgid "Archive deleted." -msgid "Client deleted." -msgstr "Архив удалён." - -#: plinth/modules/wireguard/views.py:144 -#, fuzzy -#| msgid "Repository not found" msgid "Client not found" -msgstr "Репозиторий не найден" +msgstr "Клиент не найден" -#: plinth/modules/wireguard/views.py:154 -#, fuzzy -#| msgid "Added custom service" +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." -msgstr "Добавить пользовательскую службу" +msgstr "Добавлен новый сервер." -#: plinth/modules/wireguard/views.py:175 -#, fuzzy -#| msgid "Connection Type" +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" -msgstr "Тип подключения" +msgstr "Подключение к серверу" -#: plinth/modules/wireguard/views.py:193 -#, fuzzy -#| msgid "Update setup" +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." -msgstr "Обновить настройки" +msgstr "Обновленный сервер." -#: plinth/modules/wireguard/views.py:198 -#, fuzzy -#| msgid "Edit Connection" +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" -msgstr "Редактирование подключения" +msgstr "Изменить подключение к серверу" -#: plinth/modules/wireguard/views.py:235 -#, fuzzy -#| msgid "Delete Connection" +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" -msgstr "Удаление подключения" +msgstr "Удалить соединение с сервером" -#: plinth/modules/wireguard/views.py:255 -#, fuzzy -#| msgid "Share deleted." +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." -msgstr "Общий ресурс удалён." +msgstr "Сервер удален." #: plinth/network.py:27 msgid "PPPoE" @@ -7193,23 +7295,23 @@ msgstr "PPPоE" msgid "Generic" msgstr "Универсальный" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "Ошибка во время установки" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "Установка" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "Загрузка" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "изменение медиа" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "Файл настроек: {file}" @@ -7233,43 +7335,33 @@ msgid "Requested page %(request_path)s was not found." msgstr "Запрошенная страница %(request_path)s не найдена." #: plinth/templates/404.html:19 -#, fuzzy -#| msgid "" -#| "If you believe this missing page should exist, please file a bug at the " -#| "FreedomBox Service (Plinth) project issue tracker." msgid "" "If you believe this missing page should exist, please file a bug at the " "FreedomBox Service (Plinth) project issue tracker." msgstr "" -"Если вы считаете, что страница должна существовать, пожалуйста, сообщите об " -"ошибке в службу проекта FreedomBox (Plinth)issue tracker." +"Если вы считаете, что эта отсутствующая страница должна существовать, " +"сообщите об ошибке в системе отслеживания проблем проекта FreedomBox Service " +"(Plinth) ." #: plinth/templates/500.html:10 msgid "500" msgstr "500" #: plinth/templates/500.html:14 -#, fuzzy, python-format -#| msgid "" -#| "This is an internal error and not something you caused or can fix. Please " -#| "report the error on the bug tracker so we can fix it. Also, please " -#| "attach the status log to the bug " -#| "report." +#, python-format msgid "" "This is an internal error and not something you caused or can fix. Please " "report the error on the bug tracker so we can fix it. Also, please attach " "the status log to the bug report." msgstr "" -"Это внутренняя ошибка, не Вы были её причиной и вряд ли можете её устранить. " -"Пожалуйста, сообщите об ошибке на bug tracker и мы исправим это. Так же, " -"пожалуйста, прикрепите Лог состояния к " -"отчету об ошибке." +"Это внутренняя ошибка, а не то, что вы вызвали или можете исправить. " +"Сообщите об ошибке в трекере ошибок, чтобы мы могли ее исправить. Также " +"приложите журнал состояния к отчету об " +"ошибке." #: plinth/templates/app-header.html:22 msgid "Installation" @@ -7303,7 +7395,7 @@ msgstr "Система" #: plinth/templates/base.html:166 plinth/templates/base.html:167 msgid "Change password" -msgstr "Смена пароля" +msgstr "Изменить пароль" #: plinth/templates/base.html:174 plinth/templates/base.html:175 msgid "Restart" @@ -7356,7 +7448,7 @@ msgstr "macOS" #: plinth/templates/clients.html:73 msgid "Mobile" -msgstr "Mobile" +msgstr "Мобильные устройства" #: plinth/templates/clients.html:84 msgid "Play Store" @@ -7456,12 +7548,13 @@ msgid "Mailing list" msgstr "Список рассылки" #: plinth/templates/internal-zone.html:11 -#, fuzzy, python-format -#| msgid "%(service_name)s is available only on internal networks." +#, python-format msgid "" "%(service_name)s is available only on internal networks or when the " "client is connected to %(box_name)s through VPN." -msgstr "%(service_name)s доступно только во внутренних сетях." +msgstr "" +"%(service_name)s доступен только во внутренних сетях или когда " +"клиент подключен к %(box_name)s через VPN." #: plinth/templates/internal-zone.html:17 msgid "Currently there are no network interfaces configured as internal." @@ -7478,25 +7571,64 @@ msgstr "" "внутренние: %(interface_list)s" #: plinth/templates/notifications-dropdown.html:11 -#, fuzzy -#| msgid "No certificate" msgid "Notifications" -msgstr "Не сертификата" +msgstr "Уведомления" #: plinth/templates/port-forwarding-info.html:8 -#, fuzzy -#| msgid "Enable forwarding" msgid "Port Forwarding" -msgstr "Включить переадресацию" +msgstr "Перенаправление портов" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Вы можете проверить настройки сетии " +"изменить их, если необходимо." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." msgstr "" +#: plinth/templates/port-forwarding-info.html:26 +#, fuzzy, python-format +#| msgid "" +#| "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 " +#| "%(service_name)s:" +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" +"Если ваш FreedomBox находится за маршрутизатором, вам необходимо настроить " +"переадресацию портов на вашем маршрутизаторе. Вам следует перенаправить " +"следующие порты для %(service_name)s:" + +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "протокол" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "Установка %(box_name)s" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "Установить это приложение?" @@ -7543,6 +7675,84 @@ msgstr "%(percentage)s%% завершено" msgid "Gujarati" msgstr "Гуджарати" +#~ msgid "Backports activated." +#~ msgstr "Резервные копии активированы." + +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot является однокликовым веб-приложением для обмена файлами с " +#~ "фокусировкой на защите пользовательской приватности. Лучше всего " +#~ "использовать для быстрого обмена одним файлом. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Этот экземпляр Coquelicot выставлен для широкой публики, но требует " +#~ "загрузки пароля для предотвращения несанкционированного доступа. Вы " +#~ "можете установить новый загрузить пароль в форме, которая появится ниже, " +#~ "после установки. Отправить пароль по умолчанию - \"test\"." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "Пароль загрузки" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Установить новый пароль для Coquelicot. Оставьте это поле пустым, чтобы " +#~ "сохранить текущий пароль." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Максимальный размер файла (в Мб)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Установить максимальный размер файлов, которые могут быть загружены на " +#~ "Coquelicot." + +#~ msgid "coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Пароль загрузки обновлен" + +#~ msgid "Failed to update upload password" +#~ msgstr "Не удается обновить пароль загрузки" + +#~ msgid "Maximum file size updated" +#~ msgstr "Максимальный размер файла обновлен" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "Не удалось обновить максимальный размер файла" + +#~ msgid "Riot" +#~ msgstr "Riot" + +#, fuzzy +#~| msgid "Security" +#~ msgid "Security Notice" +#~ msgstr "Безопасность" + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Резервные копии" + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "Включить" + #~ msgid "Restoring" #~ msgstr "Восстановление" @@ -7841,9 +8051,6 @@ msgstr "Гуджарати" #~ msgid "Manage" #~ msgstr "Управление" -#~ msgid "Create" -#~ msgstr "Создать" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "Вы получили ваучер с вашим {box_name} Danube Edition" @@ -8173,9 +8380,6 @@ msgstr "Гуджарати" #~ msgid "Apps data to restore from the backup" #~ msgstr "Восстановить из резервной копии" -#~ msgid "Backup archives" -#~ msgstr "Резервные копии" - #~ msgid "Export" #~ msgstr "Экспортировать" @@ -8361,9 +8565,6 @@ msgstr "Гуджарати" #~ msgid "BitTorrent" #~ msgstr "БитТоррент" -#~ msgid "admin" -#~ msgstr "admin" - #~ msgid "wiki" #~ msgstr "Wiki" diff --git a/plinth/locale/sl/LC_MESSAGES/django.po b/plinth/locale/sl/LC_MESSAGES/django.po index 710b355f6..527bf8b88 100644 --- a/plinth/locale/sl/LC_MESSAGES/django.po +++ b/plinth/locale/sl/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2019-05-07 20:48+0000\n" "Last-Translator: Erik Ušaj \n" "Language-Team: Slovenian user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1507,11 +1647,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1523,11 +1663,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1577,12 +1717,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1690,62 +1832,70 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository URL." msgstr "Neveljavno ime gostitelja" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "Neveljavno ime gostitelja" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository not found" msgid "Repository's owner name" msgstr "Ne najdem skladišča" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 #, fuzzy #| msgid "Create new repository" msgid "Private repository" msgstr "Ustvari novo skladišče" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 #, fuzzy #| msgid "Create remote backup repository" msgid "A repository with this name already exists." msgstr "Ustvari oddaljeno skladišče za rezervne kopije" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 #, fuzzy #| msgid "Create new repository" msgid "Name of the repository" msgstr "Ustvari novo skladišče" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1821,11 +1971,6 @@ msgstr "Ne najdem skladišča" msgid "Edit repository" msgstr "Ustvari novo skladišče" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1836,33 +1981,33 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1923,18 +2068,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2079,16 +2212,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -2113,19 +2246,19 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2276,11 +2409,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2392,16 +2525,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2451,7 +2574,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2461,14 +2584,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2484,7 +2607,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2537,11 +2660,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "" @@ -2650,12 +2773,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2696,7 +2819,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2705,19 +2828,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2984,11 +3107,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -3016,7 +3139,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -3041,6 +3164,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service Discovery" +msgid "Services" +msgstr "Odkrivanje storitev" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3053,56 +3182,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3110,185 +3239,190 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3296,7 +3430,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3305,7 +3439,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3313,11 +3447,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3328,7 +3462,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3352,17 +3486,17 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3570,7 +3704,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3615,7 +3749,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3627,13 +3761,13 @@ msgstr "Povezava je zavrnjena" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3674,6 +3808,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3810,71 +3945,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3889,16 +4024,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3954,11 +4089,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -4153,6 +4288,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4238,7 +4386,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4262,11 +4410,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4274,7 +4422,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4284,19 +4432,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4318,6 +4466,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4522,33 +4674,33 @@ msgstr "" msgid "Action" msgstr "Šifriranje" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Napaka ob nameščanju aplikacije: {error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4586,10 +4738,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4606,11 +4754,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4638,8 +4781,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4708,12 +4876,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -4982,8 +5150,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5098,7 +5266,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5141,7 +5309,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -5157,103 +5325,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5414,11 +5582,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5457,7 +5625,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5466,40 +5634,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5625,7 +5793,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5684,11 +5852,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5696,11 +5864,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -5714,6 +5882,23 @@ msgstr "" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5731,50 +5916,73 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5798,7 +6006,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5813,16 +6021,12 @@ msgstr "" msgid "Enter a valid username." msgstr "Neveljavno ime gostitelja" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5831,63 +6035,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -6014,7 +6218,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6138,7 +6342,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6165,7 +6369,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Connection refused" msgid "Add Connection to Server" @@ -6265,73 +6469,73 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy #| msgid "Create remote backup repository" msgid "Client with public key already exists" msgstr "Ustvari oddaljeno skladišče za rezervne kopije" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "Archive deleted." msgid "Client deleted." msgstr "Arhiv je izbrisan." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 #, fuzzy #| msgid "Repository not found" msgid "Client not found" msgstr "Ne najdem skladišča" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added new repository." msgid "Added new server." msgstr "Dodano je novo skladišče." -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection refused" msgid "Connection to Server" msgstr "Povezava je zavrnjena" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Error installing application: {error}" msgid "Modify Connection to Server" msgstr "Napaka ob nameščanju aplikacije: {error}" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Error installing application: {error}" msgid "Delete Connection to Server" msgstr "Napaka ob nameščanju aplikacije: {error}" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "Archive deleted." msgid "Server deleted." @@ -6345,23 +6549,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6603,12 +6807,40 @@ msgstr "" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 @@ -6655,6 +6887,11 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Rezervne kopije" + #~ msgid "Restoring" #~ msgstr "Obnavljanje" @@ -6676,9 +6913,6 @@ msgstr "" #~ msgid "Internet connection type saved." #~ msgstr "Konfiguracija je posodobljena" -#~ msgid "Create" -#~ msgstr "Ustvari" - #, fuzzy #~| msgid "Add Remote Repository" #~ msgid "Add Remote Location" diff --git a/plinth/locale/sr/LC_MESSAGES/django.po b/plinth/locale/sr/LC_MESSAGES/django.po index cc2b8b54f..07b29efc5 100644 --- a/plinth/locale/sr/LC_MESSAGES/django.po +++ b/plinth/locale/sr/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2020-04-13 05:34+0000\n" "Last-Translator: vihor \n" "Language-Team: Serbian user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1427,11 +1569,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1443,11 +1585,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1497,12 +1639,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1610,50 +1754,58 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1716,11 +1868,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1731,33 +1878,33 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1818,18 +1965,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -1974,16 +2109,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -2008,19 +2143,19 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2170,11 +2305,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2286,16 +2421,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2345,7 +2470,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2355,14 +2480,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2378,7 +2503,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2431,11 +2556,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "" @@ -2544,12 +2669,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2590,7 +2715,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2599,19 +2724,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2878,11 +3003,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -2908,7 +3033,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -2933,6 +3058,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Serving" +msgid "Services" +msgstr "Služi" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -2945,56 +3076,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3002,185 +3133,190 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3188,7 +3324,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3197,7 +3333,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3205,11 +3341,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3220,7 +3356,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3244,17 +3380,17 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3462,7 +3598,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3507,7 +3643,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3517,13 +3653,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3564,6 +3700,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3700,71 +3837,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3779,16 +3916,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3844,11 +3981,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -4043,6 +4180,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4128,7 +4278,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4152,11 +4302,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4164,7 +4314,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4174,19 +4324,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4208,6 +4358,12 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access" +msgid "Access rights" +msgstr "Pristup" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4408,32 +4564,32 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -4470,10 +4626,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4490,11 +4642,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4522,8 +4669,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4590,12 +4762,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -4864,8 +5036,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -4980,7 +5152,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5021,7 +5193,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -5037,103 +5209,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5292,11 +5464,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5335,7 +5507,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5344,40 +5516,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5503,7 +5675,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5554,11 +5726,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5566,11 +5738,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" msgstr "" @@ -5582,6 +5754,23 @@ msgstr "" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5599,50 +5788,73 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5666,7 +5878,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5679,16 +5891,12 @@ msgstr "" msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5697,63 +5905,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -5880,7 +6088,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6000,7 +6208,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6027,7 +6235,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -6115,59 +6323,59 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "" -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "" @@ -6179,23 +6387,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6437,12 +6645,40 @@ msgstr "" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 @@ -6489,6 +6725,11 @@ msgstr "" msgid "Gujarati" msgstr "" +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Sigurnosne kopije" + #~ msgid "Restoring" #~ msgstr "Vraćanje podataka" diff --git a/plinth/locale/sv/LC_MESSAGES/django.po b/plinth/locale/sv/LC_MESSAGES/django.po index 54e6e443d..89ce14e56 100644 --- a/plinth/locale/sv/LC_MESSAGES/django.po +++ b/plinth/locale/sv/LC_MESSAGES/django.po @@ -7,23 +7,23 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: 2020-06-24 11:41+0000\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-08-24 14:45+0000\n" "Last-Translator: Michael Breidenbach \n" "Language-Team: Swedish \n" +"freedombox/sv/>\n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" -"X-Generator: Weblate 4.2-dev\n" +"X-Generator: Weblate 4.2.1-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" msgstr "Sid källa" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "FreedomBox" @@ -136,11 +136,11 @@ msgstr "Identifiera tjänster" msgid "Local Network Domain" msgstr "Lokalt nätverksdomän" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "Säkerhetskopior gör det möjligt att skapa och hantera säkerhetsarkiv." -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "Säkerhetskopiering" @@ -149,6 +149,12 @@ msgstr "Säkerhetskopiering" msgid "{app} (No data to backup)" msgstr "{app} (Inga data att säkerhetskopiera)" +#: plinth/modules/backups/forms.py:50 +#, fuzzy +#| msgid "Create Repository" +msgid "Repository" +msgstr "Skapa respository" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -216,7 +222,17 @@ msgstr "" "\"Nyckel i databasen\" innebär att en lösenordsskyddad nyckel lagras med " "säkerhetskopian." -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +#, fuzzy +#| msgid "Create Repository" +msgid "Key in Repository" +msgstr "Skapa respository" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "Ingen" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "Lösenfras" @@ -389,6 +405,7 @@ msgid "Delete Archive %(name)s" msgstr "Ta bort arkiv %(name)s" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -612,6 +629,181 @@ msgstr "Avmontering misslyckas!" msgid "Mounting failed" msgstr "Avmontering misslyckades" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" +"bepasty är en webbapplikation som gör att stora filer kan laddas upp och " +"delas. Text- och kodavsnitt kan också klistras in och delas. Text, bild, " +"ljud, video och PDF-dokument kan förhandsgranskas i webbläsaren. Delade " +"filer kan ställas in för att löpa ut efter en tidsperiod." + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" +"bepasty använder inte användarnamn för inloggning. Den använder bara " +"lösenord. För varje lösenord kan en uppsättning behörigheter väljas. När du " +"har skapat ett lösenord kan du dela det med de användare som ska ha " +"tillhörande behörigheter." + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" +"Du kan också skapa flera lösenord med samma uppsättning privilegier, och " +"distribuera dem till olika personer eller grupper. Detta gör att du senare " +"återkalla åtkomst för en enda person eller grupp, genom att ta bort deras " +"lösenord från listan." + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "Läs en fil om en webblänk till filen är tillgänglig" + +#: plinth/modules/bepasty/__init__.py:43 +msgid "Create or upload files" +msgstr "Skapa eller ladda upp filer" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "Lista alla filer och deras webblänkar" + +#: plinth/modules/bepasty/__init__.py:45 +msgid "Delete files" +msgstr "Ta bort filer" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "Administrera filer: låsa/låsa upp filer" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "Inget, lösenord krävs alltid" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "Lista och läsa alla filer" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "bepasty" + +#: plinth/modules/bepasty/__init__.py:67 +msgid "File & Snippet Sharing" +msgstr "Fil & Snippet Sharing" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "Offentlig tillgång (standardbehörigheter)" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" +"Behörigheter för anonyma användare, som inte har angett något lösenord." + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "Behörigheter" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" +"Användare som loggar in med det här lösenordet kommer att ha de valda " +"behörigheterna." + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "Kommentar" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" +"Alla kommentarer som hjälper dig att komma ihåg syftet med det här " +"lösenordet." + +#: plinth/modules/bepasty/templates/bepasty.html:12 +msgid "Manage Passwords" +msgstr "Hantera lösenord" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +msgid "Add password" +msgstr "Lägg till lösenord" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "Inga lösenord har för närvarande konfigurerats." + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "Lösenord" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "Läsa" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "Skapa" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "Lista" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "Ta bort" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "Admin" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "Konfiguration uppdaterad." + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "Ett fel inträffade under konfiguration." + +#: plinth/modules/bepasty/views.py:97 +msgid "Password added." +msgstr "Lösenord tillagt" + +#: plinth/modules/bepasty/views.py:102 +msgid "Add Password" +msgstr "Lägg till lösenord" + +#: plinth/modules/bepasty/views.py:119 +msgid "Password deleted." +msgstr "Lösenord raderat" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -631,11 +823,11 @@ msgstr "" "andra maskiner i det lokala nätverket. Det är också oförenligt med att dela " "Internet-anslutning från {box_name}." -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "Domän Namn Server" @@ -664,6 +856,7 @@ msgstr "Betjäna domäner" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -686,9 +879,9 @@ msgstr "IP-adresser" msgid "Refresh IP address and domains" msgstr "Uppdatera IP-adress och domäner" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -774,12 +967,13 @@ msgid "Configure" msgstr "Konfigurera" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "Domännamn" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "Ogiltigt domännamn" @@ -852,7 +1046,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "Visa avancerade appar och funktioner" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "Visa appar och funktioner som kräver mer teknisk kunskap." @@ -896,77 +1090,6 @@ msgstr "Visar avancerade appar och funktioner" msgid "Hiding advanced apps and features" msgstr "Dölja avancerade appar och funktioner" -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" -"Coquelicot är en \"ett-klick\" -fildelning webbapplikation med fokus på att " -"skydda användarnas integritet. Det är bäst används för att snabbt dela en " -"enda fil. " - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" -"Denna Coquelicot-instans exponeras för allmänheten men kräver ett " -"uppladdningslösenord för att förhindra obehörig åtkomst. Du kan ställa in " -"ett nytt överföringslösenord i det formulär som kommer att visas nedan efter " -"installationen. Standardöverföringslösenordet är \"test\"." - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "Coquelicot" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "Fildelning" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "Ladda upp Lösenord" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" -"Ställ in ett nytt överföringslösenord för Coquelicot. Lämna det här fältet " -"tomt för att behålla det aktuella lösenordet." - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "Maximal filstorlek (i MiB)" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" -"Ställ in maximal storlek på filerna som kan laddas upp till Coquelicot." - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "Coquelicot" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "Ladda upp lösenordet uppdaterat" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "Det gick inte att uppdatera uppladdningslösenordet" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "Maximal filstorlek uppdaterad" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "Det gick inte att uppdatera den maximala filstorleken" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -987,11 +1110,11 @@ msgstr "" "Det är inte avsett att användas direkt av användarna. Servrar som matris-" "synaps måste konfigureras med de uppgifter som anges här." -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "VoIP-hjälpare" @@ -1028,7 +1151,7 @@ msgstr "" msgid "Date & Time" msgstr "Datum & Tid" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "Tid synkroniserad till NTP-server" @@ -1093,7 +1216,7 @@ msgstr "Ladda ner katalog" msgid "Bittorrent client written in Python/PyGTK" msgstr "Bittorrent-klient skriven i Python / PyGTK" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." @@ -1101,10 +1224,26 @@ msgstr "" "Systemets diagnostiktest utför ett antal kontroller av ditt system för att " "bekräfta att program och tjänster fungerar som de ska." -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "Diagnostik" +#: plinth/modules/diagnostics/__init__.py:102 +#, fuzzy +#| msgid "Quassel" +msgid "passed" +msgstr "Quassel" + +#: plinth/modules/diagnostics/__init__.py:103 +#, fuzzy +#| msgid "Setup failed." +msgid "failed" +msgstr "Installationen misslyckades." + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1248,7 +1387,7 @@ msgstr "Klient för Dynamisk DNS" msgid "Dynamic Domain Name" msgstr "Dynamiskt Domännamn" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1258,7 +1397,7 @@ msgstr "" "användas i webbadressen. Se mallar från de olika tjänsteleverantörerna för " "information om uppdateringsadress." -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1268,7 +1407,7 @@ msgstr "" "stöder protokollet GnuDIP, eller din leverantör saknas i listan, använd din " "leverantörs uppdateringsadress." -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1276,18 +1415,18 @@ msgstr "" "Skriv inte en full webbadress här (t.ex.: \"https://exempel.com/\"), utan " "endast värdnamnet för GnuDIP servern (t.ex.: \"exempel.com\")." -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "Det public domännamnet du vill använda för att nå ditt {box_name}." -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" "Använd denna funktion om din tjänsteleverantör använder självsignerade " "certifikat." -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." @@ -1295,11 +1434,11 @@ msgstr "" "Om detta alternativ är markerat, kommer ditt användarnamn och lösenord " "användas för grundläggande HTTP autentisering." -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "Lämna fältet tomt om du vill behålla ditt nuvarande lösenord." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1312,68 +1451,74 @@ msgstr "" "verkliga IP. Webbadressen ska helt enkelt returnera det IP som klienten " "kommer från. (exempel: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "Användarnamnet som användes när konton skapades." +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +#, fuzzy +#| msgid "Update URL" +msgid "other update URL" +msgstr "Adress för uppdateringar" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "Aktivera Dynamisk DNS" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "Servicetype" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "GnuDIP-serveradress" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "Du har angett ett ogiltigt servernamn" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "Adress för uppdateringar" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "Acceptera alla SSL-certifikat" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "Använd grundläggande HTTP-autentisering" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "Användarnamn" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "Lösenord" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "Visa lösenord" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "URL för att hitta publik IP" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "Ange en uppdateringsadress eller GnuDIP-serveradress" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "Ange ett användarnamn för GnuDIP" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "Ange ett GnuDIP-domän" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "Ange ett lösenord" @@ -1445,7 +1590,7 @@ msgstr "" msgid "Last update" msgstr "Senaste uppdatering" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Om" @@ -1494,12 +1639,12 @@ msgstr "" "nås av alla användare med en {box_name} inloggning." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ejabbert" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Chat-Server" @@ -1556,11 +1701,11 @@ msgstr "" "nya konton på offentliga XMPP-servrar (inklusive via Tor) eller till och med " "ansluta till din egen server för extra säkerhet." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "Gajim" @@ -1575,11 +1720,11 @@ msgstr "" "kommer att se ut som användarnamn@%(domainname)s. Du kan ställa in " "din domän på systemet Konfigurera sidan." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "Meddelandearkivhantering aktiverad" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "Meddelandearkivhantering avaktiverad" @@ -1636,12 +1781,14 @@ msgstr "Service/Port" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "Aktiverad" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "Inaktiverad" @@ -1768,51 +1915,61 @@ msgstr "Gitweb" msgid "Simple Git Hosting" msgstr "Enkelt Git hosting" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "Ogiltigt respository URL." -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "Ogiltigt respository namn." -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" "Namn på en ny databas eller URL för att importera en befintlig databas." -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "Beskrivning av förvaret" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "Tillval, för att visa på Gitweb." -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "Förvarets ägarnamn" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "Privat respository" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "Tillåt endast behöriga användare att komma åt detta respository." -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "Ett förvar med det här namnet finns redan." -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "Förvarets namn" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "En alfanumerisk sträng som identifierar ett respository unikt." +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default Skin" +msgid "Default branch" +msgstr "Standardskal" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "Git" @@ -1875,11 +2032,6 @@ msgstr "Respository redigerad." msgid "Edit repository" msgstr "Redigera respository" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "Ett fel inträffade under konfiguration." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1890,33 +2042,33 @@ msgstr "{name} borttagen." msgid "Could not delete {name}: {error}" msgstr "Kunde inte ta bort {name}: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "Dokumentation" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" -msgstr "Manual" +msgstr "Handbok" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "Få stöd" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "Skicka feedback" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "Bidra" @@ -1975,7 +2127,7 @@ msgid "" "\"https://wiki.debian.org/FreedomBox\">%(box_name)s Wiki." msgstr "" "Mer information om %(box_name)s -projektet finns på %(box_name)s wiki." +"debian.org/FreedomBox\"> %(box_name)s wiki." #: plinth/modules/help/templates/help_about.html:60 msgid "Learn more »" @@ -1996,21 +2148,6 @@ msgstr "Det finns en ny %(box_name)s version tillgänglig." msgid "%(box_name)s is up to date." msgstr "%(box_name)s är uppdaterad." -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "Säkerhetsmeddelande" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" -"Du använder paket från Debian backports. Observera att dessa paket inte har " -"säkerhetsstöd från Debian. De underhålls emellertid på bästa sätt av " -"medarbetare i Debian och FreedomBox gemenskap." - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2104,7 +2241,7 @@ msgid "" "The %(box_name)s Manual is the best place to " "start for information regarding %(box_name)s." msgstr "" -"%(box_name)s Manual är det bästa stället att " +"%(box_name)s Manual är det bästa stället att " "börja för aff få information om %(box_name)s." #: plinth/modules/help/templates/help_index.html:23 @@ -2202,16 +2339,16 @@ msgstr "" "Ta bort lösenord eller annan personlig information från loggen innan du " "skickar felrapporten." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "Dokumentation och Vanliga Frågor" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "Om {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Manual" @@ -2244,19 +2381,19 @@ msgstr "" "Det första besöket i det medföljande webbgränssnittet kommer att initiera " "konfigurationsprocessen." -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "Hantera I2P appen" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "Anonymitetsnätverk" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "I2P proxy" @@ -2426,11 +2563,11 @@ msgstr "" ", desktop client och installera det. Starta sedan Gobby och välj " "\"Anslut till server\" och ange ditt {box_name} domännamn." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "Infinoted" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby-Server" @@ -2555,16 +2692,6 @@ msgstr "Inget certifikat" msgid "Re-obtain" msgstr "Återfå" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Ta bort" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "Återkalla" @@ -2618,7 +2745,7 @@ msgstr "Certifikatet framgångsrikt återkallat för domänen {domain}" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "Det gick inte att ta bort certifikatet för domänen {domain}: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2635,17 +2762,17 @@ msgstr "" "fungera. Användare på en given Matrix-server kan samtala med användare på " "alla andra Matrix-servrar via federation." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" "För att kommunicera kan du använda tillgängliga klienter för mobil, skrivbord och webben. Riot -klient rekommenderas." +"href=\"https://element.io/\">Element -klient rekommenderas." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "Matrix Synapse" @@ -2664,8 +2791,8 @@ msgstr "" "bara vill att befintliga användare ska kunna använda det." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "Upplopp" +msgid "Element" +msgstr "Element" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2735,11 +2862,11 @@ msgstr "" "certifikat. Gå till Let's Encrypt för " "att få en sådan." -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "Offentlig registrering aktiverad" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "Offentlig registrering avaktiverad" @@ -2872,12 +2999,12 @@ msgstr "" "(30000). För att ansluta till servern, en Minetest klient behövs." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Block sandbox" @@ -2923,7 +3050,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "Om inaktiverat kan spelare inte dö eller få skador av något slag." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Adress" @@ -2932,19 +3059,19 @@ msgstr "Adress" msgid "Port" msgstr "Port" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "Maximal spelarkonfiguration uppdaterad" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "Kreativ-modus konfiguration uppdaterad" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "PVP-konfiguration uppdaterad" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "Skadekonfiguration uppdaterad" @@ -3252,11 +3379,11 @@ msgstr "" "\"http://mumble.info\"> Appar finns för att ansluta till Mumble från din " "dator- och Android-enheter." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "Röstchatt" @@ -3285,7 +3412,7 @@ msgstr "Mumblefly" msgid "Mumla" msgstr "Mumla" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "SuperUser lösenord har uppdaterats." @@ -3314,6 +3441,12 @@ msgstr "Alla" msgid "All web apps" msgstr "Alla webbappar" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Tjänst" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3330,36 +3463,36 @@ msgstr "" "Enheter som administreras via andra metoder kanske inte är tillgängliga för " "konfiguration här." -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Nätverk" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "Använder DNSSEC på IPv{kind}" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Anslutningstyp" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "Anslutningens namn" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "Nätverksgränssnitt" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "Den nätverksenhet som denna anslutning ska knytas till." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "Brandväggs-zon" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." @@ -3367,21 +3500,21 @@ msgstr "" "Brandväggs-zonen bestämmer vilka tjänster är tillgängliga genom detta " "gränssnitt. Välj endast interna för betrodda nätverk." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Externa" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Interna" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "Addresseringsmetod för IPv4" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3393,19 +3526,24 @@ msgstr "" "göra {box_name} fungera som en router, konfigurera klienter på detta nätverk " "och dela sin Internet-anslutning." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "Automatisk (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Delade" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "Handbok" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Nätmask" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." @@ -3413,21 +3551,21 @@ msgstr "" "Valfritt värde. Om detta lämnas tomt kommer en standard nätmask baserad på " "adressen användas." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "Gateway" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "Valfritt värde." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS-Server" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3436,11 +3574,11 @@ msgstr "" "\"Automatisk\", kommer DNS-servrar tillhandahållna av en DHCP-server att " "ignoreras." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "Sekundär DNS-server" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3448,11 +3586,11 @@ msgstr "" "Valfritt värde. Om värde anges och IPv4-adresseringsmetod är \"Automatisk\", " "kommer DNS-servrar tillhandahållna av en DHCP-server att ignoreras." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "IPv6-Addresseringsmetod" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3461,27 +3599,27 @@ msgstr "" "\"Automatisk\" metoder kommer att göra {box_name} hämta konfiguration från " "det här nätverket och gör det till en klient." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Automatisk" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "Automatisk, bara DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "Ignorera" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "Prefix" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "Värde mellan 1 och 128." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3490,7 +3628,7 @@ msgstr "" "\"Automatisk\", kommer DNS-servrar tillhandahållna av en DHCP-server att " "ignoreras." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3498,54 +3636,54 @@ msgstr "" "Valfritt värde. Om värde anges och IPv6-adresseringsmetod är \"Automatisk\", " "kommer DNS-servrar tillhandahållna av en DHCP-server att ignoreras." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "--Välj--" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "Synligt namn för nätverket." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Läge" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Infrastruktur" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Kopplingspunkt" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "Ad-hoc-" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Frekvensbandet" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2,4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." @@ -3553,11 +3691,11 @@ msgstr "" "Valfritt värde. Trådlösa kanalen i det valda frekvensbandet för att begränsa " "till. Tomt eller 0 värde betyder automatiskt val." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3567,11 +3705,11 @@ msgstr "" "en åtkomstpunkt ska du endast ansluta om åtkomstpunktens BSSID matchar det " "som angetts. Exempel: 00:11:22: aa: bb: cc." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Autentiseringsläge" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." @@ -3579,20 +3717,20 @@ msgstr "" "Välj WPA om det trådlösa nätverket är säkert och kräver att användare har " "lösenord för att ansluta." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Öppet" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "Ange hur ditt {box_name} är anslutet till ditt nätverk" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3603,7 +3741,7 @@ msgstr "" "Internetanslutning från routern via Wi-Fi- eller Ethernet-kabel. Detta är en " "typisk hem setup.

    " -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3616,7 +3754,7 @@ msgstr "" "{box_name} är direkt ansluten till Internet och alla dina enheter ansluter " "till {box_name} för sin Internetanslutning.

    " -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3627,11 +3765,11 @@ msgstr "" "är direkt ansluten till {box_name} och det finns inga andra enheter i " "nätverket. Detta kan inträffa på community- eller molninställningar.

    " -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "Välj din internetanslutningstyp" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3649,16 +3787,8 @@ msgstr "" "offentlig IP-adress men är osäker på om den ändras med tiden eller inte, är " "det säkrare att välja det här alternativet.

    " -#: plinth/modules/networks/forms.py:357 -#, fuzzy, python-brace-format -#| msgid "" -#| "I have a public IP address that does not change overtime (recommended)

    This means that devices on the Internet can reach " -#| "you when you are connected to the Internet. Every time you connect to the " -#| "Internet with your Internet Service Provider (ISP), you always get the " -#| "same IP address. This is the most trouble-free setup for many {box_name} " -#| "services but very few ISPs offer this. You may be able to get this " -#| "service from your ISP by making an additional payment.

    " +#: plinth/modules/networks/forms.py:360 +#, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    This means that devices on the Internet can reach you " @@ -3668,15 +3798,15 @@ msgid "" "but very few ISPs offer this. You may be able to get this service from your " "ISP by making an additional payment.

    " msgstr "" -"Jag har en offentlig IP-adress som inte ändrar övertid (rekommenderas)

    Det innebär att enheter på Internet kan nå dig när du " -"är ansluten till Internet. Varje gång du ansluter till Internet med Internet-" -"leverantören får du alltid samma IP-adress. Detta är den mest problemfria " -"installationen för många {box_name} tjänster men mycket få " -"Internetleverantörer erbjuder detta. Du kanske kan få den här tjänsten från " -"internetleverantören genom att göra en extra betalning.

    " +"Jag har en publik IP-adress som inte ändras över tid (rekommenderas)

    Detta innebär att enheter på Internet kan nå dig när du är " +"ansluten till Internet. Varje gång du ansluter till Internet med din " +"Internet Service Provider (ISP), du får alltid samma IP-adress. Detta är den " +"mest problemfria setup för många {box_name} tjänster, men väldigt få " +"Internetleverantörer erbjuder detta. Du kan få denna service från din ISP " +"genom att göra en extra betalning.

    " -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3695,7 +3825,7 @@ msgstr "" "besvärliga situationen för hosting tjänster hemma. {box_name} innehåller " "många lösningar men varje lösning har vissa begränsningar.

    " -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " @@ -3704,11 +3834,11 @@ msgstr "" "

    Du kommer att föreslås de mest konservativa " "åtgärderna.

    " -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "Önskad routerkonfiguration" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3935,13 +4065,15 @@ msgid "" "This interface is not maintained by %(box_name)s. For security, it is " "automatically assigned to the external zone." msgstr "" +"Detta gränssnitt upprätthålls inte av %(box_name)s. För säkerhet tilldelas " +"den automatiskt till den externa zonen." #: plinth/modules/networks/templates/connections_create.html:19 msgid "Create Connection" msgstr "Skapa anslutning" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Ta Bort Anslutning" @@ -3986,7 +4118,7 @@ msgid "Computer" msgstr "Dator" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Redigera Anslutning" @@ -3996,13 +4128,13 @@ msgstr "Anslutningar" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "Wi-Fi-nätverk i närheten" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Lägg till Anslutning" @@ -4045,6 +4177,7 @@ msgstr "Hoppa över det här steget" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "Nästa" @@ -4078,7 +4211,7 @@ msgstr "Min internetleverantör ger inte någon offentlig IP-adress." #: plinth/modules/networks/templates/internet_connectivity_main.html:35 msgid "I do not know the type of connection my ISP provides." -msgstr "Jag vet inte vilken typ av anslutning min IsP ger." +msgstr "Jag vet inte vilken typ av anslutning min ISP tillhandahåller." #: plinth/modules/networks/templates/internet_connectivity_main.html:41 #: plinth/modules/networks/templates/network_topology_main.html:41 @@ -4217,73 +4350,73 @@ msgstr "" "din router modellnummer och sök online för routerns manual. Detta ger " "fullständiga instruktioner om hur du utför den här uppgiften." -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Nätverksanslutningar" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "Kan inte visa anslutning: Ingen anslutning hittades." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "Anslutningsinformation" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "Kan inte redigera anslutning: Ingen anslutning hittades." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "Denna typ av anslutning är inte förstådd ännu." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "Aktiverad anslutning {name}." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "Det gick inte att aktivera anslutning: Ingen anslutning hittades." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" "Det gick inte att aktivera anslutningen {name}: Ingen lämplig enhet är " "tillgänglig." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "Inaktiverade anslutning {name}." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "Kunde inte de-aktivera anslutning: Anslutning hittades inte." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "Lägga till ny generiska anslutning" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "Lägg Till Ny Ethernet-Anslutning" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "Lägg Till Ny PPPoE-Anslutning" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "Lägg Till Ny Wi-Fi-Anslutning" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "Anslutning {name} borttagen." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "Det gick inte att ta bort anslutning: Anslutning hittades inte." @@ -4304,16 +4437,16 @@ msgstr "" "tillhandahålls av {box_name}. Du kan också komma åt resten av Internet via " "{box_name} för ökad säkerhet och anonymitet." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "Virtuellt privat nätverk" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4382,11 +4515,11 @@ msgstr "" msgid "Download my profile" msgstr "Ladda ner min profil" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "Installationen har slutförts." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "Installationen misslyckades." @@ -4608,6 +4741,19 @@ msgstr "" msgid "Performance" msgstr "Prestanda" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "Systemövervakning" @@ -4711,7 +4857,7 @@ msgstr "Privoxy" msgid "Web Proxy" msgstr "Webbproxy" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "Åtkomst till {url} med proxy {proxy} på TCP {kind}" @@ -4745,11 +4891,11 @@ msgstr "" "downloads\" >Desktop och mobila-enheter är tillgängliga." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "IRC-klient" @@ -4757,7 +4903,7 @@ msgstr "IRC-klient" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4772,7 +4918,7 @@ msgstr "" "clients\">stöds klientprogram. Radicale kan nås av alla användare med en " "{box_name} inloggning." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " @@ -4782,12 +4928,12 @@ msgstr "" "skapandet av nya kalendrar och adressböcker. Det stöder inte att lägga till " "händelser eller kontakter, som måste göras med hjälp av en separat klient." -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "Kalender och adressbok" @@ -4814,6 +4960,12 @@ msgstr "" "Alla användare med en {box_name}-inloggning kan visa eller göra ändringar i " "en kalender/adressbok." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Kopplingspunkt" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "DAVx5" @@ -5056,32 +5208,32 @@ msgstr "Resursnamn" msgid "Action" msgstr "Åtgärder" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "Öppna Share" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "Grupp Share" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "Hemma Share" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "Resurs aktiverad." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "Fel vid aktivering av resurs: {error_message}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "Share resurs inaktiverat." -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "Fel vid inaktivering av resurs: {error_message}" @@ -5122,10 +5274,6 @@ msgstr "Säker sökning" msgid "Select the default family filter to apply to your search results." msgstr "Välj det standard familjefilter som ska användas för sökresultaten." -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "Ingen" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "Måttlig" @@ -5142,11 +5290,6 @@ msgstr "Tillåt offentlig åtkomst" msgid "Allow this application to be used by anyone who can reach it." msgstr "Tillåt att det här programmet används av alla som kan nå det." -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "Konfiguration uppdaterad." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "Begränsa konsol inloggningar (rekommenderas)" @@ -5180,8 +5323,47 @@ msgstr "" msgid "Show security report" msgstr "Visa säkerhetsrapport" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "Frekventa funktionsuppdateringar" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +#, fuzzy +#| msgid "Frequent feature updates are enabled." +msgid "Frequent feature updates are activated." +msgstr "Frekventa funktionsuppdateringar är aktiverade." + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, fuzzy, python-format +#| msgid "" +#| "This will allow a very limited set of software, including FreedomBox " +#| "service, to be updated to receive newer features regularly instead of " +#| "once every 2 years or so. Note that packages with frequent feature " +#| "updates do not have support from Debian Security Team. They are instead " +#| "maintained by contributors to Debian and the FreedomBox community." +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" +"Detta kommer att möjliggöra en mycket begränsad uppsättning av programvara, " +"inklusive FreedomBox service, att vara uppdaterad för att få nyare " +"funktioner regelbundet istället för en gång per 2 år eller så. Observera att " +"paket med täta uppdateringar inte har stöd från Debians säkerhetsgrupp. De " +"är i stället upprätthålls av bidragsgivarna till Debian och FreedomBox " +"gemenskapen." + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "Säkerhetsrapport" @@ -5257,12 +5439,12 @@ msgstr "Nej" msgid "Not running" msgstr "Körs inte" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "Fel vid inställning av begränsad åtkomst: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "Uppdaterad säkerhetskonfiguration" @@ -5565,9 +5747,13 @@ msgid "Yearly Snapshots Limit" msgstr "Årlig ögonblicksbild gräns" #: plinth/modules/snapshot/forms.py:49 +#, fuzzy +#| msgid "" +#| "Keep a maximum of this many yearly snapshots. The default value is 0 " +#| "(disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" "Behåll högst detta många årliga ögonblicksbilder. Standardvärdet är 0 " "(inaktiverat)." @@ -5694,7 +5880,7 @@ msgstr "" "administrativa uppgifter, kopiera filer eller köra andra tjänster med sådana " "anslutningar." -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "Secure Shell-Server (SSH)" @@ -5740,7 +5926,7 @@ msgstr "SSH-autentisering med lösenord inaktiverat." msgid "SSH authentication with password enabled." msgstr "SSH-autentisering med lösenord aktiverat." -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "Enkel inloggning på" @@ -5759,105 +5945,105 @@ msgstr "" "{box_name}. Du kan visa lagringsmedia som för närvarande används, montera " "och demontera flyttbara media, expandera rotpartitionen etc." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "Lagring" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} byte" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} Kib" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} Mib" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} Gib" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} Tib" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "Åtgärden misslyckades." -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "Operationen avbröts." -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "Enheten lossnar redan." -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "Åtgärden stöds inte på grund av saknade drivrutiner/verktygsstöd." -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "Åtgärden orsakade timeout." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "Åtgärden skulle väcka en disk som är i ett djupviloläge." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "Försöker avmontera en enhet som är upptagen." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "Operationen har redan avbrutits." -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "Inte behörig att utföra den begärda åtgärden." -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "Enheten är redan monterad." -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "Enheten är inte monterad." -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "Inte tillåtet att använda det begärda alternativet." -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "Enheten monteras av en annan användare." -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" "Lågt utrymme på systempartitionen: {percent_used}% används, {free_space} " "fritt." -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "Lågt diskutrymme" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "Diskfel förestående" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -6044,11 +6230,11 @@ msgstr "" "standard. Ytterligare introducerare kan läggas till, vilket kommer att " "introducera den här noden till andra lagringsnoder." -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "Distribuerad fillagring" @@ -6091,7 +6277,7 @@ msgstr "Anslutna introducerare" msgid "Remove" msgstr "Ta bort" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6105,40 +6291,40 @@ msgstr "" "använder TOR Browser." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "Tor Onion service" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "Tor SOCKS-proxy" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "Tor Bridge Relay" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "Tor relä port tillgänglig" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Obfs3 transport registrerad" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Obfs4 transport registrerad" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "Tillgång URL {url} på TCP {kind} via Tor" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "Bekräfta Tor-användning vid {url} på TCP {kind}" @@ -6288,7 +6474,7 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "En Tor SOCKS-port finns på din %(box_name)s på TCP-port 9050." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "Instänllningar oförändrade" @@ -6330,7 +6516,7 @@ msgid "" "href=\"/tt-rss-app/\">/tt-rss-app for connecting." msgstr "" "När du använder en mobil eller stationär applikation för Tiny Tiny RSS, " -"Använd URL för att ansluta." +"Använd URL/tt-rss-app/\"> för att ansluta." #: plinth/modules/ttrss/__init__.py:53 msgid "Read and subscribe to news feeds" @@ -6348,12 +6534,12 @@ msgstr "Läsare för nyhetsflödet" msgid "Tiny Tiny RSS (Fork)" msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" "Sök efter och installera de senaste program-och säkerhetsuppdateringarna." -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6366,11 +6552,11 @@ msgstr "" "systemet bedöms vara nödvändigt, det sker automatiskt vid 02:00 orsakar alla " "apps för att vara tillgängligt en kort stund." -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "Uppdatera" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" msgstr "FreedomBox uppdaterad" @@ -6383,6 +6569,31 @@ msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" "När den är aktiverad uppdateras FreedomBox automatiskt en gång om dagen." +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "Aktivera frekventa uppdateringar (rekommenderas)" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +#, fuzzy +#| msgid "" +#| "Warning! Once frequent feature updates are activated, " +#| "they cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" +"Varning! När täta uppdateringar är aktiverade, de kan inte " +"stängas av. Du kanske vill ta en snapshot med hjälp av Ögonblicksbilder av lagring innan du fortsätter." + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -6402,61 +6613,87 @@ msgstr "" msgid "Dismiss" msgstr "Avfärda" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" -msgstr "Manuell uppdatering" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" +"Frekventa funktionsuppdateringar kan aktiveras. Aktivera dem rekommenderas." -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +#, fuzzy +#| msgid "" +#| "Frequent feature updates can be activated. Activating them is recommended." +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" +"Frekventa funktionsuppdateringar kan aktiveras. Aktivera dem rekommenderas." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" +"Varning! När täta uppdateringar är aktiverade, de kan inte " +"stängas av. Du kanske vill ta en snapshot med hjälp av Ögonblicksbilder av lagring innan du fortsätter." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "Manuell Uppdatering" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "Uppdatera..." -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "Uppdatera nu" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 -#, fuzzy -#| msgid "" -#| "This may take a long time to complete. During an update, " -#| "you cannot install apps. Also, this web interface may be temporarily " -#| "unavailable and show an error. In that case, refresh the page to continue." +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -"Det kan ta lång tid att slutföra. Du kan inte installera " -"appar under en uppdatering. Dessutom kan det här webbgränssnittet vara " -"tillfälligt otillgänglig och visa ett fel. Uppdatera i så fall sidan för att " +"Detta kan ta lång tid att slutföra. Under en uppdatering " +"kan du inte installera appar. Webbgränssnittet kan också vara tillfälligt " +"otillgängligt och visa ett fel. I så fall uppdaterar du sidan för att " "fortsätta." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 -#, fuzzy -#| msgid "Toggle recent update logs" +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" -msgstr "Växla senaste uppdateringsloggar" +msgstr "Visa senaste uppdatering av loggar" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "Fel vid konfigurering av obevakad uppgraderingar: {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "Automatiska uppgraderingar aktiverade" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "Automatiska uppgraderingar inaktiverade" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "Uppgraderingsprocessen påbörjades." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "Det gick inte att starta uppgraderingen." +#: plinth/modules/upgrades/views.py:91 +#, fuzzy +#| msgid "Frequent feature updates are enabled." +msgid "Frequent feature updates activated." +msgstr "Frekventa funktionsuppdateringar är aktiverade." + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6487,7 +6724,7 @@ msgstr "Användare och grupper" msgid "Access to all services and system settings" msgstr "Tillgång till alla tjänster och Systeminställningar" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "Kontrollera LDAP-posten \"{search_item}\"" @@ -6500,18 +6737,14 @@ msgstr "Användarnamnet är upptaget eller är reserverade." msgid "Enter a valid username." msgstr "Ange ett giltigt användarnamn." -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" "Krävs. 150 tecken eller färre. Engelska bokstäver, siffror och endast @/./-/" "_ ." -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "Behörigheter" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6525,20 +6758,20 @@ msgstr "" "administratörsgruppen kommer att kunna logga in på alla tjänster. De kan " "också logga in på systemet via SSH och har administratörsprivilegier (sudo)." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "Det gick inte att skapa LDAP-användare." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "Det gick inte att lägga till nya användare i gruppen {group}." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "Auktoriserade SSH-nycklar" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6548,43 +6781,43 @@ msgstr "" "systemet utan att använda ett lösenord. Du kan ange flera nycklar, en på " "varje rad. Tomma rader och rader som börjar med # kommer att ignoreras." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "Det gick inte att byta namn på LDAP-användare." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "Det gick inte att ta bort användare från gruppen." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "Det gick inte att lägga till användare i gruppen." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "Det går inte att ange SSH-nycklar." -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "Det gick inte att ändra användarstatus." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "Det går inte att ta bort den enda administratören i systemet." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "Det gick inte att ändra användarlösenordet för LDAP." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "Det gick inte att lägga till ny användare till administrationsgruppen." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "Det gick inte att begränsa åtkomst till konsolen." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "Användarkonto skapat, du är nu inloggad" @@ -6721,7 +6954,7 @@ msgstr "" "du reser. När all trafik är ansluten till ett offentligt Wi-Fi-nätverk kan " "den vidarebefordras på ett säkert sätt via {box_name}." -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "WireGuard" @@ -6859,7 +7092,7 @@ msgid "Add a new peer" msgstr "Lägga till en ny peer" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "Lägga till tillåten klient" @@ -6886,7 +7119,7 @@ msgid "Add a new server" msgstr "Lägga till en ny server" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "Lägga till anslutning till server" @@ -6979,59 +7212,59 @@ msgstr "Offentlig nyckel för denna maskin:" msgid "IP address of this machine:" msgstr "IP-adressen för denna maskin:" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "Lade till ny klient." -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "Klient med offentlig nyckel finns redan" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "Tillåten klient" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "Uppdaterad klient." -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "Ändra klienten" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "Ta bort tillåten klient" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "Klienten har tagits bort." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "Klienten hittades inte" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "Lade till ny server." -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "Anslutning till server" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "Uppdaterad server." -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "Ändra Anslutningen till Servern" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "Ta bort anslutning till server" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "Servern har tagits bort." @@ -7043,23 +7276,23 @@ msgstr "Pppoe" msgid "Generic" msgstr "Generiska" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "Fel vid installation" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "Installera" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "ladda ner" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "Mediabyte" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "konfigurationsfil: {file}" @@ -7326,16 +7559,56 @@ msgstr "Aviseringar" msgid "Port Forwarding" msgstr "Port Forwarding" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Du kanske vill kontrollera nätverksinställningar och ändra den vid behov." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, fuzzy, python-format +#| msgid "" +#| "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 " +#| "%(service_name)s:" +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" msgstr "" "Om din FreedomBox är bakom en router, måste du ställa in Port Forwarding på " "routern. Du bör vidarebefordra följande portar för %(service_name)s:" +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "Protokollet" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "%(box_name)s Installation" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "Installera den här applikationen?" @@ -7382,6 +7655,105 @@ msgstr "%(percentage)s %% färdigt" msgid "Gujarati" msgstr "Gujarati" +#~ msgid "Backports activated." +#~ msgstr "Backports aktiverade." + +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot är en \"ett-klick\" -fildelning webbapplikation med fokus på " +#~ "att skydda användarnas integritet. Det är bäst används för att snabbt " +#~ "dela en enda fil. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Denna Coquelicot-instans exponeras för allmänheten men kräver ett " +#~ "uppladdningslösenord för att förhindra obehörig åtkomst. Du kan ställa in " +#~ "ett nytt överföringslösenord i det formulär som kommer att visas nedan " +#~ "efter installationen. Standardöverföringslösenordet är \"test\"." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "Ladda upp Lösenord" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Ställ in ett nytt överföringslösenord för Coquelicot. Lämna det här " +#~ "fältet tomt för att behålla det aktuella lösenordet." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Maximal filstorlek (i MiB)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Ställ in maximal storlek på filerna som kan laddas upp till Coquelicot." + +#~ msgid "coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Ladda upp lösenordet uppdaterat" + +#~ msgid "Failed to update upload password" +#~ msgstr "Det gick inte att uppdatera uppladdningslösenordet" + +#~ msgid "Maximum file size updated" +#~ msgstr "Maximal filstorlek uppdaterad" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "Det gick inte att uppdatera den maximala filstorleken" + +#~ msgid "Riot" +#~ msgstr "Upplopp" + +#~ msgid "Security Notice" +#~ msgstr "Säkerhetsmeddelande" + +#~ msgid "" +#~ "Backports are enabled. Please note that packages from the backports " +#~ "repository do not have security support from Debian. However, they are " +#~ "maintained on a best-effort basis by contributors in Debian and " +#~ "FreedomBox community." +#~ msgstr "" +#~ "Bakåtportar är aktiverade. Observera att paket från databasen för " +#~ "bakdörrar inte har säkerhetsstöd från Debian. De underhålls dock på bästa " +#~ "sätt av bidragsgivare i Debian och FreedomBox-communityn." + +#~ msgid "Backports" +#~ msgstr "Backports" + +#~ msgid "" +#~ "Backports can be activated. This will allow a limited set of software, " +#~ "including FreedomBox service, to be upgraded to newer versions from " +#~ "Debian %(dist)s-backports repository." +#~ msgstr "" +#~ "Backports kan aktiveras. Detta kommer att tillåta en begränsad " +#~ "uppsättning av programvara, inklusive FreedomBox service, för att " +#~ "uppgraderas till nyare versioner av Debian %(dist)s-backports-arkiv." + +#~ msgid "" +#~ "Please note that backports packages do not have security support from " +#~ "Debian. However, they are maintained on a best-effort basis by " +#~ "contributors in Debian and FreedomBox community." +#~ msgstr "" +#~ "Observera att backportspaket inte har säkerhetsstöd från Debian. De " +#~ "underhålls dock på bästa sätt av bidragsgivare i Debian och FreedomBox-" +#~ "communityn." + +#~ msgid "Activate backports" +#~ msgstr "Aktivera backportar" + #~ msgid "Restoring" #~ msgstr "Återställa" @@ -7689,9 +8061,6 @@ msgstr "Gujarati" #~ msgid "Manage" #~ msgstr "Hantera" -#~ msgid "Create" -#~ msgstr "Skapa" - #, fuzzy #~| msgid "Last update" #~ msgid "Auto-update" @@ -7813,11 +8182,6 @@ msgstr "Gujarati" #~ msgid "Delete Snapshot" #~ msgstr "Ta bort %(name)s" -#, fuzzy -#~| msgid "Create" -#~ msgid "Backup archives" -#~ msgstr "Skapa" - #, fuzzy #~| msgid "Create" #~ msgid "Create archive" diff --git a/plinth/locale/ta/LC_MESSAGES/django.po b/plinth/locale/ta/LC_MESSAGES/django.po index 974545504..d6880dbc3 100644 --- a/plinth/locale/ta/LC_MESSAGES/django.po +++ b/plinth/locale/ta/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -22,7 +22,7 @@ msgstr "" msgid "Page source" msgstr "" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "" @@ -127,11 +127,11 @@ msgstr "" msgid "Local Network Domain" msgstr "" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "" -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "" @@ -140,6 +140,10 @@ msgstr "" msgid "{app} (No data to backup)" msgstr "" +#: plinth/modules/backups/forms.py:50 +msgid "Repository" +msgstr "" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -205,7 +209,15 @@ msgid "" "backup." msgstr "" -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +msgid "Key in Repository" +msgstr "" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "" @@ -368,6 +380,7 @@ msgid "Delete Archive %(name)s" msgstr "" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -570,6 +583,164 @@ msgstr "" msgid "Mounting failed" msgstr "" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +msgid "Create or upload files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +msgid "Delete files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +msgid "File & Snippet Sharing" +msgstr "" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +msgid "Manage Passwords" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +msgid "Add password" +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "" + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "" + +#: plinth/modules/bepasty/views.py:97 +msgid "Password added." +msgstr "" + +#: plinth/modules/bepasty/views.py:102 +msgid "Add Password" +msgstr "" + +#: plinth/modules/bepasty/views.py:119 +msgid "Password deleted." +msgstr "" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -584,11 +755,11 @@ msgid "" "connection from {box_name}." msgstr "" -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "" @@ -615,6 +786,7 @@ msgstr "" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -637,9 +809,9 @@ msgstr "" msgid "Refresh IP address and domains" msgstr "" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -711,12 +883,13 @@ msgid "Configure" msgstr "" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "" @@ -774,7 +947,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "" @@ -818,67 +991,6 @@ msgstr "" msgid "Hiding advanced apps and features" msgstr "" -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -893,11 +1005,11 @@ msgid "" "need to be configured with the details provided here." msgstr "" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "" @@ -929,7 +1041,7 @@ msgstr "" msgid "Date & Time" msgstr "" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "" @@ -988,16 +1100,28 @@ msgstr "" msgid "Bittorrent client written in Python/PyGTK" msgstr "" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." msgstr "" -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "" +#: plinth/modules/diagnostics/__init__.py:102 +msgid "passed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:103 +msgid "failed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1122,46 +1246,46 @@ msgstr "" msgid "Dynamic Domain Name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1170,68 +1294,72 @@ msgid "" "(example: http://myip.datasystems24.de)." msgstr "" -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "" +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +msgid "other update URL" +msgstr "" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "" @@ -1285,7 +1413,7 @@ msgstr "" msgid "Last update" msgstr "" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "" @@ -1327,12 +1455,12 @@ msgid "" "any user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1379,11 +1507,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1395,11 +1523,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1449,12 +1577,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1562,50 +1692,58 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." msgstr "" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." msgstr "" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 msgid "Private repository" msgstr "" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1668,11 +1806,6 @@ msgstr "" msgid "Edit repository" msgstr "" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1683,33 +1816,33 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1770,18 +1903,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -1926,16 +2047,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -1960,19 +2081,19 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" msgstr "" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2122,11 +2243,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2238,16 +2359,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2297,7 +2408,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2307,14 +2418,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2330,7 +2441,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2383,11 +2494,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "" @@ -2496,12 +2607,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2542,7 +2653,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2551,19 +2662,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2830,11 +2941,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -2860,7 +2971,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -2885,6 +2996,10 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +msgid "Services" +msgstr "" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -2897,56 +3012,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -2954,185 +3069,190 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3140,7 +3260,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3149,7 +3269,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3157,11 +3277,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3172,7 +3292,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3196,17 +3316,17 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" msgstr "" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3414,7 +3534,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3459,7 +3579,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3469,13 +3589,13 @@ msgstr "" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3516,6 +3636,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3652,71 +3773,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3731,16 +3852,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3796,11 +3917,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -3995,6 +4116,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 msgid "System Monitoring" msgstr "" @@ -4080,7 +4214,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4104,11 +4238,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4116,7 +4250,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4126,19 +4260,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4160,6 +4294,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4360,32 +4498,32 @@ msgstr "" msgid "Action" msgstr "" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, python-brace-format msgid "Error enabling share: {error_message}" msgstr "" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, python-brace-format msgid "Error disabling share: {error_message}" msgstr "" @@ -4422,10 +4560,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4442,11 +4576,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4474,8 +4603,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4542,12 +4696,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -4816,8 +4970,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -4932,7 +5086,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -4973,7 +5127,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -4989,103 +5143,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5244,11 +5398,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5287,7 +5441,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5296,40 +5450,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5455,7 +5609,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5506,11 +5660,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5518,11 +5672,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" msgstr "" @@ -5534,6 +5688,23 @@ msgstr "" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5551,50 +5722,73 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5618,7 +5812,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5631,16 +5825,12 @@ msgstr "" msgid "Enter a valid username." msgstr "" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5649,63 +5839,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -5832,7 +6022,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -5952,7 +6142,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -5979,7 +6169,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" msgstr "" @@ -6067,59 +6257,59 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." msgstr "" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 msgid "Client deleted." msgstr "" -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." msgstr "" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." msgstr "" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" msgstr "" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." msgstr "" @@ -6131,23 +6321,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6389,12 +6579,40 @@ msgstr "" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 diff --git a/plinth/locale/te/LC_MESSAGES/django.po b/plinth/locale/te/LC_MESSAGES/django.po index e13bb612a..94ccec4cb 100644 --- a/plinth/locale/te/LC_MESSAGES/django.po +++ b/plinth/locale/te/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: FreedomBox UI\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2020-06-24 11:41+0000\n" "Last-Translator: Sunil Mohan Adapa \n" "Language-Team: Telugu XMPP క్లయింట్ ఉపయోగించవచ్చు." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ఈజాబ్బర్డి" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "కబుర్ల సేవిక" @@ -1557,11 +1704,11 @@ msgstr "" "ఉంది. మీరు ఇప్పటికే ఉన్న గూగుల్ ఖాతాకు కనెక్ట్ చేయవచ్చు, పబ్లిక్ XMPP సర్వర్లలో (టోర్ ద్వారా సహా) కొత్త " "ఖాతాలను సృష్టించవచ్చు లేదా అదనపు భద్రత కోసం మీ స్వంత సర్వర్కు కనెక్ట్ చేయవచ్చు." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "డినో" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "గజీం" @@ -1577,11 +1724,11 @@ msgstr "" "కనిపిస్తాయి \n" "మీరు మీ డొమైన్ను kaanfigar పేజీలో సెటప్ చేయవచ్చు." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "ప్రాచీన సందేశ నిర్వహణ ప్రారంభించబడింది" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "ప్రాచీన సందేశ నిర్వహణ నిలిపివేయబడింది" @@ -1639,12 +1786,14 @@ msgstr "సేవ/పోర్ట్" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "క్రియాశీలం" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "నిలిపివేయబడింది" @@ -1758,56 +1907,56 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository URL." msgstr "ఆతిథ్యనామం చెల్లనిది" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "ఆతిథ్యనామం చెల్లనిది" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "ఐచ్ఛికం, గిట్‌వెబ్‌లో ప్రదర్శించడానికి." -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 msgid "Repository's owner name" msgstr "రిపోజిటరీ యొక్క యజమాని పేరు" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 #, fuzzy #| msgid "Create User" msgid "Private repository" msgstr "వినియోగదారుని సృష్టించు" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "ఈ రిపోజిటరీని యాక్సెస్ చేయడానికి అధికారం ఉన్న వినియోగదారులను మాత్రమే అనుమతించండి." -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 #, fuzzy msgid "A repository with this name already exists." msgstr "ఈ సేవ ఇప్పటికే ఉంది" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 #, fuzzy #| msgid "Name of the share" msgid "Name of the repository" msgstr "షేర్ యొక్క పేరు" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 #, fuzzy #| msgid "" #| "A lowercase alpha-numeric string that uniquely identifies a share. " @@ -1815,6 +1964,16 @@ msgstr "షేర్ యొక్క పేరు" msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "ప్రత్యేకంగా ఒక వాటాను గుర్తించే చిన్న అక్షర సంఖ్యా స్ట్రింగ్. ఉదాహరణ: media." +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default Skin" +msgid "Default branch" +msgstr "డిఫాల్ట్ చర్మం" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "గిట్" @@ -1892,11 +2051,6 @@ msgstr "రిపోజిటరీ సవరించబడింది." msgid "Edit repository" msgstr "వినియోగదారుని సృష్టించు" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "అక్రుతీకరణలో ఒక పొరపాటు జరిగింది." - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1907,33 +2061,35 @@ msgstr "{name} తొలగించబడింది." msgid "Could not delete {name}: {error}" msgstr "{name} ను తొలగించలేము: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "పత్రావళి" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "కరదీపిక" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "సహాయం పొందు" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "అభిప్రాయాన్ని సమర్పించండి" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "సహకరించండి" @@ -2007,21 +2163,6 @@ msgstr "%(box_name)s యొక్క కొత్త వెర్షన్ అ msgid "%(box_name)s is up to date." msgstr "%(box_name)s తాజాగా ఉంది." -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "భద్రతా నోటీసు" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" -"మీరు డెబియన్ బ్యాక్‌పోర్ట్‌ల నుండి ప్యాకేజీలను ఉపయోగిస్తున్నారు. ఈ ప్యాకేజీలకు డెబియన్ నుండి భద్రతా మద్దతు " -"లేదని దయచేసి గమనించండి. ఏదేమైనా, డెబియన్ మరియు ఫ్రీడమ్‌బాక్స్ కమ్యూనిటీలోని సహాయకులు ఉత్తమ ప్రయత్న " -"ప్రాతిపదికన వాటిని నిర్వహిస్తారు." - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2196,16 +2337,16 @@ msgstr "" "బగ్ (తప్పుల) నివేదిక సమర్పించే ముందు దయచేసి లాగ్ నుండి ఏవైనా రహస్యపదాలను లేదా ఇతర వ్యక్తిగత సమాచారాన్ని " "తొలగించగలరు." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "పత్రావళి మరియు తరచూ అడిగే ప్రశ్నలు" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "{box_name} గురించి" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} కరదీపిక" @@ -2236,21 +2377,21 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "అనువర్తనాన్ని చేతనించు" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "అజ్ఞాత జాలిక" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 #, fuzzy msgid "I2P Proxy" msgstr "వెబ్ ప్రాక్సీ (Privoxy)" @@ -2426,11 +2567,11 @@ msgstr "" "మరియు నిక్షిప్తం చెయుము. మొడటిగ గాబ్బి మరియు సెలెక్ట్ \"సర్వర్కు కనెక్ట్ చేయండి\" మరియు మీ ఎంటర్ చెయ్యండి " "{box_name}'s డొమైన్ పేరు." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "ఇన్ఫినోటెడ్" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "గాబ్బీ సేవకం" @@ -2554,16 +2695,6 @@ msgstr "ధృవీకరణ పత్రం లేదు" msgid "Re-obtain" msgstr "తిరిగి-పొందు" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "తొలగించు" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "ఉపసంహరించుకొను" @@ -2614,7 +2745,7 @@ msgstr "{domain} డోమైన్ కొరకు సర్టిఫికే msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "{domain} డోమైన్ కొరకు ధృవీకరణపత్రం నిర్మూలించడంలో విఫలం: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2624,17 +2755,22 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 +#, fuzzy +#| msgid "" +#| "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" "కమ్యూనికేట్ చేయడానికి, మీరు మొబైల్, డెస్క్టాప్ మరియు వెబ్ కోసం అందుబాటులో ఉన్న ఖాతాదారులను ఉపయోగించవచ్చు. ఇచట రయట్ క్లయింట్ సిఫార్సు చేయబడింది." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "మ్యాట్రిక్స్ సినాప్స్" @@ -2652,8 +2788,8 @@ msgstr "" "సృష్టించుకోగలరు. ప్రస్తుతం ఉండే వినియోగదారులు మాత్రమే వినియోగించాలి అనుకుంటే దీనిని నిర్వీర్యం చేయగలరు." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "రయట్" +msgid "Element" +msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2717,11 +2853,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "పబ్లిక్ రిజిస్ట్రేషన్ ప్రారంభించబడింది" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "పబ్లిక్ రిజిస్ట్రేషన్ నిలిపివేయబడింది" @@ -2847,12 +2983,12 @@ msgstr "" "Minetest సర్వర్ ఈ {box_name} 1 అమలు సహకరిస్తుంది. సర్వర్కు కనెక్ట్ చెయ్యడానికి ఒక 2Minetest క్లైంట్ 3 అవసరమవుతుంది." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "మైన్ టెస్ట్" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "బ్లాక్ శాండ్‌బాక్స్‌" @@ -2905,7 +3041,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "డిసేబుల్ లో ఉన్నప్పుడు, క్రీడాకారులు చనిపోయే లేదా ఏ రకమైన నష్టం అందుకోలేరు" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "చిరునామా" @@ -2914,25 +3050,25 @@ msgstr "చిరునామా" msgid "Port" msgstr "పోర్టు" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 #, fuzzy #| msgid "Configuration updated" msgid "Maximum players configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 #, fuzzy #| msgid "Configuration updated" msgid "Creative mode configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 #, fuzzy #| msgid "Configuration updated" msgid "PVP configuration updated" msgstr "ఆకృతీకరణ నవీకరించబడింది" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 #, fuzzy #| msgid "Configuration updated" msgid "Damage configuration updated" @@ -3227,11 +3363,11 @@ msgstr "" "mumble.info\"> 1Clients 2 మీ నమలు సర్వర్ కనెక్ట్ చేయవచ్చు మరియు Android పరికరాలు " "అందుబాటులో ఉన్నాయి." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "మంబుల్" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "స్వర సంభాషణ" @@ -3259,7 +3395,7 @@ msgstr "ముంబుల్ ఫ్లై" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3286,6 +3422,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "సేవ" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3298,38 +3440,38 @@ msgid "" "configuration here." msgstr "ఇతర పద్ధతుల ద్వారా నిర్వహించబడే పరికరాలు ఇక్కడ ఆకృతీకరణకు అందుబాటులో ఉండకపోవచ్చు." -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "అల్లికలు" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "IPv{kind} పై DNSSEC ఉపయోగించు" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "అనుసంధాన రకం" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "అనుసంధానం పేరు" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 #, fuzzy #| msgid "Interface" msgid "Network Interface" msgstr "అంతర్ముఖం" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "ఈ కనెక్షన్‌కు కట్టుబడి ఉండే నెట్‌వర్క్ పరికరం." -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "కంచుకోట క్షేత్రాం" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 #, fuzzy msgid "" "The firewall zone will control which services are available over this " @@ -3338,21 +3480,21 @@ msgstr "" "ఫైర్వాల్ జోన్ ఇది సేవలు ఇంటర్ఫేస్లు అందుబాటులో ఉన్నాయి నియంత్రిస్తాయి. నమ్మదగిన నెట్వర్కులలో మాత్రమే అంతర్గత " "ఎంచుకోండి." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "బహిర్గత" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "అంతర్గత" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "IPv4 చిరునామా ఇచ్చు పద్ధతి" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, fuzzy, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3363,39 +3505,46 @@ msgstr "" "{box_name}. \"భాగస్వామ్యం\" పద్దతి ఈ నెట్వర్క్ ఖాతాదారులతో ఆకృతీకరించుటకు మరియు దాని ఇంటర్నెట్ " "కనెక్షన్ భాగస్వామ్యం, ఆపోర్టును చేస్తుంది {box_name} 2 చట్టం" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "స్వయం చాలకం (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "పంచుకోబడ్డ" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "కరదీపిక" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "నెట్ మాస్క్" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "ఐచ్ఛిక విలువ. ఖాళీగా ఉంటే, చిరునామాపై ఆధారపడి ఒక డిఫాల్ట్ నెట్మాస్క్ ఉపయోగించబడుతుంది." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "గేట్వే" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "ఐచ్ఛిక విలువ." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS సేవకం" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 #, fuzzy msgid "" "Optional value. If this value is given and IPv4 addressing method is " @@ -3404,11 +3553,11 @@ msgstr "" "ఐచ్ఛికము విలువ. ఈ విలువ ఇచ్చిన మరియు IPv4 ప్రసంగిస్తున్న పద్ధతి \"ఆటోమేటిక్\" కాకపోతే, DHCP సర్వర్ " "అందించిన DNS సర్వర్లు విస్మరించబడుతుంది." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "ద్వితీయ DNS సేవకం" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 #, fuzzy msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " @@ -3417,11 +3566,11 @@ msgstr "" "ఐచ్ఛికము విలువ. ఈ విలువ ఇచ్చిన మరియు IPv4 ప్రసంగిస్తూ విధానం \"ఆటోమేటిక్\" కాకపోతే, DHCP సర్వర్ " "అందించిన DNS సర్వర్లు విస్మరించబడుతుంది." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "IPv6 చిరునామా ఇచ్చు పద్ధతి" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, fuzzy, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " @@ -3430,31 +3579,31 @@ msgstr "" "\"ఆటోమేటిక్\" పద్ధతులు ఒక క్లయింట్ మేకింగ్ ఈ నెట్వర్క్ నుండి {box_name} 1 ఆర్జనకు ఆకృతీకరణ " "చేస్తుంది." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 #, fuzzy msgid "Automatic" msgstr "స్వయంచాలక" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 #, fuzzy #| msgid "Automatic (DHCP)" msgid "Automatic, DHCP only" msgstr "స్వయం చాలకం (DHCP)" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "పట్టించుకోకండి" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 #, fuzzy msgid "Prefix" msgstr "ఉపసర్గ" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "1 మరియు 128 మధ్యగల విలువ." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 #, fuzzy msgid "" "Optional value. If this value is given and IPv6 addressing method is " @@ -3463,7 +3612,7 @@ msgstr "" "ఐచ్ఛికము విలువ. ఈ విలువ ఇవ్వబడుతుంది ఉంటే మరియు IPv6 ప్రసంగిస్తున్న పద్ధతి \"ఆటోమేటిక్\" ఉంది, " "DHCP సర్వర్ అందించిన DNS సర్వర్లు విస్మరించబడుతుంది" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 #, fuzzy msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " @@ -3472,55 +3621,55 @@ msgstr "" "ఐచ్ఛికము విలువ. ఈ విలువ ఇచ్చిన మరియు IPv6 ప్రసంగిస్తూ విధానం \"ఆటోమేటిక్\" కాకపోతే, DHCP సర్వర్ " "అందించిన DNS సర్వర్లు విస్మరించబడుతుంది." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "--ఎంచుకోండి--" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "నెట్వర్క్ యొక్క కనిపించే పేరు." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "విధం" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "ఇన్ఫ్రాస్ట్రక్చర్" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "ప్రాప్తి సూచి" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 #, fuzzy msgid "Ad-hoc" msgstr "తదర్థ" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "ఫ్రీక్వెన్సీ బ్యాండ్" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "ఎ (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "బి/జి(2.4GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "మార్గం" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 #, fuzzy msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " @@ -3529,11 +3678,11 @@ msgstr "" "ఐచ్ఛికము విలువ. ఎంపిక ఫ్రీక్వెన్సీ బ్యాండ్ వైర్లెస్ ఇన్ ఛానెల్కు నిరోధించండి. ఖాళీ లేదా 0 విలువ స్వయంచాలక " "ఎంపిక అర్థం." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 #, fuzzy msgid "" "Optional value. Unique identifier for the access point. When connecting to " @@ -3543,32 +3692,32 @@ msgstr "" "ఐచ్ఛికము విలువ. ప్రవేశ బిందువు కోసం ప్రత్యేక ఐడెంటిఫైయర్. ఒక యాక్సెస్ పాయింట్ కనెక్ట్ చేసినప్పుడు, యాక్సెస్ " "పాయింట్ BSSID అందించిన మ్యాచ్లు మాత్రమే ఉంటే కనెక్ట్. ఉదాహరణ: 00: 11: 22: aa: BB: సిసి." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "ప్రామాణీకరణ విధం" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 #, fuzzy msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "వైర్లెస్ నెట్వర్క్ భద్రతతో కనెక్ట్ పాస్వర్డ్ను ఖాతాదారులకు అవసరం ఉంటే WPA ఎంచుకోండి." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA (వైఫై రక్షిత యాక్సెస్)" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "తెరచిన" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, fuzzy, python-brace-format #| msgid "Choose how your {box_name} is connected to your network" msgid "Specify how your {box_name} is connected to your network" msgstr "మీ {box_name} మీ నెట్‌వర్క్‌కు ఎలా కనెక్ట్ అయిందో ఎంచుకోండి" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3576,7 +3725,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3585,7 +3734,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3593,11 +3742,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3608,7 +3757,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3632,19 +3781,19 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "Current Network Configuration" msgid "Preferred router configuration" msgstr "ప్రస్తుత అల్లిక ఆకృతీకరణ" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3858,7 +4007,7 @@ msgid "Create Connection" msgstr "అనుసంధానం సృష్టించు" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "అనుసంధానం తొలగించు" @@ -3903,7 +4052,7 @@ msgid "Computer" msgstr "కంప్యూటర్" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "అనుసంధానాన్ని సవరించండి" @@ -3915,13 +4064,13 @@ msgstr "అనుసంధానం" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "సమీప వై-ఫై నెట్వర్కులు" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "అనుసంధానాన్ని జతచేయండి" @@ -3964,6 +4113,7 @@ msgstr "ఈ దశను దాటవేయి" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "తర్వాత" @@ -4105,73 +4255,73 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "నెట్వర్క్ అనుసంధానాలు" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "అనుసంధానం చూపించలేము: అనుసంధానం దొరకలేదు." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "అనుసంధాన సమాచారం" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "దొరకలేదు అనుసంధానం: అనుసంధానని సవరించడం సాధ్యపడదు." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "ఇటువంటి అనుసంధాన రకం ఇంకా అర్థంకాలేదు." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "{name} అనుసంధానం ఉత్తేజించబడింది." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "అనుసంధానాన్ని ఉత్తేజించుటలో విఫలమైంది: అనుసంధానం దొరకలేదు." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "{name} అనుసంధానాన్ని ఉత్తేజించుటలో విఫలమైంది: సరైన పరికరం అందుబాటులో లేదు." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "{name} అనుసంధానం క్రియారహితం చేయబడింది." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "అనుసంధానం క్రియారహితం విఫలమైంది: అనుసంధానం దొరకలేదు." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 #, fuzzy #| msgid "Adding New Ethernet Connection" msgid "Adding New Generic Connection" msgstr "కొత్త ఈథర్నెట్ అనుసంధానాన్ని కలుపుతోంది" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "కొత్త ఈథర్నెట్ అనుసంధానాన్ని కలుపుతోంది" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "కొత్త PPPoE అనుసంధానాన్ని కలుపుతోంది" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "కొత్త వై-ఫై అనుసంధానాన్ని కలుపుతోంది" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "{name} అనుసంధానం తొలగించబడింది." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "అనుసంధానం తొలగించడం విఫలమైంది: అనుసంధానం దొరకలేదు." @@ -4191,18 +4341,18 @@ msgstr "" "మిగిలిన ఇంటర్నెట్ను యాక్సెస్ చేయవచ్చు మీ {box_name} 1 అనుసంధానించవచ్చు అదనపు భద్రత మరియు " "అనామకత్వం కోసం." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 #, fuzzy #| msgid "Open" msgid "OpenVPN" msgstr "తెరచిన" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "వర్చువల్ ప్రైవేట్ నెట్వర్క్" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4269,11 +4419,11 @@ msgstr "ప్రొఫైల్ ప్రతి %(box_name)s వాడుకర msgid "Download my profile" msgstr "నా స్థూలవివరంల దిగుమతి" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "అమరక పూర్తయ్యింది." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "అమరక విఫలమైంది." @@ -4508,6 +4658,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 #, fuzzy #| msgid "System Configuration" @@ -4611,7 +4774,7 @@ msgstr "ప్రివొక్సి" msgid "Web Proxy" msgstr "వెబ్ ప్రాక్సీ" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "టీసీపీ{kind} పై{proxy} తో యాక్సిస్ {url} చేయండి" @@ -4635,11 +4798,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "క్వాసెల్" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "IRC క్లయింట్" @@ -4647,7 +4810,7 @@ msgstr "IRC క్లయింట్" msgid "Quasseldroid" msgstr "క్వాసెల్ డ్రొఇడ్" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4661,19 +4824,19 @@ msgstr "" "\"> supported client application అవసరం.\n" "రాడికల్ ఏ యూజర్ అయినా {box_name}లాగిన్ తో యాక్సెస్ చేయవచ్చు" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "రాడికేల్" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "క్యాలెండర్ మరియు అడ్రస్సు పుస్తకము" @@ -4700,6 +4863,12 @@ msgid "" "addressbook." msgstr "ఏ వినియోగదారుడు అయినా క్యాలెండరు /ఆడ్రస్ బుక్ ని చూడగలరు లేదా మార్పులు చేయగలరు." +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "ప్రాప్తి సూచి" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "DAVx5" @@ -4934,43 +5103,43 @@ msgstr "పంచుకోబడ్డ" msgid "Action" msgstr "చర్యలు" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "సేవ జోడించండి" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 #, fuzzy #| msgid "Add Service" msgid "Group Share" msgstr "సేవ జోడించండి" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Homepage" msgid "Home Share" msgstr "హోంపేజ్" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} తొలగించబడింది." -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "అనువర్తనం స్థాపించుటలో దోషం: {error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "పంచుకోబడ్డ" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -5012,10 +5181,6 @@ msgstr "సురక్షితశోధన" msgid "Select the default family filter to apply to your search results." msgstr "మీ శోధన ఫలితాలపైన అమలు చేయబడే కుటుంబ వడపోత విధానమును ఎంచుకొనండి." -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "ఏమీ లేదు" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "మితమైన" @@ -5032,11 +5197,6 @@ msgstr "ప్రజా ప్రాప్తి అనుమతించు" msgid "Allow this application to be used by anyone who can reach it." msgstr "ఈ అనువర్తనాన్ని చేరుకోగల ఎవరైనా ఉపయోగించడానికి అనుమతించండి." -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "ఆకృతీకరణ నవీకరించబడింది." - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "కన్సోల్ లాగిన్ ని పరిమితించండి (సిఫార్సు)" @@ -5071,8 +5231,33 @@ msgstr "" msgid "Show security report" msgstr "భద్రత" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -5153,13 +5338,13 @@ msgstr "ఏమీ లేదు" msgid "Not running" msgstr "డెల్యూజ్ నడవడంలేదు" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, fuzzy, python-brace-format #| msgid "Error setting time zone: {exception}" msgid "Error setting restricted access: {exception}" msgstr "సమయమండలం అమర్పులోపం: {exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 #, fuzzy #| msgid "General Configuration" msgid "Updated security configuration" @@ -5479,8 +5664,8 @@ msgstr "స్నాప్షాట్‌లను తొలగించు" #| msgid "" #| "Keep a maximum of this many yearly snapshots. The default is 0 (disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "ఒక సవంత్సరంలో స్నాప్షాట్స్ ని ఇంతకు నియంత్రించుము. ప్రస్తుత సంఖ్యా 0 (సశక్తపరచబడలేదు)." #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5604,7 +5789,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "సెక్యూర్ షెల్ (SSH) సర్వర్" @@ -5651,7 +5836,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "సింగిల్ సైన్ ఆన్" @@ -5667,110 +5852,110 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 #, fuzzy msgid "Storage" msgstr "అన్హొస్టెడ్ స్టోరేజ్ ని (పునరుద్ధరించండి)" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} బైట్లు" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} కిలోబైట్లు" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} మెగాబైట్లు" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} గిగాబైట్లు" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} టెరాబైట్లు" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 #, fuzzy #| msgid "Mumble server is running" msgid "The device is already unmounting." msgstr "మంబ్లు సేవిక నడుస్తుంది" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "ఆపరేషన్ టైమవుట్ అయింది." -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "ఈ ఆపరేషన్ గాఢ నిద్రలో ఉన్న ఒక డిస్క్ ను మేల్కొలుపుతుంది." -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 #, fuzzy msgid "Attempting to unmount a device that is busy." msgstr "బిజీగా ఉన్న పరికరాన్ని అన్ మౌంట్ చేయడానికి ప్రయత్నిస్తోంది." -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "ఆపరేషన్ ఇప్పటికే రద్దు చేయబడింది." -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "అభ్యర్థించిన ఆపరేషన్ చేయడానికి అధికారం లేదు." -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 #, fuzzy msgid "The device is already mounted." msgstr "ఈ సేవ ఇప్పటికే ఉంది" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 #, fuzzy #| msgid "Mumble server is not running" msgid "The device is not mounted." msgstr "మంబ్లు సేవిక నడవంలేదు" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "అభ్యర్థించిన ఎంపికను ఉపయోగించడానికి అనుమతి లేదు." -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "పరికరం మరొక వినియోగదారుచే మౌంట్ చేయబడింది." -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5950,11 +6135,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "తాహో-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "పంపిణీ ఫైల్ నిల్వ" @@ -5998,7 +6183,7 @@ msgstr "కలిసియున్న పరిచయకర్తలు" msgid "Remove" msgstr "తొలగించు" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6011,44 +6196,44 @@ msgstr "" "టార్ ప్రాజెక్ట్ మీరు టార్ బ్రౌజర్ ను ఉపయోగించాలని సిఫార్సు చేస్తున్నారు." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "టార్" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "దాచిన టార్ సర్వీస్" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 #, fuzzy #| msgid "Socks5 Proxy" msgid "Tor Socks Proxy" msgstr "సాక్స్5 ప్రాక్సీ" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "టార్ బ్రిడ్జ్ రిలే" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "టార్ రిలే పోర్ట్ అందుబాటులో ఉంది" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "Obfs3 రవాణా నమోదు చేయబడింది" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "Obfs4 రవాణా నమోదు చేయబడింది" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "టార్ ద్వారా {kind} లో {url} ను ఆక్సెస్ చెయ్యండి" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "టోర్ వాడుకను నిర్ధారించండి{url} టీ సి పి పై{kind}" @@ -6198,7 +6383,7 @@ msgstr "సాక్స్‌లు" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "టిసిపి పోర్ట్ 9050 పై ఒక టార్ సొక్స్ పోర్ట్ మీ %(box_name)sలో అందుబాటులో ఉంది." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "మారకుండా అమర్చుతోంది" @@ -6263,11 +6448,11 @@ msgstr "న్యూస్ ఫీడ్ రీడర్" msgid "Tiny Tiny RSS (Fork)" msgstr "టైనీ టైనీ RSS" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6275,11 +6460,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "నవీకరణ యూ.ఆర్.ఎల్" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox Manual" msgid "FreedomBox Updated" @@ -6295,6 +6480,23 @@ msgstr "స్వయంచాలక నవీకరణలు ప్రారం msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s is up to date." @@ -6313,54 +6515,77 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 #, fuzzy #| msgid "Last update" -msgid "Manual update" +msgid "Manual Update" msgstr "చివరి నవీకరణ" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 #, fuzzy #| msgid "Update" msgid "Update now" msgstr "నవీకరణ యూ.ఆర్.ఎల్" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "గమనింపబడని-నవీకరణలు ఆకృతీకరించునప్పుడు దోషం: {error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "స్వయంచాలక నవీకరణలు ప్రారంభించబడ్డాయి" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "స్వయంచాలక నవీకరణలు నిలిపివేయబడ్డాయి" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "అప్గ్రేడ్ ప్రక్రియ ప్రారంభించబడింది." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "నవీకరణ ప్రారంభం విఫలమైంది." +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6384,7 +6609,7 @@ msgstr "వినియోగదారులు మరియు సమూహా msgid "Access to all services and system settings" msgstr "అన్ని సేవలకు మరియు వ్యవస్థ అమరికలకు అనుమతించు" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "LDAP నమోదు \"{search_item}\" తనిఖీ" @@ -6399,16 +6624,12 @@ msgstr "యూజర్ పేరు తీసుకోబడింది లే msgid "Enter a valid username." msgstr "సేవిక పేరు చెలదు" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "అనుమతులు" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6417,65 +6638,65 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి సృష్టించడంలో విఫలమైంది." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "వినియోగదారుని {group} సముహానికి జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "అధీకృత SSH కీలు" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి పేరుమార్పులో విఫలం." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "సమూహంలోంచి వినియోగదారుని తొలగించడంలో విఫలం." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "సమూహంలోకి వినియోగదారుని జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "SSH కీలను సెట్ చేయడం సాధ్యం కాలేదు." -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "సమూహంలోకి వినియోగదారుని జోడించడంలో విఫలం." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "సిస్టమ్‌లోని ఏకైక నిర్వాహకుడిని తొలగించలేరు." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "ఎల్.డి.ఏ.పి వాడుకరి పాస్‌వర్డ్ మార్పిడి విఫలం." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "కొత్త వాడుకరి ను అడ్మిన్ సమూహంలో జోడించడం విఫలమైనది." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "console ప్రవేశమును పరిమితి చెయడంలొ విఫలమైంది." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "వాడుకరి ఖాతా సృస్టించబడింది, మీరు లాగిన్ చేయబడ్డారు" @@ -6607,7 +6828,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "వైర్గార్డ్" @@ -6744,7 +6965,7 @@ msgid "Add a new peer" msgstr "కొత్త పరిచయకర్తని జోడించండి" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "అనుమతించబడిన క్లయింట్‌ను జోడించండి" @@ -6775,7 +6996,7 @@ msgid "Add a new server" msgstr "కొత్త పరిచయకర్తని జోడించండి" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" msgid "Add Connection to Server" @@ -6873,79 +7094,79 @@ msgstr "ఈ యంత్రం యొక్క పబ్లిక్ కీ:" msgid "IP address of this machine:" msgstr "ఈ యంత్రం యొక్క IP చిరునామా:" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 #, fuzzy #| msgid "Add new introducer" msgid "Added new client." msgstr "కొత్త పరిచయకర్తని జోడించండి" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy msgid "Client with public key already exists" msgstr "ఈ సేవ ఇప్పటికే ఉంది" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 #, fuzzy msgid "Allowed Client" msgstr "తపాల బంట్రౌతు(Roundcube)" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "అమరికను నవీకరించు" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy msgid "Modify Client" msgstr "తపాల బంట్రౌతు(Roundcube)" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 #, fuzzy #| msgid "Delete All" msgid "Delete Allowed Client" msgstr "అన్నింటిని తొలగించు" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "{name} deleted." msgid "Client deleted." msgstr "{name} తొలగించబడింది." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 msgid "Client not found" msgstr "క్లయింట్ దొరకలేదు" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy msgid "Added new server." msgstr "కస్టమ్ సేవ చేర్చబడింది" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "అనుసంధాన రకం" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "అమరికను నవీకరించు" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Edit Connection" msgid "Modify Connection to Server" msgstr "అనుసంధానాన్ని సవరించండి" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "అనుసంధానం తొలగించు" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "{name} deleted." msgid "Server deleted." @@ -6959,23 +7180,23 @@ msgstr "పిపిపిఒఇ" msgid "Generic" msgstr "సాధారణమైన" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "సంస్థాపన ఒక పొరపాటు జరిగింది" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "వ్యవస్థాపిస్తోంది" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "దిగుమతి అవుతోంది" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "ప్రసార మాధ్యమం మార్పు" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "ఆకృతీకరణ ఫైలు: {file}" @@ -7242,16 +7463,55 @@ msgstr "ధృవీకరణ పత్రం లేదు" msgid "Port Forwarding" msgstr "సబ్డొమైన్లు ప్రారంభించు" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"మీరు నెట్వర్క్ సెటప్ తనిఖీ చేసి, అవసరమైతే దాన్ని సవరించవచ్చు." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, fuzzy, python-format +#| msgid "" +#| "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 " +#| "%(service_name)s:" +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" msgstr "" "మీ ఫ్రీడమ్‌బాక్స్ ఒక రౌటర్ వెనుక ఉంటే, మీరు మీ రౌటర్లో పోర్ట్ ఫార్వడింగ్ ను ఏర్పాటు చేయాల్సి ఉంటుంది. " "%(service_name)s కొరకు దిగువ పోర్టులను మీరు ఫార్వర్డ్ చేయాలి:" +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "ప్రోటోకాల్" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "%(box_name)s అమరిక" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "ఈ అనువర్తనాన్ని నిక్షిప్తం చేయాలా?" @@ -7297,6 +7557,106 @@ msgstr "%(percentage)s %% పూర్తి" msgid "Gujarati" msgstr "గుజరాతీ" +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports activated." +#~ msgstr "బ్యాకప్స్" + +#, fuzzy +#~| msgid "" +#~| "Coquelicot is a “one-click” file sharing web application with a focus on " +#~| "protecting users’ privacy. It is best used for quickly sharing a single " +#~| "file. " +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "కోక్యూలికట్ అనేది వినియోగదారుని గోప్యతా కేంద్రీకృతమై \"ఒకే క్లిక్ విధానం\" తో నిర్మించబడిన ఫైల్స్ పంచుకునే " +#~ "వెబ్ అప్లికేషన్. త్వరిత గతిన ఫైలు పంచుకోడానికి ఇది బాగా ఉపయోగపడుతుంది " + +#~ msgid "Coquelicot" +#~ msgstr "కోక్లికో" + +#~ msgid "Upload Password" +#~ msgstr "అప్లోడ్ పాస్‌వర్డ్‌" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "కోక్లికోకు ఒక కొత్త అప్లోడ్ పాస్వర్డ్ ను సెట్ చెయ్యండి (అడ్మిన్). ప్రస్తుత అప్లోడ్ పాస్వర్డ్ ను ఉంచడానికి " +#~ "ఈ ఫీల్డ్ను ఖాళీగా వదిలేయండి." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "గరిష్ట ఫైలు పరిమాణము (MiBలో)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "కోక్యూలికట్ లోకి అప్లోడ్ చేయగలిగిన గరిష్ట ఫైలు పరిమాణమును కేటాయించండి." + +#~ msgid "coquelicot" +#~ msgstr "కోక్లికో" + +#~ msgid "Upload password updated" +#~ msgstr "అప్లోడ్ చేయడం కోసమై కేటాయించిన రహస్యపదం నవీకరించబడింది" + +#~ msgid "Failed to update upload password" +#~ msgstr "అప్లోడ్ చేయడం కోసమై కేటాయించిన రహస్యపదం నవీకరించడంలో వైఫల్యం" + +#~ msgid "Maximum file size updated" +#~ msgstr "గరిష్ట ఫైలు పరిమాణం నవీకరించబడింది" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "గరిష్ట ఫైలు పరిమాణము మార్చుట విఫలమయ్యెను" + +#~ msgid "Riot" +#~ msgstr "రయట్" + +#~ msgid "Security Notice" +#~ msgstr "భద్రతా నోటీసు" + +#, fuzzy +#~| msgid "" +#~| "You are using packages from Debian backports. Please note that these " +#~| "packages do not have security support from Debian. However, they are " +#~| "maintained on a best-effort basis by contributors in Debian and " +#~| "FreedomBox community." +#~ msgid "" +#~ "Backports are enabled. Please note that packages from the backports " +#~ "repository do not have security support from Debian. However, they are " +#~ "maintained on a best-effort basis by contributors in Debian and " +#~ "FreedomBox community." +#~ msgstr "" +#~ "మీరు డెబియన్ బ్యాక్‌పోర్ట్‌ల నుండి ప్యాకేజీలను ఉపయోగిస్తున్నారు. ఈ ప్యాకేజీలకు డెబియన్ నుండి భద్రతా మద్దతు " +#~ "లేదని దయచేసి గమనించండి. ఏదేమైనా, డెబియన్ మరియు ఫ్రీడమ్‌బాక్స్ కమ్యూనిటీలోని సహాయకులు ఉత్తమ ప్రయత్న " +#~ "ప్రాతిపదికన వాటిని నిర్వహిస్తారు." + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "బ్యాకప్స్" + +#, fuzzy +#~| msgid "" +#~| "You are using packages from Debian backports. Please note that these " +#~| "packages do not have security support from Debian. However, they are " +#~| "maintained on a best-effort basis by contributors in Debian and " +#~| "FreedomBox community." +#~ msgid "" +#~ "Please note that backports packages do not have security support from " +#~ "Debian. However, they are maintained on a best-effort basis by " +#~ "contributors in Debian and FreedomBox community." +#~ msgstr "" +#~ "మీరు డెబియన్ బ్యాక్‌పోర్ట్‌ల నుండి ప్యాకేజీలను ఉపయోగిస్తున్నారు. ఈ ప్యాకేజీలకు డెబియన్ నుండి భద్రతా మద్దతు " +#~ "లేదని దయచేసి గమనించండి. ఏదేమైనా, డెబియన్ మరియు ఫ్రీడమ్‌బాక్స్ కమ్యూనిటీలోని సహాయకులు ఉత్తమ ప్రయత్న " +#~ "ప్రాతిపదికన వాటిని నిర్వహిస్తారు." + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "క్రియాశీలించు" + #~ msgid "Restoring" #~ msgstr "పునరుద్ధరించబడుతోంది" @@ -7557,9 +7917,6 @@ msgstr "గుజరాతీ" #~ msgid "Manage" #~ msgstr "నిర్వహించండి" -#~ msgid "Create" -#~ msgstr "సృష్టించు" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "మీ {box_name} దానుబే ప్రతి తో మీరు అందుకున్న రశీదు" @@ -7956,11 +8313,6 @@ msgstr "గుజరాతీ" #~ msgid "Restore apps" #~ msgstr "అనువర్తనాలను పునరుద్ధరించు" -#, fuzzy -#~| msgid "Backups" -#~ msgid "Backup archives" -#~ msgstr "బ్యాకప్స్" - #~ msgid "Export" #~ msgstr "ఎగుమతించు" diff --git a/plinth/locale/tr/LC_MESSAGES/django.po b/plinth/locale/tr/LC_MESSAGES/django.po index 8cdfcce7a..6d3f2d808 100644 --- a/plinth/locale/tr/LC_MESSAGES/django.po +++ b/plinth/locale/tr/LC_MESSAGES/django.po @@ -6,89 +6,89 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: 2020-06-17 02:41+0000\n" -"Last-Translator: Oğuz Ersen \n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-09-01 18:41+0000\n" +"Last-Translator: Burak Yavuz \n" "Language-Team: Turkish \n" +"freedombox/tr/>\n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" -"X-Generator: Weblate 4.1.1-dev\n" +"X-Generator: Weblate 4.2.1-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" -msgstr "" +msgstr "Sayfa kaynağı" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "FreedomBox" #: plinth/daemon.py:85 -#, fuzzy, python-brace-format -#| msgid "Service %(service_name)s is running." +#, python-brace-format msgid "Service {service_name} is running" -msgstr "%(service_name)s servisi çalışmaktadır." +msgstr "{service_name} hizmeti çalışıyor" #: plinth/daemon.py:111 #, python-brace-format msgid "Listening on {kind} port {listen_address}:{port}" -msgstr "{kind} port {listen_address}:{port} dinleniyor" +msgstr "" +"{kind} üzerinde {listen_address}:{port} nolu bağlantı noktasını dinleme" #: plinth/daemon.py:114 #, python-brace-format msgid "Listening on {kind} port {port}" -msgstr "{kind} port {port} dinleniyor" +msgstr "{kind} üzerinde {port} nolu bağlantı noktasını dinleme" #: plinth/daemon.py:182 #, python-brace-format msgid "Connect to {host}:{port}" -msgstr "{host}:{port} konumuna bağlan" +msgstr "{host}:{port} adresine bağlı" #: plinth/daemon.py:184 #, python-brace-format msgid "Cannot connect to {host}:{port}" -msgstr "{host}:{port} konumuna bağlanılamadı" +msgstr "{host}:{port} adresine bağlanamıyor" #: plinth/forms.py:38 msgid "Select a domain name to be used with this application" -msgstr "Bu uygulamayla kullanılacak bir alan ismi seç" +msgstr "Bu uygulama ile kullanılacak bir etki alanı adı seçin" #: plinth/forms.py:40 msgid "" "Warning! The application may not work properly if domain name is changed " "later." msgstr "" -"İkaz! Alan adı daha sonra değiştirilirse uygulama beklendiği gibi " +"Uyarı! Etki alan adı daha sonra değiştirilirse uygulama düzgün olarak " "çalışmayabilir." #: plinth/forms.py:48 msgid "Language" -msgstr "Lisan" +msgstr "Dil" #: plinth/forms.py:49 msgid "Language to use for presenting this web interface" -msgstr "Bu web yönetim arayüzü için kullanılacak dil" +msgstr "Bu web arayüzünü sunmak için kullanılacak dil" #: plinth/forms.py:56 msgid "Use the language preference set in the browser" -msgstr "Tarayıcıda ayarlanan dil tercihini kullanın" +msgstr "Tarayıcıda ayarlanan dil tercihini kullan" #: plinth/middleware.py:57 plinth/templates/setup.html:18 msgid "Application installed." -msgstr "Uygulama kuruldu." +msgstr "Uygulama yüklendi." #: plinth/middleware.py:63 #, python-brace-format msgid "Error installing application: {string} {details}" -msgstr "Uygulamanın kurulmasında hata: {string} {details}" +msgstr "Uygulama yüklenirken hata oldu: {string} {details}" #: plinth/middleware.py:67 #, python-brace-format msgid "Error installing application: {error}" -msgstr "Uygulamanın kurulmasında hata: {error}" +msgstr "Uygulama yüklenirken hata oldu: {error}" #: plinth/modules/apache/__init__.py:40 #: plinth/modules/monkeysphere/templates/monkeysphere.html:67 @@ -99,17 +99,17 @@ msgstr "Web Sunucusu" #: plinth/modules/apache/__init__.py:46 #, python-brace-format msgid "{box_name} Web Interface (Plinth)" -msgstr "{box_name} Ağ Arayüzü (Plinth)" +msgstr "{box_name} Web Arayüzü (Plinth)" #: plinth/modules/apache/components.py:120 #, python-brace-format msgid "Access URL {url} on tcp{kind}" -msgstr "tcp{kind} üzerinden {url} bağlantısına eriş" +msgstr "Tcp{kind} üzerinde erişim URL'si {url}" #: plinth/modules/apache/components.py:124 #, python-brace-format msgid "Access URL {url}" -msgstr "{url} bağlantısına eriş" +msgstr "Erişim URL'si {url}" #: plinth/modules/avahi/__init__.py:34 #, python-brace-format @@ -121,26 +121,26 @@ msgid "" "disabled to improve security especially when connecting to a hostile local " "network." msgstr "" -"Servis keşfi şebekedeki diğer makinelerin sizin {box_name} kutunuzu ve onun " -"üzerinde çalışan servisleri keşfetmelerine yarar. Buna ek olarak {box_name} " -"kutusunun yerel ağınızdaki diğer makineleri ve etkin servisleri keşfetmesine " -"de yarar. Servis keşfi mutlaka gerekli değildir ve sadece dahili şebekelerde " -"çalışır. Özellikle düşman bir yerel ağa bağlanıldığında güvenliği arttırmak " -"için devre dışı bırakılabilir." +"Hizmet keşfi, ağdaki diğer cihazların {box_name} cihazınızı ve üzerinde " +"çalışan hizmetleri keşfetmesini sağlar. Ayrıca {box_name} cihazının yerel " +"ağınızda çalışan diğer cihazları ve hizmetleri keşfetmesini de sağlar. " +"Hizmet keşfi gerekli değildir ve sadece dahili ağlarda çalışır. Özellikle " +"saldırgan bir yerel ağa bağlanırken güvenliği artırmak için " +"etkisizleştirilebilir." #: plinth/modules/avahi/__init__.py:58 msgid "Service Discovery" -msgstr "Servis Keşfi" +msgstr "Hizmet Keşfi" #: plinth/modules/avahi/__init__.py:68 msgid "Local Network Domain" -msgstr "" +msgstr "Yerel Ağ Etki Alanı" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "Yedeklemeler, yedekleme arşivleri oluşturmayı ve yönetmeyi sağlar." -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "Yedeklemeler" @@ -149,17 +149,23 @@ msgstr "Yedeklemeler" msgid "{app} (No data to backup)" msgstr "{app} (Yedeklenecek veri yok)" +#: plinth/modules/backups/forms.py:50 +#, fuzzy +#| msgid "Create Repository" +msgid "Repository" +msgstr "Depo Oluştur" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 #: plinth/modules/networks/templates/connection_show.html:63 #: plinth/modules/sharing/templates/sharing.html:37 msgid "Name" -msgstr "İsim" +msgstr "Ad" #: plinth/modules/backups/forms.py:53 msgid "(Optional) Set a name for this backup archive" -msgstr "" +msgstr "(İsteğe bağlı) Bu yedekleme arşivi için bir ad ayarlayın" #: plinth/modules/backups/forms.py:56 msgid "Included apps" @@ -175,19 +181,19 @@ msgstr "Geri yüklemek istediğiniz uygulamaları seçin" #: plinth/modules/backups/forms.py:83 msgid "Upload File" -msgstr "Dosya Yükle" +msgstr "Dosya Yükleyin" #: plinth/modules/backups/forms.py:85 msgid "Backup files have to be in .tar.gz format" -msgstr "Yedekleme dosyaları .tar.gz türünde olmalıdır" +msgstr "Yedekleme dosyaları .tar.gz biçiminde olmak zorundadır" #: plinth/modules/backups/forms.py:86 msgid "Select the backup file you want to upload" -msgstr "Yüklemek istediğiniz yedekleme dosyasını seçiniz" +msgstr "Yüklemek istediğiniz yedekleme dosyasını seçin" #: plinth/modules/backups/forms.py:92 msgid "Repository path format incorrect." -msgstr "Havuz yolu biçimi yanlış." +msgstr "Depo yolu biçimi yanlış." #: plinth/modules/backups/forms.py:99 #, python-brace-format @@ -197,12 +203,12 @@ msgstr "Geçersiz kullanıcı adı: {username}" #: plinth/modules/backups/forms.py:109 #, python-brace-format msgid "Invalid hostname: {hostname}" -msgstr "Geçersiz sunucu adı: {hostname}" +msgstr "Geçersiz anamakine adı: {hostname}" #: plinth/modules/backups/forms.py:113 #, python-brace-format msgid "Invalid directory path: {dir_path}" -msgstr "Geçersiz klasör yolu: {dir_path}" +msgstr "Geçersiz dizin yolu: {dir_path}" #: plinth/modules/backups/forms.py:119 msgid "Encryption" @@ -213,10 +219,20 @@ msgid "" "\"Key in Repository\" means that a password-protected key is stored with the " "backup." msgstr "" -"\"Havuz anahtarı\", parola korumalı bir anahtarın yedek ile depolanacağı " +"\"Key in Repository\", parola korumalı bir anahtarın yedek ile saklanacağı " "anlamına gelir." -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +#, fuzzy +#| msgid "Create Repository" +msgid "Key in Repository" +msgstr "Depo Oluştur" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "Yok" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "Parola" @@ -238,26 +254,26 @@ msgstr "Girilen şifreleme parolaları eşleşmiyor" #: plinth/modules/backups/forms.py:143 msgid "Passphrase is needed for encryption." -msgstr "Şifreleme için parola gerekli." +msgstr "Şifreleme için parola gereklidir." #: plinth/modules/backups/forms.py:178 msgid "Select Disk or Partition" -msgstr "" +msgstr "Disk veya Bölüm Seçin" #: plinth/modules/backups/forms.py:179 msgid "Backups will be stored in the directory FreedomBoxBackups" -msgstr "" +msgstr "Yedekler, FreedomBoxBackups dizininde saklanacaktır" #: plinth/modules/backups/forms.py:188 msgid "SSH Repository Path" -msgstr "SSH havuzu yolu" +msgstr "SSH Depo Yolu" #: plinth/modules/backups/forms.py:189 msgid "" "Path of a new or existing repository. Example: user@host:~/path/to/repo/" msgstr "" -"Yeni veya varolan bir havuz yolu. Örnek: user@host:~/path/to/repo/" +"Yeni veya varolan bir depo yolu. Örnek: user@host:~/path/to/repo/" #: plinth/modules/backups/forms.py:193 msgid "SSH server password" @@ -273,11 +289,11 @@ msgstr "" #: plinth/modules/backups/forms.py:213 msgid "Remote backup repository already exists." -msgstr "Uzaktan yedekleme deposu zaten var." +msgstr "Uzak yedekleme deposu zaten var." #: plinth/modules/backups/forms.py:219 msgid "Select verified SSH public key" -msgstr "" +msgstr "Doğrulanmış SSH ortak anahtarını seçin" #: plinth/modules/backups/repository.py:33 msgid "" @@ -293,7 +309,7 @@ msgstr "Bağlantı reddedildi" #: plinth/modules/backups/repository.py:47 msgid "Repository not found" -msgstr "Havuz bulunamadı" +msgstr "Depo bulunamadı" #: plinth/modules/backups/repository.py:52 msgid "Incorrect encryption passphrase" @@ -305,59 +321,53 @@ msgstr "SSH erişimi reddedildi" #: plinth/modules/backups/repository.py:63 msgid "Repository path is neither empty nor is an existing backups repository." -msgstr "" +msgstr "Depo yolu ne boş ne de varolan bir yedeklemeler deposu." #: plinth/modules/backups/repository.py:136 msgid "Existing repository is not encrypted." -msgstr "" +msgstr "Varolan depo şifrelenmemiş." #: plinth/modules/backups/repository.py:321 #, python-brace-format msgid "{box_name} storage" -msgstr "{box_name} depolama" +msgstr "{box_name} depolaması" #: plinth/modules/backups/templates/backups.html:30 #: plinth/modules/backups/views.py:60 msgid "Create a new backup" -msgstr "Yeni bir yedekleme oluştur" +msgstr "Yeni bir yedek oluşturun" #: plinth/modules/backups/templates/backups.html:34 msgid "Create Backup" -msgstr "Yedekleme Oluştur" +msgstr "Yedek Oluştur" #: plinth/modules/backups/templates/backups.html:37 msgid "Upload and restore a backup archive" -msgstr "" +msgstr "Bir yedek arşivi yükleyin ve geri yükleyin" #: plinth/modules/backups/templates/backups.html:41 msgid "Upload and Restore" -msgstr "Yükle ve Geri Yükle" +msgstr "Karşıya Yükle ve Geri Yükle" #: plinth/modules/backups/templates/backups.html:44 -#, fuzzy -#| msgid "Add a remote backup location" msgid "Add a backup location" -msgstr "Uzak yedekleme konumu ekle" +msgstr "Bir yedekleme konumu ekleyin" #: plinth/modules/backups/templates/backups.html:48 -#, fuzzy -#| msgid "Add a remote backup location" msgid "Add Backup Location" -msgstr "Uzak yedekleme konumu ekle" +msgstr "Yedekleme Konumu Ekle" #: plinth/modules/backups/templates/backups.html:51 msgid "Add a remote backup location" -msgstr "Uzak yedekleme konumu ekle" +msgstr "Uzak bir yedekleme konumu ekleyin" #: plinth/modules/backups/templates/backups.html:55 -#, fuzzy -#| msgid "Add a remote backup location" msgid "Add Remote Backup Location" -msgstr "Uzak yedekleme konumu ekle" +msgstr "Uzak Yedekleme Konumu Ekle" #: plinth/modules/backups/templates/backups.html:58 msgid "Existing Backups" -msgstr "Mevcut Yedeklemeler" +msgstr "Varolan Yedekler" #: plinth/modules/backups/templates/backups_add_remote_repository.html:19 #, python-format @@ -366,8 +376,8 @@ msgid "" "To restore a backup on a new %(box_name)s you need the ssh credentials and, " "if chosen, the encryption passphrase." msgstr "" -"Bu havuzun kimlik bilgileri %(box_name)s hesabınızda saklanır.
    Bir " -"yedeklemeyi yeni bir %(box_name)s sinde geri yüklemek için ssh kimlik " +"Bu depo için kimlik bilgileri %(box_name)s cihazınızda saklanır.
    Bir " +"yedeği yeni bir %(box_name)s cihazına geri yüklemek için ssh kimlik " "bilgilerine ve seçiliyse, şifreleme parolasına ihtiyacınız vardır." #: plinth/modules/backups/templates/backups_add_remote_repository.html:28 @@ -377,7 +387,7 @@ msgstr "Konum Oluştur" #: plinth/modules/backups/templates/backups_add_repository.html:19 #: plinth/modules/gitweb/views.py:50 msgid "Create Repository" -msgstr "Depo oluştur" +msgstr "Depo Oluştur" #: plinth/modules/backups/templates/backups_delete.html:12 msgid "Delete this archive permanently?" @@ -385,14 +395,15 @@ msgstr "Bu arşiv kalıcı olarak silinsin mi?" #: plinth/modules/backups/templates/backups_delete.html:19 msgid "Time" -msgstr "Zaman" +msgstr "Saat" #: plinth/modules/backups/templates/backups_delete.html:36 #, python-format msgid "Delete Archive %(name)s" -msgstr "%(name)s arşivini sil" +msgstr "%(name)s Arşivini Sil" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -400,35 +411,27 @@ msgstr "%(name)s arşivini sil" #: plinth/modules/pagekite/templates/pagekite_custom_services.html:28 #: plinth/modules/sharing/templates/sharing_add_edit.html:20 msgid "Submit" -msgstr "İbraz Et" +msgstr "Gönder" #: plinth/modules/backups/templates/backups_repository.html:19 -#, fuzzy -#| msgid "Repository removed." msgid "This repository is encrypted" -msgstr "Depo kaldırıldı." +msgstr "Bu depo şifreli" #: plinth/modules/backups/templates/backups_repository.html:34 -#, fuzzy -#| msgid "Remove Location" msgid "Unmount Location" -msgstr "Konumu Kaldır" +msgstr "Konumu Sök" #: plinth/modules/backups/templates/backups_repository.html:45 -#, fuzzy -#| msgid "Mount Point" msgid "Mount Location" -msgstr "Bağlama Noktası" +msgstr "Konumu Bağla" #: plinth/modules/backups/templates/backups_repository.html:56 msgid "Remove Backup Location. This will not delete the remote backup." -msgstr "" +msgstr "Yedekleme Konumunu Kaldır. Bu, uzak yedeği silmeyecek." #: plinth/modules/backups/templates/backups_repository.html:77 -#, fuzzy -#| msgid "downloading" msgid "Download" -msgstr "indiriliyor" +msgstr "İndir" #: plinth/modules/backups/templates/backups_repository.html:81 #: plinth/modules/backups/templates/backups_restore.html:27 @@ -438,18 +441,18 @@ msgstr "Geri yükle" #: plinth/modules/backups/templates/backups_repository.html:103 msgid "No archives currently exist." -msgstr "" +msgstr "Şu anda mevcut arşivler yok." #: plinth/modules/backups/templates/backups_repository_remove.html:13 msgid "Are you sure that you want to remove this repository?" -msgstr "Bu depoyu kaldırmak istediğinizden emin misiniz?" +msgstr "Bu depoyu kaldırmak istediğinize emin misiniz?" #: plinth/modules/backups/templates/backups_repository_remove.html:19 msgid "" "The remote repository will not be deleted. This just removes the repository " "from the listing on the backup page, you can add it again later on." msgstr "" -"Uzak depo silinmeyecek. Bu sadece depoyu yedekleme sayfasındaki listeden " +"Uzak depo silinmeyecektir. Bu, sadece depoyu yedekleme sayfasındaki listeden " "kaldırır, daha sonra tekrar ekleyebilirsiniz." #: plinth/modules/backups/templates/backups_repository_remove.html:31 @@ -458,18 +461,10 @@ msgstr "Konumu Kaldır" #: plinth/modules/backups/templates/backups_restore.html:15 msgid "Restore data from" -msgstr "Verileri şuradan geri yükle" +msgstr "Verileri şuradan geri yükle:" #: plinth/modules/backups/templates/backups_upload.html:17 -#, fuzzy, python-format -#| msgid "" -#| "\n" -#| " Upload a backup file downloaded from another %(box_name)s to " -#| "restore is\n" -#| " contents. You can choose the apps you wish to restore after " -#| "uploading a\n" -#| " backup file.\n" -#| " " +#, python-format msgid "" "\n" " Upload a backup file downloaded from another %(box_name)s to restore " @@ -480,10 +475,10 @@ msgid "" " " msgstr "" "\n" -" Geri yüklemek için başka bir %(box_name)s 'ndan indirilen bir " -"yedekleme dosyası\n" -" yükleyin. Bir yedekleme dosyası yükledikten sonra geri yüklemek " -"istediğiniz\n" +" İçeriğini geri yüklemek için başka bir %(box_name)s cihazından " +"indirilen bir yedekleme\n" +" dosyası yükleyin. Bir yedekleme dosyası yükledikten sonra geri " +"yüklemek istediğiniz\n" " uygulamaları seçebilirsiniz.\n" " " @@ -498,10 +493,12 @@ msgid "" "You have %(max_filesize)s available to restore a backup. Exceeding this " "limit can leave your %(box_name)s unusable." msgstr "" +"Bir yedeği geri yüklemek için %(max_filesize)s kullanılabilir yeriniz var. " +"Bu sınırın aşılması %(box_name)s cihazınızı kullanılamaz hale getirebilir." #: plinth/modules/backups/templates/backups_upload.html:41 msgid "Upload file" -msgstr "Dosya Yükle" +msgstr "Dosya yükle" #: plinth/modules/backups/templates/verify_ssh_hostkey.html:18 #, python-format @@ -509,6 +506,8 @@ msgid "" "Could not reach SSH host %(hostname)s. Please verify that the host is up and " "accepting connections." msgstr "" +"%(hostname)s SSH anamakinesine erişilemedi. Lütfen anamakinenin açık " +"olduğunu ve bağlantıları kabul ettiğini doğrulayın." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:28 #, python-format @@ -516,10 +515,13 @@ msgid "" "The authenticity of SSH host %(hostname)s could not be established. The host " "advertises the following SSH public keys. Please verify any one of them." msgstr "" +"%(hostname)s SSH anamakinesinin güvenilirliği sağlanamadı. Anamakine " +"aşağıdaki SSH ortak anahtarlarını duyurur. Lütfen bunlardan herhangi birini " +"doğrulayın." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:40 msgid "How to verify?" -msgstr "" +msgstr "Nasıl doğrulanır?" #: plinth/modules/backups/templates/verify_ssh_hostkey.html:45 msgid "" @@ -527,10 +529,13 @@ msgid "" "one of the provided options. You can also use dsa, ecdsa, ed25519 etc. " "instead of rsa, by choosing the corresponding file." msgstr "" +"SSH anamakinesinde aşağıdaki komutu çalıştırın. Çıktı, sağlanan " +"seçeneklerden biriyle eşleşmelidir. Ayrıca ilgili dosyayı seçerek rsa yerine " +"dsa, ecdsa, ed25519 vb. kullanabilirsiniz." #: plinth/modules/backups/templates/verify_ssh_hostkey.html:60 msgid "Verify Host" -msgstr "" +msgstr "Anamakineyi Doğrula" #: plinth/modules/backups/views.py:55 msgid "Archive created." @@ -546,11 +551,11 @@ msgstr "Arşiv silindi." #: plinth/modules/backups/views.py:108 msgid "Upload and restore a backup" -msgstr "" +msgstr "Yedeklemeyi karşıya yükleyin ve geri yükleyin" #: plinth/modules/backups/views.py:143 msgid "Restored files from backup." -msgstr "Yedeklemeden geri yüklenen dosyalar." +msgstr "Yedekten geri yüklenen dosyalar." #: plinth/modules/backups/views.py:171 msgid "No backup file found." @@ -558,21 +563,19 @@ msgstr "Yedekleme dosyası bulunamadı." #: plinth/modules/backups/views.py:179 msgid "Restore from uploaded file" -msgstr "Yüklenen dosyadan geri yükle" +msgstr "Karşıya yüklenen dosyadan geri yükle" #: plinth/modules/backups/views.py:238 msgid "No additional disks available to add a repository." -msgstr "" +msgstr "Bir depo eklemek için ek diskler yok." #: plinth/modules/backups/views.py:246 -#, fuzzy -#| msgid "Create remote backup repository" msgid "Create backup repository" -msgstr "Uzak yedekleme deposu oluştur" +msgstr "Yedekleme deposu oluşturun" #: plinth/modules/backups/views.py:273 msgid "Create remote backup repository" -msgstr "Uzak yedekleme deposu oluştur" +msgstr "Uzak yedekleme deposu oluşturun" #: plinth/modules/backups/views.py:292 msgid "Added new remote SSH repository." @@ -580,27 +583,27 @@ msgstr "Yeni uzak SSH deposu eklendi." #: plinth/modules/backups/views.py:314 msgid "Verify SSH hostkey" -msgstr "" +msgstr "SSH anamakine anahtarını doğrula" #: plinth/modules/backups/views.py:340 msgid "SSH host already verified." -msgstr "" +msgstr "SSH anamakinesi zaten doğrulandı." #: plinth/modules/backups/views.py:350 msgid "SSH host verified." -msgstr "" +msgstr "SSH anamakinesi doğrulandı." #: plinth/modules/backups/views.py:364 msgid "SSH host public key could not be verified." -msgstr "" +msgstr "SSH anamakinesi ortak anahtarı doğrulanamadı." #: plinth/modules/backups/views.py:366 msgid "Authentication to remote server failed." -msgstr "" +msgstr "Uzak sunucuya kimlik doğrulama başarısız oldu." #: plinth/modules/backups/views.py:368 msgid "Error establishing connection to server: {}" -msgstr "Sunucuyla bağlantı kurulurken hata oluştu: {}" +msgstr "Sunucuyla bağlantı kurulurken hata oldu: {}" #: plinth/modules/backups/views.py:379 msgid "Repository removed." @@ -608,30 +611,198 @@ msgstr "Depo kaldırıldı." #: plinth/modules/backups/views.py:393 msgid "Remove Repository" -msgstr "Depoyu kaldır" +msgstr "Depoyu Kaldır" #: plinth/modules/backups/views.py:402 -#, fuzzy -#| msgid "Repository removed. The remote backup itself was not deleted." msgid "Repository removed. Backups were not deleted." -msgstr "Depo kaldırıldı. Uzaktan yedeklemenin kendisi silinmedi." +msgstr "Depo kaldırıldı. Yedekler silinmedi." #: plinth/modules/backups/views.py:412 msgid "Unmounting failed!" -msgstr "Çıkarma işlemi başarısız oldu!" +msgstr "Sökme başarısız oldu!" #: plinth/modules/backups/views.py:427 plinth/modules/backups/views.py:431 msgid "Mounting failed" -msgstr "Montaj başarısız oldu" +msgstr "Bağlama başarısız oldu" + +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" +"bepasty, büyük dosyaların yüklenmesine ve paylaşılmasına izin veren bir web " +"uygulamasıdır. Metin ve kod parçacıkları da yapıştırılabilir ve " +"paylaşılabilir. Metin, resim, ses, görüntü ve PDF belgeleri tarayıcıda " +"önizlenebilir. Paylaşılan dosyalar bir süre sonra sona erecek şekilde " +"ayarlanabilir." + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" +"bepasty, oturum açmak için kullanıcı adlarını kullanmaz. Sadece parolaları " +"kullanır. Her parola için bir dizi izin seçilebilir. Bir parola " +"oluşturduktan sonra, bunu ilişkilendirilmiş izinlere sahip olması gereken " +"kullanıcılarla paylaşabilirsiniz." + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" +"Aynı yetkiler kümesiyle birden çok parola oluşturabilir ve bunları farklı " +"kişilere veya gruplara dağıtabilirsiniz. Bu, daha sonra tek bir kişi veya " +"grubun parolasını listeden kaldırarak erişimini iptal etmenizi sağlar." + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "Dosya için bir web bağlantısı mevcutsa, dosyayı oku" + +#: plinth/modules/bepasty/__init__.py:43 +msgid "Create or upload files" +msgstr "Dosyaları oluştur veya yükle" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "Tüm dosyaları ve web bağlantılarını listele" + +#: plinth/modules/bepasty/__init__.py:45 +msgid "Delete files" +msgstr "Dosyaları sil" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "Dosyaları yönet: dosyaları kilitle/kilidini aç" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "Yok, parola her zaman gereklidir" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "Tüm dosyaları listele ve oku" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "bepasty" + +#: plinth/modules/bepasty/__init__.py:67 +msgid "File & Snippet Sharing" +msgstr "Dosya ve Kod Parçacığı Paylaşımı" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "Herkese Açık Erişim (varsayılan izinler)" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "Bir parola girmemiş isimsiz kullanıcılar için izinler." + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +msgid "Permissions" +msgstr "İzinler" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "Bu parolayla oturum açan kullanıcılar seçilen izinlere sahip olacak." + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "Açıklama" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" +"Bu parolanın amacını hatırlamanıza yardımcı olacak herhangi bir açıklama." + +#: plinth/modules/bepasty/templates/bepasty.html:12 +msgid "Manage Passwords" +msgstr "Parolaları Yönetin" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +msgid "Add password" +msgstr "Parola ekle" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "Şu anda yapılandırılmış parolalar yok." + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "Parola" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "Oku" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "Oluştur" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "Listele" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "Sil" + +#: plinth/modules/bepasty/views.py:46 +msgid "Admin" +msgstr "Yönetici" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "Yapılandırma güncellendi." + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "Yapılandırma sırasında bir hata meydana geldi." + +#: plinth/modules/bepasty/views.py:97 +msgid "Password added." +msgstr "Parola eklendi." + +#: plinth/modules/bepasty/views.py:102 +msgid "Add Password" +msgstr "Parola Ekle" + +#: plinth/modules/bepasty/views.py:119 +msgid "Password deleted." +msgstr "Parola silindi." #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " "Internet, and to resolve DNS queries for your user devices on your network." msgstr "" -"BIND, Alan Adı Sistemi (DNS) verilerinizi İnternet'te yayınlama ve " -"ağınızdaki kullanıcı cihazlarının DNS sorgularının çözümlenmesine imkan " -"verir." +"BIND, Etki Alanı Adı Sistemi (DNS) bilgilerinizi internette yayınlamanıza ve " +"ağınızdaki kullanıcı cihazlarınız için DNS sorgularını çözmenizi sağlar." #: plinth/modules/bind/__init__.py:33 #, python-brace-format @@ -640,79 +811,73 @@ msgid "" "machines on local network. It is also incompatible with sharing Internet " "connection from {box_name}." msgstr "" -"Güncel olarak {box_name} kutusunda BIND sadece yerel ağdaki diğer " -"makinelerin DNS sorgularını çözümlemek için kullanılmaktadır. Ayrıca " -"{box_name} kutusu ile İnternet bağlantısını paylaşmayla uyumsuzdur." +"Şu anda, {box_name} cihazında, BIND sadece yerel ağdaki diğer makineler için " +"DNS sorgularını çözmek için kullanılmaktadır. Ayrıca {box_name} cihazından " +"Internet bağlantısını paylaşmak için uyumsuzdur." -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "BIND" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" -msgstr "Alan Adı Sunucusu" +msgstr "Etki Alanı Adı Sunucusu" #: plinth/modules/bind/forms.py:20 msgid "Forwarders" -msgstr "Göndericiler" +msgstr "Yönlendiriciler" #: plinth/modules/bind/forms.py:21 msgid "" "A list DNS servers, separated by space, to which requests will be forwarded" msgstr "" -"Sorguların iletilecekleri, boşluklar ile ayrılmış DNS sunucuları listesi" +"Hangi isteklerin yönlendirileceği, boşluklar ile ayrılmış DNS sunucuları " +"listesi" #: plinth/modules/bind/forms.py:25 msgid "Enable DNSSEC" -msgstr "Dinamik DNSSEC'i Etkinleştir" +msgstr "DNSSEC'i etkinleştir" #: plinth/modules/bind/forms.py:26 msgid "Enable Domain Name System Security Extensions" -msgstr "Alan Adı Sistemi Güvenlik Uzantılarını Etkinleştir" +msgstr "Etki Alanı Adı Sistemi Güvenlik Uzantılarını etkinleştir" #: plinth/modules/bind/templates/bind.html:11 -#, fuzzy -#| msgid "Server domain" msgid "Serving Domains" -msgstr "Sunucu alanı" +msgstr "Hizmet Veren Etki Alanları" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" msgstr "Tür" #: plinth/modules/bind/templates/bind.html:17 -#, fuzzy -#| msgid "Domain Name" msgid "Domain Names" -msgstr "Alan Adı" +msgstr "Etki Alanı Adları" #: plinth/modules/bind/templates/bind.html:18 -#, fuzzy -#| msgid "Service" msgid "Serving" -msgstr "Servis" +msgstr "Hizmet Veren" #: plinth/modules/bind/templates/bind.html:19 -#, fuzzy -#| msgid "IP address" msgid "IP addresses" -msgstr "IP adresi" +msgstr "IP adresleri" #: plinth/modules/bind/templates/bind.html:35 #: plinth/modules/bind/templates/bind.html:37 msgid "Refresh IP address and domains" -msgstr "" +msgstr "IP adresi ve etki alanlarını yenile" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" -msgstr "Kurulum güncellendi" +msgstr "Yapılandırma güncellendi" #: plinth/modules/cockpit/__init__.py:32 #, python-brace-format @@ -722,10 +887,10 @@ msgid "" "advanced functions that are not usually required. A web based terminal for " "console operations is also available." msgstr "" -"Cockpit, bir İnternet tarayıcısıyla GNU/Linux sunucularının yönetimini " -"yapmayı kolay kılan bir sunucu yöneticisidir. {box_name} kutusunda " -"genellikle gerekli olmayan birçok gelişmiş işlev için kontrol bulunur. " -"Konsol işlemleri için ağ tabanlı bir terminal de mevcuttur." +"Cockpit, GNU/Linux sunucularını bir web tarayıcısı aracılığıyla yönetmeyi " +"kolaylaştıran bir sunucu yöneticisidir. Bir {box_name} üzerinde, genellikle " +"gerekli olmayan birçok gelişmiş işlev için denetimler mevcuttur. Konsol " +"işlemleri için web tabanlı bir terminal de mevcuttur." #: plinth/modules/cockpit/__init__.py:38 msgid "" @@ -734,30 +899,27 @@ msgid "" "firewall ports and advanced networking such as bonding, bridging and VLAN " "management." msgstr "" +"Cockpit, disk bölümleme ve RAID yönetimi gibi gelişmiş depolama işlemlerini " +"gerçekleştirmek için kullanılabilir. Ayrıca, özel güvenlik duvarı bağlantı " +"noktalarını açmak ve birleştirme, köprüleme ve VLAN yönetimi gibi gelişmiş " +"ağlar oluşturmak için de kullanılabilir." #: plinth/modules/cockpit/__init__.py:43 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Cockpit will be available from /" -#| "_cockpit/ path on the web server. It can be accessed by any user with a {box_name} login. Sensitive " -#| "information and system altering abilities are limited to users belonging " -#| "to admin group." +#, python-brace-format msgid "" "It can be accessed by any user on {box_name} " "belonging to the admin group." msgstr "" -"Etkinleştirildiğinde, Cockpit'e erişim ağ sunucusunda /" -"cockpit yolundan mümkün olacaktır. Herhangi bir {box_name} kullanıcısı, ki oturumu olmalıdır tarafından " -"kullanılabilir. Hassas bilgiler ve sistem değiştirme kabiliyeti, yönetici " -"(yani admin) grubuna ait kullanıcılar ile sınırlıdır." +"Admin grubuna ait {box_name} üzerindeki herhangi bir " +"kullanıcı tarafından erişilebilir." #: plinth/modules/cockpit/__init__.py:47 msgid "" "Cockpit requires that you access it through a domain name. It will not work " "when accessed using an IP address as part of the URL." msgstr "" +"Cockpit, ona bir etki alan adı aracılığıyla erişmenizi gerektirir. URL'nin " +"bir parçası olarak bir IP adresi kullanılarak erişildiğinde çalışmayacaktır." #: plinth/modules/cockpit/__init__.py:64 plinth/modules/cockpit/manifest.py:12 #: plinth/modules/performance/manifest.py:11 @@ -769,20 +931,21 @@ msgid "Server Administration" msgstr "Sunucu Yönetimi" #: plinth/modules/cockpit/templates/cockpit.html:11 -#, fuzzy -#| msgid "Access Point" msgid "Access" -msgstr "Erişim Noktası" +msgstr "Erişim" #: plinth/modules/cockpit/templates/cockpit.html:14 msgid "Cockpit will only work when accessed using the following URLs." msgstr "" +"Cockpit sadece aşağıdaki URL'ler kullanılarak erişildiğinde çalışacaktır." #: plinth/modules/config/__init__.py:23 msgid "" "Here you can set some general configuration options like hostname, domain " "name, webserver home page etc." msgstr "" +"Burada anamakine adı, etki alanı adı, web sunucusu ana sayfası vb. gibi bazı " +"genel yapılandırma seçeneklerini ayarlayabilirsiniz." #: plinth/modules/config/__init__.py:52 msgid "General Configuration" @@ -797,26 +960,27 @@ msgid "Configure" msgstr "Yapılandır" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" -msgstr "Alan Adı" +msgstr "Etki Alanı Adı" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" -msgstr "Geçersiz alan ismi" +msgstr "Geçersiz etki alanı adı" #: plinth/modules/config/forms.py:35 msgid "Apache Default" -msgstr "Apache Varsayılan" +msgstr "Apache Varsayılanı" #: plinth/modules/config/forms.py:36 msgid "FreedomBox Service (Plinth)" -msgstr "FreedomBox Servisi (Plinth)" +msgstr "FreedomBox Hizmeti (Plinth)" #: plinth/modules/config/forms.py:48 msgid "Hostname" -msgstr "Makine ismi" +msgstr "Anamakine Adı" #: plinth/modules/config/forms.py:50 #, python-brace-format @@ -826,14 +990,14 @@ msgid "" "and have as interior characters only alphabets, digits and hyphens. Total " "length must be 63 characters or less." msgstr "" -"Makine ismi yerel şebekedeki diğer cihazların sizin {box_name} kutunuza " -"erişmebilmek için kullanacakları yerel isimdir. Bir harf ya da sayı ile " -"başlayıp sona ermesi gerekir ve sadece alfabe harfleri, sayılar ve tireler " -"içerebilir. Toplam uzunluğun 63 karakter veya daha azı olması gerekmektedir." +"Anamakine adı, yerel ağdaki diğer cihazların {box_name} cihazınıza " +"ulaşabileceği yerel addır. Bir alfabe veya rakamla başlamak ve bitmek " +"zorundadır ve iç karakter olarak sadece harf, rakam ve kısa çizgi " +"içermelidir. Toplam uzunluk 63 karakter veya daha az olmak zorundadır." #: plinth/modules/config/forms.py:57 msgid "Invalid hostname" -msgstr "Geçersiz makine ismi" +msgstr "Geçersiz anamakine adı" #: plinth/modules/config/forms.py:63 #, python-brace-format @@ -845,12 +1009,12 @@ msgid "" "63 characters or less. Total length of domain name must be 253 characters " "or less." msgstr "" -"Alan adı, İnternet'teki diğer cihazların sizin {box_name} kutunuza erişmek " -"için kullanacakları global isimdir. Noktalarla ayrılmış gruplardan " -"oluşmalıdır. Her grubun bir alfabe harfi ya da bir sayı ile başlaması ve " -"sona ermesi gerekir ve içerik harfler, sayılar ve tireler ile sınırlı " -"kalmalıdır. Her grubun uzunluğu 63 karakter ya da daha azı olmalıdır. Alan " -"adının toplam uzunluğu 253 karakter ya da daha azı olmalıdır." +"Etki alanı adı, Internet üzerindeki diğer cihazların {box_name} cihazınıza " +"ulaşabileceği genel addır. Noktalarla ayrılmış etiketlerden oluşmak " +"zorundadır. Her etiket bir alfabe veya rakamla başlamak ve bitmek zorundadır " +"ve iç karakter olarak sadece harf, rakam ve kısa çizgi içermelidir. Her bir " +"etiketin uzunluğu 63 karakter veya daha az olmak zorundadır. Etki alanı " +"adının toplam uzunluğu 253 karakter veya daha az olmak zorundadır." #: plinth/modules/config/forms.py:78 msgid "Webserver Home Page" @@ -865,119 +1029,61 @@ msgid "" "is set to something other than {box_name} Service (Plinth), your users must " "explicitly type /plinth or /freedombox to reach {box_name} Service (Plinth)." msgstr "" +"Birisi web'de {box_name} cihazınızı ziyaret ettiğinde sunulmak zorunda olan " +"varsayılan sayfayı seçin. Tipik bir kullanım örneği, biri etki alanı adını " +"ziyaret ettiğinde blog'unuzu veya viki'nizi ana sayfa olarak ayarlamaktır. " +"Ana sayfa {box_name} Hizmeti (Plinth) dışında bir şeye ayarlandığında, " +"kullanıcılarınızın {box_name} Hizmeti'ne (Plinth) ulaşmak için açıkça /" +"plinth veya /freedombox yazmak zorunda olduklarını unutmayın." #: plinth/modules/config/forms.py:91 msgid "Show advanced apps and features" -msgstr "" +msgstr "Gelişmiş uygulamaları ve özellikleri göster" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "" +"Daha fazla teknik bilgi gerektiren uygulamaları ve özellikleri gösterir." #: plinth/modules/config/views.py:46 #, python-brace-format msgid "Error setting hostname: {exception}" -msgstr "Makine isminin ayarlanmasında hata: {exception}" +msgstr "Anamakine adı ayarlanırken hata oldu: {exception}" #: plinth/modules/config/views.py:49 msgid "Hostname set" -msgstr "Makine ismi ayarlandı" +msgstr "Anamakine adı ayarlandı" #: plinth/modules/config/views.py:58 #, python-brace-format msgid "Error setting domain name: {exception}" -msgstr "Alan adının ayarlanmasında hata: {exception}" +msgstr "Etki alanı adı ayarlanırken hata oldu: {exception}" #: plinth/modules/config/views.py:61 msgid "Domain name set" -msgstr "Alan adı ayarlandı" +msgstr "Etki alanı adı ayarlandı" #: plinth/modules/config/views.py:69 #, python-brace-format msgid "Error setting webserver home page: {exception}" -msgstr "Web sunucusu ana sayfasını ayarlama hatası: {exception}" +msgstr "Web sunucusu ana sayfasını ayarlanırken hata oldu: {exception}" #: plinth/modules/config/views.py:72 msgid "Webserver home page set" -msgstr "" +msgstr "Web sunucusu ana sayfası ayarlandı" #: plinth/modules/config/views.py:80 #, python-brace-format msgid "Error changing advanced mode: {exception}" -msgstr "Gelişmiş mod değiştirilirken hata oluştu: {exception}" +msgstr "Gelişmiş kip değiştirilirken hata oldu: {exception}" #: plinth/modules/config/views.py:85 msgid "Showing advanced apps and features" -msgstr "" +msgstr "Gelişmiş uygulamalar ve özellikler gösteriliyor" #: plinth/modules/config/views.py:88 msgid "Hiding advanced apps and features" -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:24 -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "Dosya paylaşımı" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "Parola Yükle" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" -"Coquelicot için yeni bir yükleme şifresi ayarlayın. Geçerli şifreyi korumak " -"için bu alanı boş bırakın." - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/views.py:36 -#, fuzzy -#| msgid "Password updated" -msgid "Upload password updated" -msgstr "Parola güncellendi" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "Azami dosya boyutu güncellendi" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "" +msgstr "Gelişmiş uygulamalar ve özellikler gizleniyor" #: plinth/modules/coturn/__init__.py:31 msgid "" @@ -986,58 +1092,63 @@ msgid "" "other communication servers can use it to establish a call between parties " "who are otherwise unable connect to each other." msgstr "" +"Coturn, TURN ve STUN protokollerinin bir uygulamasını sağlayarak sesli/" +"görüntülü aramaları ve konferansları kolaylaştıran bir sunucudur. WebRTC, " +"SIP ve diğer iletişim sunucuları, başka şekilde birbirleriyle bağlantı " +"kuramayan taraflar arasında bir çağrı kurmak için bunu kullanabilir." #: plinth/modules/coturn/__init__.py:35 msgid "" "It is not meant to be used directly by users. Servers such as matrix-synapse " "need to be configured with the details provided here." msgstr "" +"Doğrudan kullanıcılar tarafından kullanılması amaçlanmamıştır. Matrix-" +"synapse gibi sunucuların burada sağlanan ayrıntılarla yapılandırılması " +"gerekir." -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" -msgstr "" +msgstr "Coturn" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" -msgstr "" +msgstr "VoIP Yardımcısı" #: plinth/modules/coturn/forms.py:22 plinth/modules/quassel/forms.py:22 -#, fuzzy -#| msgid "Subdomain" msgid "TLS domain" -msgstr "Alt Alan" +msgstr "TLS etki alanı" #: plinth/modules/coturn/forms.py:24 plinth/modules/quassel/forms.py:24 msgid "" "Select a domain to use TLS with. If the list is empty, please configure at " "least one domain with certificates." msgstr "" +"TLS ile kullanmak için bir etki alanı seçin. Eğer liste boşsa, lütfen en az " +"bir etki alanını sertifikalarla yapılandırın." #: plinth/modules/coturn/templates/coturn.html:15 msgid "Use the following URLs to configure your communication server:" -msgstr "" +msgstr "İletişim sunucunuzu yapılandırmak için aşağıdaki URL'leri kullanın:" #: plinth/modules/coturn/templates/coturn.html:26 -#, fuzzy -#| msgid "The following disks are in use:" msgid "Use the following shared authentication secret:" -msgstr "Aşağıdaki diskler kullanımdadır:" +msgstr "Aşağıdaki paylaşılan kimlik doğrulama gizli anahtarını kullanın:" #: plinth/modules/datetime/__init__.py:25 msgid "" "Network time server is a program that maintains the system time in " "synchronization with servers on the Internet." msgstr "" -"Ağ zaman sunucusu, İnternet'teki sunucular ile sistem zamanını eş tutan bir " -"programdır." +"Ağ zaman sunucusu, sistem saatini Internet'teki sunucularla eşit halde tutan " +"bir programdır." #: plinth/modules/datetime/__init__.py:69 msgid "Date & Time" -msgstr "Tarih & Zaman" +msgstr "Tarih ve Saat" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" -msgstr "NTP sunucusuna senkronize edilen süre" +msgstr "NTP sunucusu ile zaman eşitlendi" #: plinth/modules/datetime/forms.py:18 msgid "Time Zone" @@ -1048,17 +1159,17 @@ msgid "" "Set your time zone to get accurate timestamps. This will set the system-wide " "time zone." msgstr "" -"Zaman damgalarının doğru olması için saat diliminizi ayarlayın. Bu, tüm " -"sistem için saat dilimini ayarlayacaktır." +"Doğru zaman damgaları almak için saat diliminizi ayarlayın. Bu, sistem " +"genelinde saat dilimini ayarlayacaktır." #: plinth/modules/datetime/forms.py:30 msgid "-- no time zone set --" -msgstr "-- hiçbir saat dilimi girilmemiştir --" +msgstr "-- ayarlı saat dilimi yok --" #: plinth/modules/datetime/views.py:45 #, python-brace-format msgid "Error setting time zone: {exception}" -msgstr "Saat diliminin ayarlanmasında hata: {exception}" +msgstr "Saat dilimi ayarlanırken hata oldu: {exception}" #: plinth/modules/datetime/views.py:48 msgid "Time zone set" @@ -1066,28 +1177,20 @@ msgstr "Saat dilimi ayarlandı" #: plinth/modules/deluge/__init__.py:26 msgid "Deluge is a BitTorrent client that features a Web UI." -msgstr "Deluge, ağ arayüzü sunan bir BitTorrent istemcisidir." +msgstr "Deluge, bir Web kullanıcı arayüzüne sahip bir BitTorrent istemcisidir." #: plinth/modules/deluge/__init__.py:27 -#, fuzzy -#| msgid "" -#| "When enabled, the Deluge web client will be available from /deluge path on the web server. The default password is " -#| "'deluge', but you should log in and change it immediately after enabling " -#| "this service." msgid "" "The default password is 'deluge', but you should log in and change it " "immediately after enabling this service." msgstr "" -"Etkinleştirildiğinde, Deluge ağ istemcisine erişim ağ (web) sunucusunda /deluge yolundan mümkün olacaktır. Varsayılan parola " -"şudur: 'deluge'. Ancak servisi etkinleştirdikten sonra giriş yapıp onu " -"derhal değiştirmeniz gerekmektedir." +"Varsayılan parola 'deluge'dir, ancak bu hizmeti etkinleştirdikten hemen " +"sonra oturum açmalı ve parolayı değiştirmelisiniz." #: plinth/modules/deluge/__init__.py:46 #: plinth/modules/transmission/__init__.py:48 msgid "Download files using BitTorrent applications" -msgstr "BitTorrent uygulamaları kullanarak dosya indir" +msgstr "BitTorrent uygulamalarını kullanarak dosyaları indir" #: plinth/modules/deluge/__init__.py:50 plinth/modules/deluge/manifest.py:9 msgid "Deluge" @@ -1100,33 +1203,49 @@ msgstr "BitTorrent Web İstemcisi" #: plinth/modules/deluge/forms.py:20 plinth/modules/transmission/forms.py:21 msgid "Download directory" -msgstr "İndirme klasörü" +msgstr "İndirme dizini" #: plinth/modules/deluge/manifest.py:10 msgid "Bittorrent client written in Python/PyGTK" msgstr "Python/PyGTK ile yazılmış BitTorrent istemcisi" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." msgstr "" -"Sistem teşhis testi uygulamaların ve servislerin beklenildiği gibi " -"çalıştıklarını teyit etmek için sisteminizde bir takım kontroller yapacaktır." +"Sistem tanılama denemesi, uygulamaların ve hizmetlerin beklendiği gibi " +"çalıştığını doğrulamak için sisteminizde bir dizi denetim gerçekleştirecek." -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" -msgstr "Teşhisler" +msgstr "Tanılama" + +#: plinth/modules/diagnostics/__init__.py:102 +#, fuzzy +#| msgid "Quassel" +msgid "passed" +msgstr "Quassel" + +#: plinth/modules/diagnostics/__init__.py:103 +#, fuzzy +#| msgid "Setup failed." +msgid "failed" +msgstr "Ayarlama başarısız oldu." + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 msgid "Run Diagnostics" -msgstr "Teşhisleri Çalıştır" +msgstr "Tanılamayı Çalıştır" #: plinth/modules/diagnostics/templates/diagnostics.html:20 msgid "Diagnostics test is currently running" -msgstr "Teşhis testi şu anda çalışmaktadır" +msgstr "Tanılama denemesi şu anda çalışıyor" #: plinth/modules/diagnostics/templates/diagnostics.html:33 msgid "Results" @@ -1136,21 +1255,19 @@ msgstr "Sonuçlar" #: plinth/modules/diagnostics/templates/diagnostics_app.html:12 #, python-format msgid "App: %(app_id)s" -msgstr "" +msgstr "Uygulama: %(app_id)s" #: plinth/modules/diagnostics/templates/diagnostics_app.html:10 msgid "Diagnostic Results" -msgstr "Teşhis Sonuçları" +msgstr "Tanı Sonuçları" #: plinth/modules/diagnostics/templates/diagnostics_app.html:17 -#, fuzzy -#| msgid "This module does not support diagnostics" msgid "This app does not support diagnostics" -msgstr "Bu öbek teşhisleri desteklememektedir" +msgstr "Bu uygulama tanılamayı desteklemiyor" #: plinth/modules/diagnostics/templates/diagnostics_results.html:10 msgid "Test" -msgstr "Test" +msgstr "Deneme" #: plinth/modules/diagnostics/templates/diagnostics_results.html:11 msgid "Result" @@ -1158,15 +1275,15 @@ msgstr "Sonuç" #: plinth/modules/diagnostics/views.py:39 msgid "Diagnostic Test" -msgstr "Teşhis Testi" +msgstr "Tanı Denemesi" #: plinth/modules/diaspora/__init__.py:45 msgid "" "diaspora* is a decentralized social network where you can store and control " "your own data." msgstr "" -"diaspora* kendi verilerinizi saklayıp kontrol edebileceğiniz merkezi olmayan " -"bir sosyal ağdır." +"diaspora* kendi verilerinizi depolayabileceğiniz ve denetleyebileceğiniz " +"merkezi olmayan bir sosyal ağdır." #: plinth/modules/diaspora/__init__.py:69 #: plinth/modules/diaspora/manifest.py:23 @@ -1175,7 +1292,7 @@ msgstr "diaspora*" #: plinth/modules/diaspora/__init__.py:70 msgid "Federated Social Network" -msgstr "Federe Sosyal Ağ" +msgstr "Federal Sosyal Ağ" #: plinth/modules/diaspora/forms.py:13 msgid "Enable new user registrations" @@ -1190,8 +1307,8 @@ msgid "" "It is an unofficial webview based client for the community-run, distributed " "social network diaspora*" msgstr "" -"Topluluk tarafından çalıştırılan, dağıtılmış sosyal ağ diaspora* için resmî " -"olmayan webview temelli bir istemci" +"Topluluk tarafından yönetilen, dağıtılmış sosyal ağ diaspora* için resmi " +"olmayan bir web görüntüleme tabanlı istemcidir" #: plinth/modules/diaspora/templates/diaspora-post-setup.html:16 #, python-format @@ -1202,12 +1319,12 @@ msgid "" "podname wouldn't be accessible.
    You can access the diaspora* pod at diaspora.%(domain_name)s " msgstr "" -"diaspora* koza ismi %(domain_name)s olarak ayarlanmıştır. Kullanıcı " -"kimlikleri kullanıcıismi@diaspora.%(domain_name)s
    şeklinde " -"olacaktır. Eğer FreedomBox alan adı değiştirilirse önceki koza adı ile kayıt " -"edilen kullanıcıların tüm verileri erişilemez duruma geçecektir.
    " -"diaspora* kozasına diaspora." -"%(domain_name)s konumundan erişebilirsiniz" +"diaspora* pod etki alanı %(domain_name)s olarak ayarlandı. Kullanıcı " +"kimlikleri kullanıcıadı@diaspora.%(domain_name)s şeklinde görünecek." +"
    Eğer FreedomBox etki alanı adı değiştirilirse, önceki pod adıyla " +"kayıtlı kullanıcıların tüm verileri erişilemez olacaktır.
    diaspora* " +"pod'a diaspora.%(domain_name)s adresinden erişebilirsiniz" #: plinth/modules/diaspora/templates/diaspora-pre-setup.html:43 #: plinth/modules/dynamicdns/templates/dynamicdns_configure.html:25 @@ -1217,7 +1334,7 @@ msgstr "" #: plinth/modules/tahoe/templates/tahoe-pre-setup.html:43 #: plinth/templates/app.html:54 msgid "Update setup" -msgstr "Kurulumu güncelle" +msgstr "Ayarlamayı güncelle" #: plinth/modules/diaspora/views.py:74 msgid "User registrations enabled" @@ -1225,7 +1342,7 @@ msgstr "Kullanıcı kayıtları etkinleştirildi" #: plinth/modules/diaspora/views.py:78 msgid "User registrations disabled" -msgstr "Kullanıcı kayıtları devre dışı bırakıldı" +msgstr "Kullanıcı kayıtları etkisizleştirildi" #: plinth/modules/dynamicdns/__init__.py:28 #, python-brace-format @@ -1234,10 +1351,10 @@ msgid "" "24h), it may be hard for others to find you on the Internet. This will " "prevent others from finding services which are provided by this {box_name}." msgstr "" -"Eğer İnternet erişim sağlayıcınız IP adresinizi periyodik bir şekilde " -"(mesela her 24 saatte bir) değiştiriyorsa diğer kişiler sizi ağda bulmakta " -"zorlanabilir. Ve bu sebeple kimse sizin ownCloud'unuz gibi {box_name} " -"tarafından sunulan servisleri bulamayabilir." +"Internet sağlayıcınız IP adresinizi düzenli olarak değiştirirse (yani her 24 " +"saatte bir), başkalarının sizi Internet'te bulması zor olabilir. Bu, " +"başkalarının bu {box_name} tarafından sağlanan hizmetleri bulmasını " +"engelleyecektir." #: plinth/modules/dynamicdns/__init__.py:32 msgid "" @@ -1249,76 +1366,74 @@ msgid "" "Internet asks for your DNS name, they will get a response with your current " "IP address." msgstr "" -"Çözüm, IP adresinize bir DNS ismi atamak ve DNS ismini IP adresiniz İnternet " -"erişim sağlayıcınız tarafından her değiştirildiğinde güncellemektir. Dinamik " -"DNS güncel genel İnternet adresinizi bir GnuDIP sunucusuna gönderir. Bunun ardından " -"sunucu DNS isminizi yeni IP adresi ile ilişkilendirecek ve İnternet'te " -"birisi DNS isminizi sorguladığında güncel IP adresinizi elde edebilecektir." +"Çözüm, IP adresinize bir DNS adı atamak ve IP'niz Internet sağlayıcınız " +"tarafından her değiştirildiğinde DNS adını güncellemektir. Değişken DNS, şu " +"anki dış IP adresinizi bir GnuDIP sunucusuna göndermenizi sağlar. Daha sonra, " +"sunucu DNS adınızı yeni IP'ye atayacaktır ve Internet'ten birisi sizin DNS " +"adınızı sorarsa, şu anki IP adresinizle bir yanıt alacaktır." #: plinth/modules/dynamicdns/__init__.py:55 msgid "Dynamic DNS Client" -msgstr "Dinamik DNS istemcisi" +msgstr "Değişken DNS İstemcisi" #: plinth/modules/dynamicdns/__init__.py:65 -#, fuzzy -#| msgid "Domain Name" msgid "Dynamic Domain Name" -msgstr "Alan Adı" +msgstr "Değişken Etki Alanı Adı" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " "providers." msgstr "" -"<User>, <Pass>, <Ip>, <Domain> değişkenleri URL'de " -"(bağlantıda) kullanılabilir. Ayrıntılar için örnek sunucuların URL " -"güncelleme şablonlarına bakınız." +"<User>, <Pass>, <Ip>, <Domain> değişkenleri URL " +"içinde kullanılabilir. Ayrıntılar için örnek sağlayıcıların URL güncelleme " +"şablonlarına bakın." -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " "you may use the update URL of your provider." msgstr "" -"Lütfen sağlayıcınızla uyumlu bir güncelleme protokolü seçin. Eğer " -"sağlayıcınız GnuDIP protokolünü desteklemiyorsa ya da listelenmemişse " -"sağlayıcınızın güncelleme bağlantısını (URL) kullanabilirsiniz." +"Lütfen sağlayıcınıza göre bir güncelleme protokolü seçin. Eğer sağlayıcınız " +"GnuDIP protokolünü desteklemiyorsa veya sağlayıcınız listede yoksa, " +"sağlayıcınızın güncelleme URL'sini kullanabilirsiniz." -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." msgstr "" -"Buraya lütfen \"https://example.com/\" gibi bir URL girmeyin, sadece GnuDIP " -"sunucusunun makine ismini girin (\"example.com\" gibi)." +"Lütfen buraya bir URL (\"https://ornek.com/\" gibi) girmeyin, sadece GnuDIP " +"sunucusunun anamakine adını (\"ornek.com\" gibi) girin." -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "" -"{box_name} kutunuza erişilmesi için kullanmak istediğiniz herkese açık alan " -"ismi." +"{box_name} cihazınıza ulaşmak için kullanmak istediğiniz herkese açık etki " +"alanı adı." -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "" -"Sağlayıcınız kendi imzaladığı sertifikalar kullanıyorsa bu seçeneği kullanın." +"Sağlayıcınız kendinden imzalı sertifikalar kullanıyorsa bu seçeneği kullanın." -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "" -"Eğer bu seçenek seçiliyse, kullanıcı isminiz ve parolanız temel HTTP kimlik " +"Eğer bu seçenek seçilirse, kullanıcı adınız ve parolanız HTTP temel kimlik " "doğrulaması için kullanılacaktır." -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." -msgstr "Güncel parolanızı tutmak istiyorsanız bu alanı boş bırakın." +msgstr "Şu anki parolanızı korumak istiyorsanız bu alanı boş bırakın." -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1326,73 +1441,79 @@ msgid "" "address. The URL should simply return the IP where the client comes from " "(example: http://myip.datasystems24.de)." msgstr "" -"Seçeneğe bağlı değer. {box_name} kutunuz İnternet'e doğrudan bağlı değilse " -"(yani bir NAT yönlendiricisine bağlıysa) bu URL gerçek İnternet IP adresini " -"belirlemek için kullanılır. URL sadece istemcinin bulunduğu yerin IP'sini " -"vermelidir (mesela: http://myip.datasystems24.de)." +"İsteğe Bağlı Değer. Eğer {box_name} cihazınız doğrudan Internet'e bağlı " +"değilse (yani bir NAT yönlendiricisine bağlıysa), bu URL gerçek IP adresini " +"belirlemek için kullanılır. URL, istemcinin geldiği IP'yi döndürmelidir " +"(örnek: http://myip.datasystems24.de)." -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." -msgstr "Hesabın oluşturulduğu zaman kullanılan kullanıcı ismi." +msgstr "Hesap oluşturulduğunda kullanılan kullanıcı adı." + +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" #: plinth/modules/dynamicdns/forms.py:68 +#, fuzzy +#| msgid "Update URL" +msgid "other update URL" +msgstr "Güncelleme URL'si" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" -msgstr "Dinamik DNS'i Etkinleştir" +msgstr "Değişken DNS'i etkinleştir" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" -msgstr "Servis Türü" +msgstr "Hizmet Türü" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "GnuDIP Sunucu Adresi" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" -msgstr "Geçersiz sunucu ismi" +msgstr "Geçersiz sunucu adı" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" -msgstr "Güncelleme URL'i" +msgstr "Güncelleme URL'si" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "Tüm SSL sertifikalarını kabul et" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" -msgstr "Temel HTTP kimlik doğrulamasını kullan" +msgstr "HTTP temel kimlik doğrulamasını kullan" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" -msgstr "Kullanıcı ismi" +msgstr "Kullanıcı adı" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "Parola" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "Parolayı göster" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" -msgstr "Genel IP adresini bulmak için URL" +msgstr "Dış IP'yi aramak için URL" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" -msgstr "Lütfen bir güncelleme URL'i ya da GnuDIP sunucu adresi belirtin" +msgstr "Lütfen bir güncelleme URL'si ya da bir GnuDIP sunucu adresi girin" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" -msgstr "Lütfen bir GnuDIP kullanıcı ismi belirtin" +msgstr "Lütfen bir GnuDIP kullanıcı adı girin" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" -msgstr "Lütfen bir GnuDIP alan ismi belirtin" +msgstr "Lütfen bir GnuDIP etki alanı adı girin" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "Lütfen bir parola girin" @@ -1404,10 +1525,10 @@ msgid "" "based services at " "freedns.afraid.org." msgstr "" -"Eğer ücretsiz bir dinamik DNS hesabı arıyorsanız, bedava bir GnuDIP " -"servisini gnudip." -"datasystems24.net adresinde ya da ücretsiz URL güncelleme temelli " -"servisleri freedns." +"Eğer ücretsiz bir değişken DNS hesabı arıyorsanız, ücretsiz bir GnuDIP " +"hizmetini gnudip." +"datasystems24.net adresinde veya ücretsiz URL güncelleme tabanlı " +"hizmetleri freedns." "afraid.org adresinde bulabilirsiniz." #: plinth/modules/dynamicdns/templates/dynamicdns.html:23 @@ -1417,17 +1538,18 @@ msgid "" "port forwarding for standard ports, including TCP port 80 (HTTP) and TCP " "port 443 (HTTPS)." msgstr "" -"Eğer %(box_name)s kutunuz bir NAT yönlendiriciye bağlıysa, 80 numaralı TCP " -"portu (HTTP) ve 443 numaralı TCP portu (HTTPS) dahil olmak üzere port " -"yönlendirme eklemeyi unutmayınız." +"Eğer %(box_name)s cihazınız bir NAT yönlendiricisinin arkasına bağlıysa, TCP " +"bağlantı noktası 80 (HTTP) ve TCP bağlantı noktası 443 (HTTPS) dahil olmak " +"üzere standart bağlantı noktaları için bağlantı noktası yönlendirme eklemeyi " +"unutmayın." #: plinth/modules/dynamicdns/templates/dynamicdns_configure.html:15 msgid "" "You have disabled Javascript. Dynamic form mode is disabled and some helper " "functions may not work (but the main functionality should work)." msgstr "" -"Javascript'i devre dışı bırakmışsınız. Dinamik form kipi devre dışıdır ve " -"bazı yardımcı işlevler çalışmayabilir (fakat ana işlevler çalışmalıdır)." +"Javascript'i etkisizleştirdiniz. Değişken biçim kipi etkisizleştirildi ve " +"bazı yardımcı işlevler çalışmayabilir (ancak ana işlevsellik çalışmalıdır)." #: plinth/modules/dynamicdns/templates/dynamicdns_status.html:9 msgid "NAT type" @@ -1438,12 +1560,12 @@ msgid "" "NAT type was not detected yet. If you do not provide an \"IP Check URL\", we " "will not detect a NAT type." msgstr "" -"NAT türü henüz tespit edilmemiştir. Eğer bir \"IP Kontrolü Bağlantısı\" " -"girmezseniz NAT türü tespit edilmeyecektir." +"NAT türü henüz algılanmadı. Eğer bir \"IP Denetim URL'si\" girmezseniz, bir " +"NAT türü saptayamayacağız." #: plinth/modules/dynamicdns/templates/dynamicdns_status.html:19 msgid "Direct connection to the Internet." -msgstr "İnternet'e doğrudan bağlantı." +msgstr "Internet'e doğrudan bağlantı." #: plinth/modules/dynamicdns/templates/dynamicdns_status.html:21 #, python-format @@ -1453,17 +1575,17 @@ msgid "" "for this, otherwise IP changes will not be detected). In case the WAN IP " "changes, it may take up to %(timer)s minutes until your DNS entry is updated." msgstr "" -"NAT arkasında. Bu, dinamik DNS servisinin \"Genel IP adresi bulma bağlantısı" -"\" değişiklikleri için yoklayacağı anlamına gelir (\"Genel IP adresi bulma " -"bağlantısı\" bu sebeple gereklidir - aksi takdirde IP değişiklikleri tespit " -"edilemez). WAN IP değişikliği durumunda DNS girdinizin güncellenmesi " -"%(timer)s dakika alabilir." +"NAT arkasında. Bu, Değişken DNS hizmetinin değişiklikler için \"Dış IP'yi " +"aramak için URL\"yi yoklayacağı anlamına gelir (bunun için \"Dış IP'yi " +"aramak için URL\" girişi gereklidir, aksi takdirde IP değişiklikleri " +"algılanmayacaktır). WAN IP'sinin değişmesi durumunda, DNS girişinizin " +"güncellenmesi %(timer)s dakika kadar sürebilir." #: plinth/modules/dynamicdns/templates/dynamicdns_status.html:33 msgid "Last update" msgstr "Son güncelleme" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "Hakkında" @@ -1484,52 +1606,46 @@ msgstr "Durum" #: plinth/modules/dynamicdns/views.py:62 msgid "Configure Dynamic DNS" -msgstr "Dİnamik DNS'i Yapılandır" +msgstr "Değişken DNS'i Yapılandır" #: plinth/modules/dynamicdns/views.py:86 msgid "Dynamic DNS Status" -msgstr "Dinamik DNS Durumu" +msgstr "Değişken DNS Durumu" #: plinth/modules/ejabberd/__init__.py:37 msgid "" "XMPP is an open and standardized communication protocol. Here you can run " "and configure your XMPP server, called ejabberd." msgstr "" -"XMPP açık ve standardize edilmiş bir iletişim protokolüdür. Burada ejabberd " -"isimli XMPP sunucusunu yapılandırıp çalıştırabilirsiniz." +"XMPP, açık ve standartlaştırılmış bir iletişim protokolüdür. Burada ejabberd " +"adı verilen XMPP sunucunuzu çalıştırabilir ve yapılandırabilirsiniz." #: plinth/modules/ejabberd/__init__.py:40 -#, fuzzy, python-brace-format -#| msgid "" -#| "To actually communicate, you can use the web client or any other XMPP client. When enabled, ejabberd can be " -#| "accessed by any user with a {box_name} " -#| "login." +#, python-brace-format msgid "" "To actually communicate, you can use the web client or any other XMPP client. When enabled, ejabberd can be accessed by " "any user with a {box_name} login." msgstr "" -"İletişim kurmak için ağ istemcisini ya da " -"herhangi bir diğer web istemcisini " +"veya başka herhangi bir XMPP istemcisini kullanabilirsiniz. " -"Etkinleştirildiğinde, ejabberd kullanıcıları, " -"ki {box_name}hesabı olan tarafından kullanılabilir." +"Etkinleştirildiğinde, ejabberd'e {box_name} oturum " +"açma adı ile herhangi bir kullanıcı tarafından erişilebilir." -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "ejabberd" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "Sohbet Sunucusu" #: plinth/modules/ejabberd/forms.py:16 msgid "Enable Message Archive Management" -msgstr "Mesaj Arşivi Yönetimini Etkinleştir" +msgstr "İleti Arşivi Yönetimini etkinleştir" #: plinth/modules/ejabberd/forms.py:18 #, python-brace-format @@ -1539,29 +1655,27 @@ msgid "" "history of a multi-user chat room. It depends on the client settings whether " "the histories are stored as plain text or encrypted." msgstr "" -"Etkinleştirildi ise, {box_name} sohbet mesajları tarihçelerini " -"saklayacaktır. Bu, birden fazla istemci arasındaki sohbetlerin " -"eşleştirilmesine ve çoklu kullanıcılı sohbet odalarının tarihçesinin " -"okunmasına imkân tanır. Tarihçelerin sade metin ya da şifrelenmiş olarak " -"saklanmaları istemci ayarlarına bağlıdır." +"Eğer etkinleştirildiyse, {box_name} sohbet ileti geçmişlerini saklayacak. " +"Bu, birden çok istemci arasındaki konuşmaların eşitlenmesini ve çok " +"kullanıcılı bir sohbet odasının geçmişinin okunmasını sağlar. Geçmişlerin " +"düz metin olarak mı yoksa şifrelenmiş olarak mı saklanacağı istemci " +"ayarlarına bağlıdır." #: plinth/modules/ejabberd/manifest.py:11 msgid "Conversations" -msgstr "Sohbetler" +msgstr "Konuşmalar" #: plinth/modules/ejabberd/manifest.py:25 -#, fuzzy -#| msgid "ejabberd" msgid "Xabber" -msgstr "ejabberd" +msgstr "Xabber" #: plinth/modules/ejabberd/manifest.py:27 msgid "" "Open source Jabber (XMPP) client with multi-account support and clean and " "simple interface. " msgstr "" -"Açık kaynaklı Jabber (XMPP) istemcisi, çoklu hesap desteği ve temiz ve basit " -"bir arayüz. " +"Çoklu hesap desteği, temiz ve basit bir arayüze sahip açık kaynaklı Jabber " +"(XMPP) istemcisi. " #: plinth/modules/ejabberd/manifest.py:42 msgid "Yaxim" @@ -1578,17 +1692,17 @@ msgid "" "new accounts on public XMPP servers (including via Tor), or even connect to " "your own server for extra security." msgstr "" -"ChatSecure, XMPP üzerinden OTR şifrelemeyi destekleyen özgür ve açık " -"kaynaklı mesajlaşma uygulamasıdır. Mevcut bir Google hesabı ile oturum " -"açabilir, herkese açık XMPP sunucularında yeni hesaplar oluşturabilir (Tor " -"ile de olabilir), ya da ek güvenlik için kendi sunucunuza bile " +"ChatSecure, XMPP üzerinden OTR şifreleme özelliğine sahip ücretsiz ve açık " +"kaynaklı bir mesajlaşma uygulamasıdır. Varolan bir Google hesabına " +"bağlanabilir, herkese açık XMPP sunucularında (Tor aracılığıyla dahil) yeni " +"hesaplar oluşturabilir veya fazladan güvenlik için kendi sunucunuza bile " "bağlanabilirsiniz." -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "Dino" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "Gajim" @@ -1599,18 +1713,18 @@ msgid "" "like username@%(domainname)s. You can setup your domain on the system " "Configure page." msgstr "" -"XMPP sunucu alanınız %(domainname)s olarak ayarlanmıştır. Kullanıcı " -"kimlikleri username@%(domainname)s şeklinde olacaktır. Alanınızı " -"sistem Yapılandırma sayfasında " +"XMPP sunucusu etki alanınız %(domainname)s olarak ayarlandı. " +"Kullanıcı kimlikleri kullanıcıadı@%(domainname)s şeklinde görünecek. " +"Etki alanınızı sistemde Yapılandır sayfasında " "ayarlayabilirsiniz." -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" -msgstr "Mesaj Arşivi Yönetimi etkinleştirilmiştir" +msgstr "İleti Arşivi Yönetimi etkinleştirildi" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" -msgstr "Mesaj Arşivi Yönetimi devre dışı bırakılmıştır" +msgstr "İleti Arşivi Yönetimi etkisizleştirildi" #: plinth/modules/firewall/__init__.py:32 #, python-brace-format @@ -1619,31 +1733,29 @@ msgid "" "network traffic on your {box_name}. Keeping a firewall enabled and properly " "configured reduces risk of security threat from the Internet." msgstr "" -"Güvenlik duvarı {box_name} kutunuzda içeri gelen ve dışarı giden şebeke " -"trafiğini kontrol eden bir güvenlik sistemidir. Güvenlik duvarını " -"etkinleştirip gerektiği gibi yapılandırmak İnternet'ten gelen güvenlik " -"tehditlerini azaltır." +"Güvenlik duvarı, {box_name} cihazınızdaki gelen ve giden ağ trafiğini " +"denetleyen bir güvenlik sistemidir. Bir güvenlik duvarının etkinleştirilmiş " +"ve uygun şekilde yapılandırılmış halde tutulması, Internet kaynaklı güvenlik " +"tehdidi riskini azaltır." #: plinth/modules/firewall/__init__.py:65 msgid "Firewall" msgstr "Güvenlik Duvarı" #: plinth/modules/firewall/components.py:133 -#, fuzzy, python-brace-format -#| msgid "Service %(service_name)s is not running." +#, python-brace-format msgid "Port {name} ({details}) available for internal networks" -msgstr "%(service_name)s servisi çalışmamaktadır." +msgstr "Dahili ağlar için {name} ({details}) bağlantı noktası kullanılabilir" #: plinth/modules/firewall/components.py:141 -#, fuzzy, python-brace-format -#| msgid "Service %(service_name)s is not running." +#, python-brace-format msgid "Port {name} ({details}) available for external networks" -msgstr "%(service_name)s servisi çalışmamaktadır." +msgstr "Harici ağlar için {name} ({details}) bağlantı noktası kullanılabilir" #: plinth/modules/firewall/components.py:146 #, python-brace-format msgid "Port {name} ({details}) unavailable for external networks" -msgstr "" +msgstr "Harici ağlar için {name} ({details}) bağlantı noktası kullanılamaz" #: plinth/modules/firewall/templates/firewall.html:15 #, python-format @@ -1653,46 +1765,48 @@ msgid "" "you may run it using the command 'service firewalld start' or in case of a " "system with systemd 'systemctl start firewalld'." msgstr "" -"Güvenlik duvarı servisi çalışmamaktadır. Lütfen çalıştırın. Güvenlik duvarı " -"%(box_name)s kutusunda varsayılan değer olarak etkindir. Debian temelli " -"herhangi bir sistemde (%(box_name)s gibi) güvenlik duvarını 'service " -"firewalld start' komutunu çalıştırarak ya da systemd bulunan bir sistemde " -"'systemctl start firewalld' komutunu çalıştırarak etkinleştirebilirsiniz." +"Güvenlik duvarı arka plan programı çalışmıyor. Lütfen çalıştırın. Güvenlik " +"duvarı varsayılan olarak %(box_name)s ile etkinleştirilmiş gelir. Herhangi " +"bir Debian tabanlı sistemde (%(box_name)s gibi), 'service firewalld start' " +"komutunu kullanarak veya systemd 'systemctl start firewalld' olan bir sistem " +"durumunda çalıştırabilirsiniz." #: plinth/modules/firewall/templates/firewall.html:28 msgid "Show Ports" -msgstr "Portları Göster" +msgstr "Bağlantı Noktalarını Göster" #: plinth/modules/firewall/templates/firewall.html:29 msgid "Service/Port" -msgstr "Servis/Port" +msgstr "Hizmet/Bağlantı Noktası" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" -msgstr "Etkin" +msgstr "Etkinleştirildi" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" -msgstr "Devre dışı" +msgstr "Etkisizleştirildi" #: plinth/modules/firewall/templates/firewall.html:67 msgid "Permitted" -msgstr "İzinli" +msgstr "İzin Verildi" #: plinth/modules/firewall/templates/firewall.html:70 msgid "Permitted (internal only)" -msgstr "İzinli (sadece dahili)" +msgstr "İzin Verildi (sadece dahili)" #: plinth/modules/firewall/templates/firewall.html:73 msgid "Permitted (external only)" -msgstr "İzinli (sadece harici)" +msgstr "İzin Verildi (sadece harici)" #: plinth/modules/firewall/templates/firewall.html:76 msgid "Blocked" -msgstr "Engellenmiş" +msgstr "Engellendi" #: plinth/modules/firewall/templates/firewall.html:88 msgid "" @@ -1700,21 +1814,24 @@ msgid "" "also permitted in the firewall and when you disable a service it is also " "disabled in the firewall." msgstr "" -"Güvenlik duvarının işleyişi otomatiktir. Bir servisi etkinleştirdiğinizde " -"güvenlik duvarında da izinli hale gelir ve devre dışı bıraktığınızda " -"güvenlik duvarında da devre dışı bırakılır." +"Güvenlik duvarının çalışması otomatiktir. Bir hizmeti etkinleştirdiğinizde, " +"buna güvenlik duvarında da izin verilir ve bir hizmeti " +"etkisizleştirdiğinizde, güvenlik duvarında da etkisizleştirilir." #: plinth/modules/firewall/templates/firewall.html:96 #: plinth/modules/networks/templates/networks_configuration.html:49 #: plinth/modules/storage/templates/storage.html:94 msgid "Advanced" -msgstr "" +msgstr "Gelişmiş" #: plinth/modules/firewall/templates/firewall.html:98 msgid "" "Advanced firewall operations such as opening custom ports are provided by " "the Cockpit app." msgstr "" +"Özel bağlantı noktalarının açılması gibi gelişmiş güvenlik duvarı işlemleri " +"Cockpit uygulaması tarafından " +"sağlanır." #: plinth/modules/first_boot/forms.py:14 #, python-brace-format @@ -1723,23 +1840,26 @@ msgid "" "also be obtained by running the command \"sudo cat /var/lib/plinth/firstboot-" "wizard-secret\" on your {box_name}" msgstr "" +"FreedomBox kurulumu sırasında oluşturulan gizli anahtarı girin. Bu gizli " +"anahtarı, {box_name} cihazınızda \"sudo cat /var/lib/plinth/firstboot-wizard-" +"secret\" komutunu çalıştırarak da elde edebilirsiniz" #: plinth/modules/first_boot/forms.py:19 msgid "Firstboot Wizard Secret" -msgstr "" +msgstr "Firstboot Sihirbazı Gizli Anahtarı" #: plinth/modules/first_boot/templates/firstboot_complete.html:11 msgid "Setup Complete!" -msgstr "Yapılandırma Tamamlandı!" +msgstr "Kurulum Tamamlandı!" #: plinth/modules/first_boot/templates/firstboot_complete.html:14 #, python-format msgid "Without any apps, your %(box_name)s cannot do very much." -msgstr "Hİçbir uygulama olmadan %(box_name)s kutunuz pek bir şey yapamaz." +msgstr "Hiçbir uygulama olmadan %(box_name)s cihazınız çok fazla şey yapamaz." #: plinth/modules/first_boot/templates/firstboot_complete.html:21 msgid "Install Apps" -msgstr "Uygulama Kur" +msgstr "Uygulamaları Yükle" #: plinth/modules/first_boot/templates/firstboot_complete.html:27 #, python-format @@ -1747,16 +1867,16 @@ msgid "" "You may want to check the network setup and " "modify it if necessary." msgstr "" -"Şebeke kurulumunu kontrol edip gerekirse " -"değiştirmek isteyebilirsiniz." +"Ağ ayarlamasını gözden geçirmek ve " +"gerekirse değiştirmek isteyebilirsiniz." #: plinth/modules/first_boot/templates/firstboot_welcome.html:37 msgid "Start Setup" -msgstr "Kuruluma Başla" +msgstr "Kurulumu Başlat" #: plinth/modules/first_boot/views.py:49 msgid "Setup Complete" -msgstr "Yapılandırma Tamamlandı" +msgstr "Kurulum Tamamlandı" #: plinth/modules/gitweb/__init__.py:28 msgid "" @@ -1768,168 +1888,150 @@ msgid "" "available graphical clients. And you can share your code with people around " "the world." msgstr "" +"Git, yazılım geliştirme sırasında kaynak kodundaki değişiklikleri izlemek " +"için dağıtılmış bir sürüm denetim sistemidir. Gitweb, Git depolarına bir web " +"arayüzü sağlar. Kaynak kodun geçmişine ve içeriğine gözatabilir, ilgili " +"işlemeleri ve kodu bulmak için aramayı kullanabilirsiniz. Ayrıca bir komut " +"satırı Git istemcisiyle veya birden fazla mevcut grafik istemcisiyle " +"depoları çoğaltabilir ve kod değişikliklerini yükleyebilirsiniz. Ve kodunuzu " +"dünyanın her yerinden insanlarla paylaşabilirsiniz." #: plinth/modules/gitweb/__init__.py:35 msgid "" "To learn more on how to use Git visit Git tutorial." msgstr "" +"Git'in nasıl kullanılacağı hakkında daha fazla bilgi edinmek için Git öğreticisini ziyaret edin." #: plinth/modules/gitweb/__init__.py:51 msgid "Read-write access to Git repositories" -msgstr "" +msgstr "Git depolarına okuma-yazma erişimi" #: plinth/modules/gitweb/__init__.py:56 plinth/modules/gitweb/manifest.py:13 msgid "Gitweb" -msgstr "" +msgstr "Gitweb" #: plinth/modules/gitweb/__init__.py:57 msgid "Simple Git Hosting" -msgstr "" +msgstr "Basit Git Barındırma" -#: plinth/modules/gitweb/forms.py:44 -#, fuzzy -#| msgid "Invalid hostname" +#: plinth/modules/gitweb/forms.py:59 msgid "Invalid repository URL." -msgstr "Geçersiz makine ismi" +msgstr "Geçersiz depo URL'si." -#: plinth/modules/gitweb/forms.py:54 -#, fuzzy -#| msgid "Invalid hostname" +#: plinth/modules/gitweb/forms.py:69 msgid "Invalid repository name." -msgstr "Geçersiz makine ismi" - -#: plinth/modules/gitweb/forms.py:62 -msgid "Name of a new repository or URL to import an existing repository." -msgstr "" - -#: plinth/modules/gitweb/forms.py:68 -#, fuzzy -#| msgid "Create new repository" -msgid "Description of the repository" -msgstr "Yeni depo oluştur" - -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 -msgid "Optional, for displaying on Gitweb." -msgstr "" - -#: plinth/modules/gitweb/forms.py:71 -#, fuzzy -#| msgid "Repository removed." -msgid "Repository's owner name" -msgstr "Depo kaldırıldı." - -#: plinth/modules/gitweb/forms.py:76 -#, fuzzy -#| msgid "Create Repository" -msgid "Private repository" -msgstr "Depo oluştur" +msgstr "Geçersiz depo adı." #: plinth/modules/gitweb/forms.py:77 -msgid "Allow only authorized users to access this repository." +msgid "Name of a new repository or URL to import an existing repository." msgstr "" +"Varolan bir depoyu içe aktarmak için yeni bir deponun veya URL'nin adı." -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 -#, fuzzy -#| msgid "This service already exists" +#: plinth/modules/gitweb/forms.py:83 +msgid "Description of the repository" +msgstr "Deponun açıklaması" + +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 +msgid "Optional, for displaying on Gitweb." +msgstr "Gitweb'de görüntülemek için isteğe bağlı." + +#: plinth/modules/gitweb/forms.py:86 +msgid "Repository's owner name" +msgstr "Depo sahibinin adı" + +#: plinth/modules/gitweb/forms.py:91 +msgid "Private repository" +msgstr "Özel depo" + +#: plinth/modules/gitweb/forms.py:92 +msgid "Allow only authorized users to access this repository." +msgstr "Sadece yetkili kullanıcıların bu arşive erişmesine izin verir." + +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." -msgstr "Bu servis zaten mevcuttur" +msgstr "Bu ada sahip bir depo zaten var." -#: plinth/modules/gitweb/forms.py:111 -#, fuzzy -#| msgid "Create new repository" +#: plinth/modules/gitweb/forms.py:126 msgid "Name of the repository" -msgstr "Yeni depo oluştur" +msgstr "Deponun adı" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." +msgstr "Bir depoyu benzersiz şekilde tanımlayan alfa sayısal bir dizgi." + +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default Skin" +msgid "Default branch" +msgstr "Varsayılan Kaplama" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." msgstr "" #: plinth/modules/gitweb/manifest.py:21 msgid "Git" -msgstr "" +msgstr "Git" #: plinth/modules/gitweb/templates/gitweb_configure.html:31 -#, fuzzy -#| msgid "Create Repository" msgid "Manage Repositories" -msgstr "Depo oluştur" +msgstr "Depoları Yönet" #: plinth/modules/gitweb/templates/gitweb_configure.html:35 #: plinth/modules/gitweb/templates/gitweb_configure.html:37 -#, fuzzy -#| msgid "Create Repository" msgid "Create repository" msgstr "Depo oluştur" #: plinth/modules/gitweb/templates/gitweb_configure.html:44 -#, fuzzy -#| msgid "Tor relay port available" msgid "No repositories available." -msgstr "Tor geçit portu mevcuttur" +msgstr "Kullanılabilir depolar yok." #: plinth/modules/gitweb/templates/gitweb_configure.html:52 -#, fuzzy, python-format -#| msgid "Delete user %(username)s" +#, python-format msgid "Delete repository %(repo.name)s" -msgstr "%(username)s kullanıcısını sil" +msgstr "%(repo.name)s deposunu sil" #: plinth/modules/gitweb/templates/gitweb_configure.html:68 msgid "Cloning…" -msgstr "" +msgstr "Çoğaltılıyor…" #: plinth/modules/gitweb/templates/gitweb_configure.html:73 -#, fuzzy, python-format -#| msgid "Go to site %(site)s" +#, python-format msgid "Go to repository %(repo.name)s" -msgstr "%(site)s sitesine git" +msgstr "%(repo.name)s deposuna git" #: plinth/modules/gitweb/templates/gitweb_delete.html:12 -#, fuzzy, python-format -#| msgid "Delete Wiki or Blog %(name)s" +#, python-format msgid "Delete Git Repository %(name)s" -msgstr "%(name)s isimli Viki ya da Blogu sil" +msgstr "%(name)s Git Deposunu Sil" #: plinth/modules/gitweb/templates/gitweb_delete.html:18 -#, fuzzy -#| msgid "Delete this snapshot permanently?" msgid "Delete this repository permanently?" -msgstr "Bu anlık daimi olarak silinsin mi?" +msgstr "Bu depo kalıcı olarak silinsin mi?" #: plinth/modules/gitweb/templates/gitweb_delete.html:27 #: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:29 #, python-format msgid "Delete %(name)s" -msgstr "%(name)s unsurunu sil" +msgstr "%(name)s öğesini sil" #: plinth/modules/gitweb/views.py:45 -#, fuzzy -#| msgid "Repository removed." msgid "Repository created." -msgstr "Depo kaldırıldı." +msgstr "Depo oluşturuldu." #: plinth/modules/gitweb/views.py:69 -#, fuzzy -#| msgid "An error occurred during configuration." msgid "An error occurred while creating the repository." -msgstr "Yapılandırma sırasında bir hata meydana geldi." +msgstr "Depo oluşturulurken bir hata meydana geldi." #: plinth/modules/gitweb/views.py:84 -#, fuzzy -#| msgid "Repository removed." msgid "Repository edited." -msgstr "Depo kaldırıldı." +msgstr "Depo düzenlendi." #: plinth/modules/gitweb/views.py:89 -#, fuzzy -#| msgid "Create Repository" msgid "Edit repository" -msgstr "Depo oluştur" - -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "Yapılandırma sırasında bir hata meydana geldi." +msgstr "Depoyu düzenle" #: plinth/modules/gitweb/views.py:138 #, python-brace-format @@ -1941,36 +2043,36 @@ msgstr "{name} silindi." msgid "Could not delete {name}: {error}" msgstr "{name} silinemedi: {error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" -msgstr "Belgelendirme" +msgstr "Belgeler" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" -msgstr "Kullanım Kılavuzu" +msgstr "Kılavuz" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" -msgstr "" +msgstr "Destek Al" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" -msgstr "" +msgstr "Geri Bildirim Gönder" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" -msgstr "" +msgstr "Katkıda Bulun" #: plinth/modules/help/templates/help_about.html:17 #, python-format @@ -1983,13 +2085,13 @@ msgid "" "and a Tor relay, on a device that can replace your Wi-Fi router, so that " "your data stays with you." msgstr "" -"%(box_name)s, özel iletişimler için özgür yazılım çalıştıran kişisel " -"sunucular tasarlayan, geliştiren ve kullanımını teşvik eden bir topluluk " -"projesidir. Veri güvenliğini ve gizliliği koruyan şartlarda İnternet'e " -"bağlantıda arayüz görevi görecek bir ağ cihazıdır. Verilerinizin sizinle " -"kalması için Wi-Fi yönlendiricisinin yerine geçebilecek bir cihazda blog, " -"viki, ağ sitesi, sosyal ağ, e-posta, vekil sunucu ve Tor aktarıcısı gibi " -"uygulamalar barındırır." +"%(box_name)s, özel, kişisel iletişim için ücretsiz yazılım çalıştıran " +"kişisel sunucuları geliştirmek, tasarlamak ve tanıtmak için bir topluluk " +"projesidir. Bu, korunan gizlilik ve veri güvenliği koşulları altında " +"Internet tarafıyla arayüz oluşturmayı sağlamak için tasarlanmış bir ağ " +"cihazıdır. Kablosuz (Wi-Fi) yönlendiricinizin yerini alabilen, blog, viki, " +"web sitesi, sosyal ağ, e-posta, web proksi ve Tor aktarımı gibi uygulamaları " +"barından bir cihaz, böylece verileriniz hep yanınızda kalır." #: plinth/modules/help/templates/help_about.html:30 msgid "" @@ -2000,12 +2102,12 @@ msgid "" "giving back power to the users over their networks and machines, we are " "returning the Internet to its intended peer-to-peer architecture." msgstr "" -"Ağ kullanımımızı sıklıkla menfaatlerimizi gözetmeyenlerin aracılığıyla " -"yaptığımız bir dünyada yaşıyoruz. Merkezi bir servise dayanmayan yazılım " -"geliştirerek kontrol ve gizliliğimizi tekrar kazanabiliriz. Verilerimizi " -"evlerimizde tutarak bu veriler üzerinde yararlı kanuni korumalar kazanırız. " -"Ağları ve makinelerinin kontrolünü kullanıcılara tekrar kazandırarak " -"İnternet'i amaçlanan eşten eşe mimarisine geri getiriyoruz." +"Ağı kullanımımıza genellikle en iyi çıkarlarımızı tam olarak düşünmeyenlerin " +"aracılık ettiği bir dünyada yaşıyoruz. Merkezi bir hizmete dayanmayan " +"yazılımlar oluşturarak denetimi ve gizliliği yeniden kazanabiliriz. " +"Verilerimizi evlerimizde saklayarak, bunun üzerinden faydalı yasal korumalar " +"elde ederiz. Kullanıcılara ağları ve makineleri üzerinden gücü geri vererek, " +"Internet'i amaçlanan kişiden-kişiye mimarisine döndürüyoruz." #: plinth/modules/help/templates/help_about.html:43 #, python-format @@ -2014,9 +2116,9 @@ msgid "" "services; %(box_name)s aims to bring them all together in a convenient " "package." msgstr "" -"Eşten eşe, dağıtılmış servisler geleceği için çalışan çeşitli projeler " -"bulunmaktadır: %(box_name)s kutusunun amacı onların tümünü kişisel bir " -"sunucuda bir araya getirmektir." +"Dağıtılmış hizmetlerin geleceğini gerçekleştirmek için çalışan bir dizi " +"proje vardır; %(box_name)s hepsini uygun bir pakette bir araya getirmeyi " +"amaçlamaktadır." #: plinth/modules/help/templates/help_about.html:51 #, python-format @@ -2025,54 +2127,36 @@ msgid "" "\"https://wiki.debian.org/FreedomBox\">%(box_name)s Wiki." msgstr "" "%(box_name)s projesi hakkında daha fazla bilgi için %(box_name)s Vikisini okuyunuz." +"debian.org/FreedomBox\">%(box_name)s Viki'ye bakın." #: plinth/modules/help/templates/help_about.html:60 msgid "Learn more »" msgstr "Daha fazla bilgi edinin »" #: plinth/modules/help/templates/help_about.html:63 -#, fuzzy, python-format -#| msgid "You are running %(os_release)s and Plinth version %(version)s." +#, python-format msgid "You are running %(os_release)s and %(box_name)s version %(version)s." -msgstr "" -"%(os_release)s ve Plinth yazılımının %(version)s sürümünü kullanmaktasınız." +msgstr "%(os_release)s ve %(box_name)s %(version)s sürümünü çalıştırıyorsunuz." #: plinth/modules/help/templates/help_about.html:68 -#, fuzzy, python-format -#| msgid "There is a new Plinth version available." +#, python-format msgid "There is a new %(box_name)s version available." -msgstr "Yeni bir Plinth sürüm mevcuttur." +msgstr "Yeni bir %(box_name)s sürümü mevcut." #: plinth/modules/help/templates/help_about.html:72 -#, fuzzy, python-format -#| msgid "Plinth is up to date." +#, python-format msgid "%(box_name)s is up to date." -msgstr "Plinth günceldir." - -#: plinth/modules/help/templates/help_about.html:79 -#, fuzzy -#| msgid "Security" -msgid "Security Notice" -msgstr "Güvenlik" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" +msgstr "%(box_name)s güncel." #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format msgid "%(box_name)s Setup" -msgstr "%(box_name)s Kurulumu" +msgstr "%(box_name)s Ayarlaması" #: plinth/modules/help/templates/help_contribute.html:12 msgid "The FreedomBox project welcomes contributions of all kinds." -msgstr "" +msgstr "FreedomBox projesi her türlü katkıyı memnuniyetle karşılar." #: plinth/modules/help/templates/help_contribute.html:18 msgid "" @@ -2082,6 +2166,11 @@ msgid "" "into your language, hosting hackathons or install fests, and by spreading " "the word." msgstr "" +"Kod yazarak, deneyerek ve hataları bildirerek, yeni kullanım durumları ve " +"uygulamaları tartışarak, logolar ve sanat eserleri tasarlayarak, diğer " +"kullanıcılara destek sağlayarak, FreedomBox ve uygulamalarını dilinize " +"çevirerek, hackathons barındırarak veya fests yükleyerek ve bunları " +"duyurarak katkıda bulunabilirsiniz." #: plinth/modules/help/templates/help_contribute.html:28 msgid "" @@ -2094,18 +2183,25 @@ msgid "" "throughout the world. The FreedomBox Foundation would not exist without its " "supporters." msgstr "" +"Ayrıca kar amacı gütmeyen FreedomBox Vakfı'na bağış yaparak projeye finansal olarak " +"yardımcı olabilirsiniz. 2011 yılında kurulan FreedomBox Vakfı, FreedomBox'ı " +"desteklemek için var olan New York City merkezli 501(c)(3) durumuna sahip " +"kar amacı gütmeyen bir kuruluştur. Proje için teknik altyapı ve hukuki " +"hizmetler sağlar, ortaklıklar kurar ve dünya çapında FreedomBox savunuculuğu " +"yapar. FreedomBox Vakfı, destekçileri olmadan var olamaz." #: plinth/modules/help/templates/help_contribute.html:42 #: plinth/modules/power/templates/power_restart.html:27 #: plinth/modules/power/templates/power_shutdown.html:26 #: plinth/templates/app-header.html:53 msgid "Learn more..." -msgstr "Daha fazla bilgi edin..." +msgstr "Daha fazla bilgi edinin..." #: plinth/modules/help/templates/help_feedback.html:12 #, python-format msgid "Your feedback will help us improve %(box_name)s!" -msgstr "" +msgstr "Geri bildiriminiz %(box_name)s'ı iyileştirmemize yardımcı olacak!" #: plinth/modules/help/templates/help_feedback.html:18 msgid "" @@ -2113,6 +2209,9 @@ msgid "" "improve them on our discussion forum." msgstr "" +"Eksik özellikler, en sevdiğiniz uygulamalar ve bunları tartışma forumumuzda nasıl " +"iyileştirebileceğimiz hakkında bize bilgi verin." #: plinth/modules/help/templates/help_feedback.html:26 msgid "" @@ -2121,10 +2220,15 @@ msgid "" "tracker to let our developers know. To report, first check if the issue " "is already reported and then use the \"New issue\" button." msgstr "" +"Herhangi bir hata veya sorun bulursanız, geliştiricilerimize bildirmek için " +"lütfen sorun izleyiciyi kullanın. Bildirmek için önce " +"sorunun önceden bildirilip bildirilmediğini gözden geçirin ve ardından " +"\"Yeni sorun\" düğmesini kullanın." #: plinth/modules/help/templates/help_feedback.html:36 msgid "Thank you!" -msgstr "" +msgstr "Teşekkür ederiz!" #: plinth/modules/help/templates/help_index.html:12 #: plinth/templates/help-menu.html:8 plinth/templates/help-menu.html:13 @@ -2137,8 +2241,8 @@ msgid "" "The %(box_name)s Manual is the best place to " "start for information regarding %(box_name)s." msgstr "" -"%(box_name)s. hakkında daha fazla bilgi edinmeye başlamak için en uygun yer " -"%(box_name)s Kullanım Kılavuzudur." +"%(box_name)s Kılavuzu, %(box_name)s ile " +"ilgili bilgilerle başlamak için en iyi yerdir." #: plinth/modules/help/templates/help_index.html:23 #, python-format @@ -2146,8 +2250,8 @@ msgid "" " " "%(box_name)s project wiki contains further information." msgstr "" -" " -"%(box_name)s proje vikisi daha fazla bilgi içerir." +"%(box_name)s " +"proje vikisi daha fazla bilgi içerir." #: plinth/modules/help/templates/help_index.html:30 #, python-format @@ -2157,11 +2261,10 @@ msgid "" "\"> mailing list. The list archives also contain information about " "problems faced by other users and possible solutions." msgstr "" -"%(box_name)s topluluğundan yardım istiyorsanız, sorularınızı e-" -"posta listesine yollayabilirsiniz. Liste arşivleri diğer " -"kullanıcıların karşılaştıkları sorunlar ve mümkün çözümler hakkında da bilgi " -"içerir." +"%(box_name)s topluluğundan yardım istemek için sorgular posta " +"listesine gönderilebilir. Liste arşivleri ayrıca diğer kullanıcıların " +"karşılaştığı sorunlar ve olası çözümler hakkında bilgiler içerir." #: plinth/modules/help/templates/help_index.html:40 #, python-format @@ -2171,16 +2274,14 @@ msgid "" "oftc.net/?randomnick=1&channels=freedombox&prompt=1\"> #freedombox " "channel using the IRC web interface." msgstr "" -"Birçok %(box_name)s iştirakçisi ve kullancısı irc.oftc.net IRC ağında da " -"bulunabilir. IRC web arayüzünü kullanarak #freedombox kanalına " -"katılın ve yardım talebinde bulunun." +"Birçok %(box_name)s katılımcısı ve kullanıcısı da irc.oftc.net IRC ağında " +"olabilir. IRC web arayüzünü kullanarak #freedombox kanalına katılın " +"ve yardım isteyin." #: plinth/modules/help/templates/help_manual.html:25 -#, fuzzy -#| msgid "downloading" msgid "Download as PDF" -msgstr "indiriliyor" +msgstr "PDF olarak indir" #: plinth/modules/help/templates/help_support.html:12 #, python-format @@ -2189,12 +2290,17 @@ msgid "" "using %(box_name)s, you can ask for help from our community of users and " "contributors." msgstr "" +"Eğer bir şeyin yapılmasında yardıma ihtiyacınız varsa veya %(box_name)s " +"kullanırken sorunlarla karşılaşıyorsanız, kullanıcı ve katkıda bulunanlardan " +"oluşan topluluğumuzdan yardım isteyebilirsiniz." #: plinth/modules/help/templates/help_support.html:20 msgid "" "Search for past discussions or post a new query on our discussion forum." msgstr "" +"Tartışma " +"forumumuzda geçmiş tartışmaları arayın veya yeni bir soru gönderin." #: plinth/modules/help/templates/help_support.html:27 msgid "" @@ -2203,47 +2309,46 @@ msgid "" "Or send an email to our mailing list." msgstr "" +"Bizimle IRC ve Matrix kanallarımızda da sohbet edebilirsiniz (köprülü):

      " +"
    • #freedombox on irc.oftc.net
    • #freedombox: matrix.org
    " +"Veya posta " +"listemize bir e-posta gönderin." #: plinth/modules/help/templates/statuslog.html:10 msgid "Status Log" -msgstr "Durum Kütüğü" +msgstr "Durum Günlüğü" #: plinth/modules/help/templates/statuslog.html:13 -#, fuzzy, python-format -#| msgid "" -#| "These are the last %(num_lines)s lines of the status log for this web " -#| "interface. If you want to report a bug, please use the bug tracker and attach this " -#| "status log to the bug report." +#, python-format msgid "" "These are the last %(num_lines)s lines of the status log for this web " "interface. If you want to report a bug, please use the bug tracker and " "attach this status log to the bug report." msgstr "" -"Bunlar, bu ağ arayüzü için durum kütüğünün son %(num_lines)s satırıdır. Bir " -"hata raporu göndermek istiyorsanız lütfen hata izleyicisini kullanınız ve bu durum " -"kütüğünü ekleyiniz." +"Bunlar, bu web arayüzü için durum günlüğünün son %(num_lines)s satırıdır. " +"Eğer bir hata bildirmek istiyorsanız, lütfen hata izleyiciyi kullanın ve bu " +"durum günlüğünü hata raporuna ekleyin." #: plinth/modules/help/templates/statuslog.html:24 msgid "" "Please remove any passwords or other personal information from the log " "before submitting the bug report." msgstr "" -"Hata raporunu göndermeden önce lütfen kütükten parolaları ve diğer kişisel " -"verileri kaldırınız." +"Lütfen hata raporunu göndermeden önce tüm parolaları veya diğer kişisel " +"bilgileri günlükten kaldırın." -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" -msgstr "Belgelendirme ve SSS" +msgstr "Belgeler ve SSS" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" -msgstr "{box_name} hakkında" +msgstr "{box_name} Hakkında" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} Kılavuzu" @@ -2255,48 +2360,45 @@ msgid "" "anonymity by sending encrypted traffic through a volunteer-run network " "distributed around the world." msgstr "" +"Görünmez Internet Projesi, iletişimi sansür ve gözetimden korumayı amaçlayan " +"isimsiz bir ağ katmanıdır. I2P, dünyanın dört bir yanına dağılmış gönüllü " +"olarak işletilen bir ağ aracılığıyla şifreli trafik göndererek isim " +"gizliliği sağlar." #: plinth/modules/i2p/__init__.py:32 -#, fuzzy -#| msgid "" -#| "For more information about the %(box_name)s project, see the %(box_name)s Wiki." msgid "" "Find more information about I2P on their project homepage." msgstr "" -"%(box_name)s projesi hakkında daha fazla bilgi için %(box_name)s Vikisini okuyunuz." +"I2P hakkında daha fazla bilgiyi proje ana sayfasında bulabilirsiniz." #: plinth/modules/i2p/__init__.py:34 msgid "" "The first visit to the provided web interface will initiate the " "configuration process." msgstr "" +"Sağlanan web arayüzüne ilk ziyaret, yapılandırma işlemini başlatacaktır." -#: plinth/modules/i2p/__init__.py:62 -#, fuzzy -#| msgid "Enable application" +#: plinth/modules/i2p/__init__.py:56 msgid "Manage I2P application" -msgstr "Uygulamayı etkinleştir" +msgstr "I2P uygulamasını yönet" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "I2P" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" -msgstr "Anonimlik Ağı" +msgstr "İsim Gizliliği Ağı" -#: plinth/modules/i2p/__init__.py:88 -#, fuzzy -#| msgid "Web Proxy" +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" -msgstr "Ağ Vekil Sunucusu" +msgstr "I2P Proksi" #: plinth/modules/i2p/templates/i2p.html:12 msgid "I2P Proxies and Tunnels" -msgstr "" +msgstr "I2P Proksileri ve Tünelleri" #: plinth/modules/i2p/templates/i2p.html:21 #: plinth/modules/i2p/templates/i2p.html:34 plinth/templates/clients.html:28 @@ -2305,7 +2407,7 @@ msgstr "Başlat" #: plinth/modules/i2p/templates/i2p.html:25 msgid "Anonymous Torrents" -msgstr "" +msgstr "İsimsiz Torrent'ler" #: plinth/modules/i2p/views.py:16 msgid "" @@ -2313,12 +2415,18 @@ msgid "" "For this, your browser, preferably a Tor Browser, needs to be configured for " "a proxy." msgstr "" +"I2P, Interne'te ve gizli hizmetlerde (eep siteleri) isimsiz olarak " +"gezinmenize izin verir. Bunun için tarayıcınızın, tercihen bir Tor " +"Tarayıcı'nın bir proksi için yapılandırılması gerekir." #: plinth/modules/i2p/views.py:19 msgid "" "By default HTTP, HTTPS and IRC proxies are available. Additional proxies and " "tunnels may be configured using the tunnel configuration interface." msgstr "" +"Varsayılan olarak HTTP, HTTPS ve IRC proksileri mevcuttur. Tünel " +"yapılandırma arayüzünü kullanılarak ek proksiler ve tüneller " +"yapılandırılabilir." #: plinth/modules/i2p/views.py:24 msgid "" @@ -2326,44 +2434,33 @@ msgid "" "network. Download files by adding torrents or create a new torrent to share " "a file." msgstr "" +"I2P, dosyaları kişiden-kişiye bir ağda isimsiz olarak indirmek için bir " +"uygulama sağlar. Dosyaları torrent'leri ekleyerek indirin veya bir dosyayı " +"paylaşmak için yeni bir torrent oluşturun." #: plinth/modules/ikiwiki/__init__.py:27 -#, fuzzy -#| msgid "" -#| "ikiwiki is a simple wiki and blog application. It supports several " -#| "lightweight markup languages, including Markdown, and common blogging " -#| "functionality such as comments and RSS feeds. When enabled, the blogs and " -#| "wikis will be available at /ikiwiki (once " -#| "created)." msgid "" "ikiwiki is a simple wiki and blog application. It supports several " "lightweight markup languages, including Markdown, and common blogging " "functionality such as comments and RSS feeds." msgstr "" -"ikiwiki sade bir blog ve viki uygulamasıdır. Birçok hafif işaretleme " -"dillerini destekler ki buna Markdown dahildir, ayrıca RSS beslemeleri ve " -"yorumlar gibi olağan günlük işlevleri de desteklenir. Etkinleştirildiğinde, " -"bloglar ve vikiler (oluşturulduklarında) /ikiwiki " -"adresinde erişilebilir olacaklardır." +"ikiwiki basit bir viki ve blog uygulamasıdır. Markdown dahil olmak üzere " +"birkaç hafif biçimlendirme dilini, yorumlar ve RSS beslemeleri gibi ortak " +"blog oluşturma işlevselliğini destekler." #: plinth/modules/ikiwiki/__init__.py:31 -#, fuzzy, python-brace-format -#| msgid "" -#| "Only {box_name} users in the admin group can create and " -#| "manage blogs and wikis, but any user in the wiki group can " -#| "edit existing ones. In the User " -#| "Configuration you can change these permissions or add new users." +#, python-brace-format msgid "" "Only {box_name} users in the admin group can create and " "manage blogs and wikis, but any user in the wiki group can " "edit existing ones. In the User " "Configuration you can change these permissions or add new users." msgstr "" -"Blogları ve vikileri sadece yönetici (admin) grubundaki {box_name} " -"kullanıcıları oluşturabilir ve yönetebilir, ancak wiki " +"Sadece admin grubundaki {box_name} kullanıcıları, blog'ları ve " +"viki'leri oluşturabilir ve yönetebilir, ancak viki " "grubundaki herhangi bir kullanıcı mevcut olanları düzenleyebilir. Kullanıcı Yapılandırması bölümünde bu " -"izinleri değiştirebilir ya da yeni kullanıcı ekleyebilirsiniz." +"href=\"{users_url}\">Kullanıcı Yapılandırmasında bu izinleri " +"değiştirebilir veya yeni kullanıcılar ekleyebilirsiniz." #: plinth/modules/ikiwiki/__init__.py:52 plinth/modules/ikiwiki/manifest.py:9 msgid "ikiwiki" @@ -2379,7 +2476,7 @@ msgstr "Viki uygulamalarını görüntüle ve düzenle" #: plinth/modules/ikiwiki/forms.py:17 msgid "Admin Account Name" -msgstr "Yönetici Hesap İsmi" +msgstr "Yönetici Hesap Adı" #: plinth/modules/ikiwiki/forms.py:19 msgid "Admin Account Password" @@ -2387,17 +2484,17 @@ msgstr "Yönetici Hesap Parolası" #: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:12 msgid "Manage Wikis and Blogs" -msgstr "Viki ve Blogları Yönet" +msgstr "Viki'leri ve Blog'ları Yönet" #: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:16 #: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:18 #: plinth/modules/ikiwiki/templates/ikiwiki_create.html:10 msgid "Create Wiki or Blog" -msgstr "Viki ya da Blog oluştur" +msgstr "Viki veya Blog Oluştur" #: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:25 msgid "No wikis or blogs available." -msgstr "Hiçbir viki ya da blog mevcut değil." +msgstr "Mevcut viki'ler veya blog'lar yok." #: plinth/modules/ikiwiki/templates/ikiwiki_configure.html:33 #, python-format @@ -2412,21 +2509,20 @@ msgstr "%(site)s sitesine git" #: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:12 #, python-format msgid "Delete Wiki or Blog %(name)s" -msgstr "%(name)s isimli Viki ya da Blogu sil" +msgstr "%(name)s Viki veya Blog'unu sil" #: plinth/modules/ikiwiki/templates/ikiwiki_delete.html:18 msgid "" "This action will remove all the posts, pages and comments including revision " "history. Delete this wiki or blog permanently?" msgstr "" -"Bu eylem revizyon geçmişi de dahil olmak üzere tüm mesajları, sayfaları ve " -"yorumları silecektir. Bu viki ya da blogu daimi olarak silmek istiyor " -"musunuz?" +"Bu eylem düzeltim geçmişi dahil olmak üzere tüm yazıları, sayfaları ve " +"yorumları silecek. Bu viki ya da blog kalıcı olarak silinsin mi?" #: plinth/modules/ikiwiki/views.py:70 #, python-brace-format msgid "Created wiki {name}." -msgstr "{name} isimli viki oluşturuldu." +msgstr "{name} viki oluşturuldu." #: plinth/modules/ikiwiki/views.py:73 #, python-brace-format @@ -2436,7 +2532,7 @@ msgstr "Viki oluşturulamadı: {error}" #: plinth/modules/ikiwiki/views.py:83 #, python-brace-format msgid "Created blog {name}." -msgstr "{name} isimli blog oluşturuldu." +msgstr "{name} blog oluşturuldu." #: plinth/modules/ikiwiki/views.py:86 #, python-brace-format @@ -2444,21 +2540,19 @@ msgid "Could not create blog: {error}" msgstr "Blog oluşturulamadı: {error}" #: plinth/modules/ikiwiki/views.py:101 -#, fuzzy, python-brace-format -#| msgid "{name} deleted." +#, python-brace-format msgid "{title} deleted." -msgstr "{name} silindi." +msgstr "{title} silindi." #: plinth/modules/ikiwiki/views.py:105 -#, fuzzy, python-brace-format -#| msgid "Could not delete {name}: {error}" +#, python-brace-format msgid "Could not delete {title}: {error}" -msgstr "{name} silinemedi: {error}" +msgstr "{title} silinemedi: {error}" #: plinth/modules/infinoted/__init__.py:25 msgid "infinoted is a server for Gobby, a collaborative text editor." msgstr "" -"infinoted, işbirliğine izin veren bir metin düzenleyici olan Gobby için bir " +"infinoted, işbirliğine dayalı bir metin düzenleyici olan Gobby için bir " "sunucudur." #: plinth/modules/infinoted/__init__.py:27 @@ -2468,15 +2562,15 @@ msgid "" "client and install it. Then start Gobby and select \"Connect to Server\" and " "enter your {box_name}'s domain name." msgstr "" -"Onu kullanmak için Gobby'i masaüstü " -"istemcisini indirip kurun. Ardından Gobby'yi başlatın, \"Sunucuya Bağlan" -"\" seçeneğini seçin ve {box_name} kutunuzun alan adını girin." +"Kullanmak için Gobby masaüstü " +"istemcisini indirin ve yükleyin. Ardından Gobby'yi başlatın, \"Sunucuya " +"Bağlan\" seçeneğini seçin ve {box_name} cihazınızın etki alanı adını girin." -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "infinoted" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "Gobby Sunucusu" @@ -2486,7 +2580,7 @@ msgstr "Gobby" #: plinth/modules/infinoted/manifest.py:14 msgid "Gobby is a collaborative text editor" -msgstr "Gobby, işbirliğine imkân sağlayan bir metin düzenleyicisidir" +msgstr "Gobby, işbirliğine dayalı bir metin düzenleyicisidir" #: plinth/modules/infinoted/manifest.py:17 #, python-brace-format @@ -2495,14 +2589,14 @@ msgid "" "domain name." msgstr "" "Gobby'yi başlatın, \"Sunucuya Bağlan\" seçeneğini seçin ve {box_name} " -"kutunuzun alan adını girin." +"cihazınızın etki alanı adını girin." #: plinth/modules/jsxc/__init__.py:23 msgid "" "JSXC is a web client for XMPP. Typically it is used with an XMPP server " "running locally." msgstr "" -"JSXC, XMPP için bir web istemcisidir. Tipik olarak yerel şekilde çalışan bir " +"JSXC, XMPP için bir web istemcisidir. Genellikle, yerel olarak çalışan bir " "XMPP sunucusuyla kullanılır." #: plinth/modules/jsxc/__init__.py:43 plinth/modules/jsxc/manifest.py:10 @@ -2527,12 +2621,12 @@ msgid "" "domain. It does so by proving itself to be the owner of a domain to Let's " "Encrypt, a certificate authority (CA)." msgstr "" -"Sayısal sertifikalar kullanıcıların ağ servislerinin kimliklerini " -"doğrulamalarına ve onlarla güvenli bir şekilde iletişim kurmalarına imkân " -"verir. {box_name} otomatik olarak her mevcut alan için sayısal sertifika " -"edinebilir ve bunları kurabilir. Bunu kendisinin bir alanın sahibi olduğunu " -"bir sertifika otoritesi (Certificate Authority, CA) olan Let's Encrypt'e " -"ispatlayarak yapar." +"Dijital sertifika, bir web hizmeti kullanıcılarının hizmetin kimliğini " +"doğrulamasına ve hizmetle güvenli bir şekilde iletişim kurmasını sağlar. " +"{box_name}, kullanılabilir her etki alanı için dijital sertifikaları " +"otomatik olarak alabilir ve ayarlayabilir. Bunu, bir sertifika yetkilisi " +"(CA) olan Let's Encrypt'a bir etki alanının sahibi olduğunu kanıtlayarak " +"yapar." #: plinth/modules/letsencrypt/__init__.py:41 msgid "" @@ -2541,11 +2635,10 @@ msgid "" "read and agree with the Let's Encrypt Subscriber Agreement before using this service." msgstr "" -"Let's Encrypt, Internet Security Research Group (ISRG) tarafından işletilen, " -"kamunun yararına çalışan ücretsiz, otomatik ve açık bir sertifika " -"otoritesidir. Bu servisi kullanmadan önce lütfen Let's Encrypt Abone Sözleşmesini okuyup " -"kabul edin." +"Let's Encrypt, Internet Güvenliği Araştırma Grubu (ISRG) tarafından kamu " +"yararına çalıştırılan ücretsiz, otomatik ve açık bir sertifika yetkilisidir. " +"Lütfen bu hizmeti kullanmadan önce Let's Encrypt Abone Sözleşmesini okuyun ve kabul edin." #: plinth/modules/letsencrypt/__init__.py:65 msgid "Let's Encrypt" @@ -2557,7 +2650,7 @@ msgstr "Sertifikalar" #: plinth/modules/letsencrypt/templates/letsencrypt.html:29 msgid "Domain" -msgstr "Alan" +msgstr "Etki Alanı" #: plinth/modules/letsencrypt/templates/letsencrypt.html:30 msgid "Certificate Status" @@ -2565,7 +2658,7 @@ msgstr "Sertifika Durumu" #: plinth/modules/letsencrypt/templates/letsencrypt.html:31 msgid "Website Security" -msgstr "Site Güvenliği" +msgstr "Web Sitesi Güvenliği" #: plinth/modules/letsencrypt/templates/letsencrypt.html:32 #: plinth/modules/storage/templates/storage.html:30 @@ -2575,7 +2668,7 @@ msgstr "Eylemler" #: plinth/modules/letsencrypt/templates/letsencrypt.html:42 #, python-format msgid "Valid, expires on %(expiry_date)s" -msgstr "Geçerli, şu tarihte sona eriyor: %(expiry_date)s" +msgstr "Geçerli, %(expiry_date)s tarihinde sona eriyor" #: plinth/modules/letsencrypt/templates/letsencrypt.html:49 msgid "Revoked" @@ -2584,16 +2677,16 @@ msgstr "İptal edilmiş" #: plinth/modules/letsencrypt/templates/letsencrypt.html:53 #, python-format msgid "Expired on %(expiry_date)s" -msgstr "%(expiry_date)s tarihinde süresi dolmuş" +msgstr "%(expiry_date)s tarihinde süresi doldu" #: plinth/modules/letsencrypt/templates/letsencrypt.html:57 msgid "Invalid test certificate" -msgstr "Geçersiz test sertifikası" +msgstr "Geçersiz deneme sertifikası" #: plinth/modules/letsencrypt/templates/letsencrypt.html:61 #, python-format msgid "Invalid (%(reason)s)" -msgstr "Geçersiz %(reason)s" +msgstr "Geçersiz (%(reason)s)" #: plinth/modules/letsencrypt/templates/letsencrypt.html:68 msgid "No certificate" @@ -2601,17 +2694,7 @@ msgstr "Sertifika yok" #: plinth/modules/letsencrypt/templates/letsencrypt.html:85 msgid "Re-obtain" -msgstr "Tekrar edin" - -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "Sil" +msgstr "Yeniden edin" #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" @@ -2622,16 +2705,13 @@ msgid "Obtain" msgstr "Edin" #: plinth/modules/letsencrypt/templates/letsencrypt.html:117 -#, fuzzy, python-format -#| msgid "" -#| "No domains have been configured. Configure domains to be able to obtain " -#| "certificates for them." +#, python-format msgid "" "No domains have been configured. Configure " "domains to be able to obtain certificates for them." msgstr "" -"Hiçbir alan yapılandırılmamış. Onlardan sertifika edinmek için alan " -"yapılandırın." +"Hiçbir etki alanı yapılandırılmadı. Bunlar için sertifika alabilmek amacıyla " +"etki alanlarını yapılandırın." #: plinth/modules/letsencrypt/views.py:41 #, python-brace-format @@ -2639,38 +2719,37 @@ msgid "" "Certificate successfully revoked for domain {domain}.This may take a few " "moments to take effect." msgstr "" -"{domain} alanı için sertifika başarılı bir şekilde iptal edildi. Bu işlemin " -"başlaması biraz zaman alabilir." +"{domain} etki alanı için sertifika başarılı olarak iptal edildi. Bunun " +"etkili olması birkaç dakika alabilir." #: plinth/modules/letsencrypt/views.py:47 #, python-brace-format msgid "Failed to revoke certificate for domain {domain}: {error}" -msgstr "" -"{domain} alanı için sertifikanın iptal edilmesi başarısız oldu: {error}" +msgstr "{domain} etki alanı için sertifika iptal etme başarısız oldu: {error}" #: plinth/modules/letsencrypt/views.py:60 #: plinth/modules/letsencrypt/views.py:77 #, python-brace-format msgid "Certificate successfully obtained for domain {domain}" -msgstr "{domain} alanı için sertifika başarılı bir şekilde edinildi" +msgstr "{domain} etki alanı için sertifika başarılı olarak elde edildi" #: plinth/modules/letsencrypt/views.py:65 #: plinth/modules/letsencrypt/views.py:82 #, python-brace-format msgid "Failed to obtain certificate for domain {domain}: {error}" -msgstr "{domain} alanı için sertifika edinilemedi: {error}" +msgstr "{domain} etki alanı için sertifika elde etme başarısız oldu: {error}" #: plinth/modules/letsencrypt/views.py:94 #, python-brace-format msgid "Certificate successfully deleted for domain {domain}" -msgstr "{domain} alanı için sertifika başarılı bir şekilde silindi" +msgstr "{domain} etki alanı için sertifika başarılı olarak silindi" #: plinth/modules/letsencrypt/views.py:99 #, python-brace-format msgid "Failed to delete certificate for domain {domain}: {error}" -msgstr "{domain} alanı için sertifikanın silinmesi başarısız oldu: {error}" +msgstr "{domain} etki alanı için sertifika silme başarısız oldu: {error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2679,31 +2758,31 @@ msgid "" "not require phone numbers to work. Users on a given Matrix server can " "converse with users on all other Matrix servers via federation." msgstr "" -"Matrix, VoIP ve " -"federe, açık anlık mesajlaşma için yeni bir ekosistemdir. Synapse, Matrix " -"protokolünü uygulayan bir sunucudur. Sohbet grupları, ses ve görüntülü " -"görüşmeler, uçtan uca şifreleme, çoklu cihaz eşleşmesi sunar ve çalışmak " -"için telefon numaraları gerektirmez. Herhangi bir Matrix sunucusundaki " -"kullanıcılar federasyon sayesinde tüm diğer Matrix sunucularındaki " -"kullanıcılarla iletişimde bulunabilirler." +"Matrix, açık, " +"birleşik anlık mesajlaşma ve VoIP için yeni bir ekosistemdir. Synapse, " +"Matrix protokolünü uygulayan bir sunucudur. Sohbet grupları, sesli/görüntülü " +"aramalar, uçtan uca şifreleme, çoklu cihaz eşitlemesi sağlar ve çalışmak " +"için telefon numaralarını gerektirmez. Belirli bir Matrix sunucusundaki " +"kullanıcılar, federasyon aracılığıyla diğer tüm Matrix sunucularındaki " +"kullanıcılarla sohbet edebilir." -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -"İletişimde bulunmak için, mobil, masaüstü ve web mevcut istemcilerini kullanabilirsiniz. Riot istemcisi tavsiye edilir." +"İletişim kurmak amacıyla, mobil, masaüstü ve web için mevcut istemcileri kullanabilirsiniz. Element istemci önerilir." -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "Matrix Synapse" #: plinth/modules/matrixsynapse/forms.py:12 msgid "Enable Public Registration" -msgstr "Herkese Açık Kaydı Etkinleştir" +msgstr "Herkese Açık Kaydı etkinleştir" #: plinth/modules/matrixsynapse/forms.py:13 msgid "" @@ -2711,13 +2790,13 @@ msgid "" "a new account on your Matrix server. Disable this if you only want existing " "users to be able to use it." msgstr "" -"Herkese açık kaydı etkinleştirmek, Matrix sunucunuzda İnternet'teki herhangi " -"birinin yeni bir hesap açabileceği anlamına gelir. Sadece mevcut " -"kullanıcıların kullanabilmesini istiyorsanız bunu devre dışı bırakın." +"Herkese açık kaydı etkinleştirmek, Internet'teki herkesin Matrix sunucunuzda " +"yeni bir hesap açabileceği anlamına gelir. Sadece varolan kullanıcıların " +"kullanabilmesini istiyorsanız bunu etkisizleştirin." #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" -msgstr "Riot" +msgid "Element" +msgstr "Element" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 #: plinth/modules/snapshot/templates/snapshot.html:12 @@ -2731,10 +2810,10 @@ msgid "" "servers will be able to reach users on this server using this domain name. " "Matrix user IDs will look like @username:domainname." msgstr "" -"Matrix, bir alan için yapılandırılmayı gerektirir. Diğer Matrix " -"sunucularındaki kullanıcılar, bu sunucudaki kullanıcılara ulaşmak için bu " -"alan adını kullanacaklardır. Matrix kullanıcı kimlikleri @kullanıcıismi:" -"alanismi şeklinde olacaktır." +"Matrix hizmetinin bir etki alanı için yapılandırılması gerekir. Diğer Matrix " +"sunucularındaki kullanıcılar, bu etki alanı adını kullanarak bu sunucudaki " +"kullanıcılara ulaşabilecektir. Matrix kullanıcı kimlikleri @kullanıcıadı:" +"etkialanıadı şeklinde görünecektir." #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:26 msgid "" @@ -2744,9 +2823,8 @@ msgid "" " " msgstr "" "\n" -" İkaz! Alan ismini ilk yapılandırmadan sonra " -"değiştirmek güncel\n" -" olarak desteklenmemektedir.\n" +" Uyarı! İlk ayarlamadan sonra etki alanı adının\n" +" değiştirilmesi şu anda desteklenmiyor.\n" " " #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:35 @@ -2755,8 +2833,8 @@ msgid "" "No domain(s) are available. Configure at " "least one domain to be able to use Matrix Synapse." msgstr "" -"Hiçbir alan mevcut değildir. En az bir alan yapılandırın ki Matrix Synapse kullanılabilsin." +"Kullanılabilir etki alan(ları)ı yok. Matrix Synapse'ı kullanabilmek için en " +"az bir etki alanı yapılandırın." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:14 #, python-format @@ -2765,15 +2843,18 @@ msgid "" "look like @username:%(domain_name)s. Changing the domain name after " "the initial setup is currently not supported." msgstr "" -"Matrix alan ismi %(domain_name)s olarak ayarlanmıştır. Kullanıcı " -"kimlikleri @kullanıcıismi:%(domain_name)s şeklinde olacaktır. Alan " -"adını ilk yapılandırmadan sonra değiştirmek şimdilik desteklenmemektedir." +"Matrix sunucusu etki alanı %(domain_name)s olarak ayarlandı. " +"Kullanıcı kimlikleri @kullanıcıadı:%(domain_name)s şeklinde " +"görünecek. İlk ayarlamadan sonra etki alanı adının değiştirilmesi şu anda " +"desteklenmiyor." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:21 msgid "" "New users can be registered from any client if public registration is " "enabled." msgstr "" +"Herkese açık kayıt etkinleştirilirse, herhangi bir istemciden yeni " +"kullanıcılar kaydedilebilir." #: plinth/modules/matrixsynapse/templates/matrix-synapse.html:30 #, python-format @@ -2782,14 +2863,18 @@ msgid "" "with other Matrix Synapse instances requires a valid TLS certificate. Please " "go to Let's Encrypt to obtain one." msgstr "" +"Yapılandırılan etki alanı adı, kendinden imzalı bir sertifika kullanıyor. " +"Diğer Matrix Synapse örnekleriyle federasyon için geçerli bir TLS " +"sertifikası gerekir. Bir tane edinmek için lütfen Let's Encrypt'a gidin." -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "Herkese açık kayıt etkinleştirildi" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" -msgstr "Herkese açık kayıt devre dışı bırakıldı" +msgstr "Herkese açık kayıt etkisizleştirildi" #: plinth/modules/mediawiki/__init__.py:26 msgid "" @@ -2798,20 +2883,13 @@ msgid "" "website. You can use MediaWiki to host a wiki-like website, take notes or " "collaborate with friends on projects." msgstr "" -"MediaWiki, Vikipedi ve diğer WikiMedia projelerinin altyapısını oluşturan " -"viki yazılımıdır. Viki yazılımı, işbirliği ile düzenlenen ağ siteleri " -"oluşturmak için bir programdır. MediaWiki'yi viki gibi bir site barındırmak, " -"not almak ya da herhangi bir proje için arkadaşlarınızla işbirliği yapmak " +"MediaWiki, Vikipedi ve diğer WikiMedia projelerini destekleyen viki " +"motorudur. Bir viki motoru, işbirliği içinde düzenlenmiş bir web sitesi " +"oluşturmak için bir programdır. MediaWiki'yi viki benzeri bir web sitesi " +"barındırmak, notlar almak veya projelerde arkadaşlarınızla işbirliği yapmak " "için kullanabilirsiniz." #: plinth/modules/mediawiki/__init__.py:30 -#, fuzzy -#| msgid "" -#| "This MediaWiki instance comes with a randomly generated administrator " -#| "password. You can set a new password in the Configuration section and " -#| "login using the \"admin\" account. You can then create more user accounts " -#| "from MediaWiki itself by going to the Special:CreateAccount page" msgid "" "This MediaWiki instance comes with a randomly generated administrator " "password. You can set a new password in the \"Configuration\" section and " @@ -2819,23 +2897,20 @@ msgid "" "from MediaWiki itself by going to the Special:CreateAccount page." msgstr "" -"Bu MediaWiki örneklemesi rastgele oluşturulmuş bir yönetici parolası ile " -"gelir. Yapılandırma bölümünde yeni bir parola ayarlayabilir ve \"admin\" " -"hesabını kullanarak giriş yapabilirsiniz. MediaWiki'de daha fazla kullanıcı " -"hesabı oluşturmak için Özel:HesapOluştur sayfasına gidebilirsiniz" +"Bu MediaWiki örneği, rastgele oluşturulmuş bir yönetici parolası ile " +"birlikte gelir. \"Yapılandırma\" bölümünde yeni bir parola ayarlayabilir ve " +"\"admin\" hesabını kullanarak oturum açabilirsiniz. Daha sonra Özel:HesapOluştur sayfasına " +"giderek MediaWiki'nin kendisinden daha fazla kullanıcı hesabı " +"oluşturabilirsiniz." #: plinth/modules/mediawiki/__init__.py:36 -#, fuzzy -#| msgid "" -#| "Anyone with a link to this Wiki can read it. Only users that are logged " -#| "in can make changes to the content." msgid "" "Anyone with a link to this wiki can read it. Only users that are logged in " "can make changes to the content." msgstr "" -"Bu viki için bağlantısı olan herkes onu okuyabilir. İçeriğe değişiklikleri " -"sadece oturum açmış olan kullanıcılar yapabilir." +"Bu viki'ye bağlantısı olan herkes bunu okuyabilir. Sadece oturum açmış " +"kullanıcılar içerikte değişiklik yapabilir." #: plinth/modules/mediawiki/__init__.py:54 #: plinth/modules/mediawiki/manifest.py:9 @@ -2855,78 +2930,69 @@ msgid "" "Set a new password for MediaWiki's administrator account (admin). Leave this " "field blank to keep the current password." msgstr "" -"MediaWiki'nin yönetici hesabı (admin) için yeni bir parola ayarlayın. Güncel " -"parolayı muhafaza etmek için bu alanı boş bırakın." +"MediaWiki'nin yönetici hesabı (admin) için yeni bir parola ayarlayın. Şu " +"anki parolayı korumak için bu alanı boş bırakın." #: plinth/modules/mediawiki/forms.py:31 -#, fuzzy -#| msgid "Enable Public Registration" msgid "Enable public registrations" -msgstr "Herkese Açık Kaydı Etkinleştir" +msgstr "Herkese açık kaydı etkinleştir" #: plinth/modules/mediawiki/forms.py:32 msgid "" "If enabled, anyone on the internet will be able to create an account on your " "MediaWiki instance." msgstr "" +"Eğer etkinleştirildiyse, Internet'teki herkes MediaWiki örneğinizde bir " +"hesap oluşturabilecektir." #: plinth/modules/mediawiki/forms.py:36 -#, fuzzy -#| msgid "Enable creative mode" msgid "Enable private mode" -msgstr "Yaratıcı kipi etkinleştir" +msgstr "Özel kipi etkinleştir" #: plinth/modules/mediawiki/forms.py:37 msgid "" "If enabled, access will be restricted. Only people who have accounts can " "read/write to the wiki. Public registrations will also be disabled." msgstr "" +"Eğer etkinleştirildiyse, erişim kısıtlanacaktır. Sadece hesabı olan kişiler " +"viki'yi okuyabilir/yazabilir. Herkese açık kayıtlar da " +"etkisizleştirilecektir." #: plinth/modules/mediawiki/forms.py:42 -#, fuzzy -#| msgid "Default" msgid "Default Skin" -msgstr "Varsayılan" +msgstr "Varsayılan Kaplama" #: plinth/modules/mediawiki/forms.py:43 msgid "" "Choose a default skin for your MediaWiki installation. Users have the option " "to select their preferred skin." msgstr "" +"MediaWiki kurulumunuz için varsayılan bir kaplama seçin. Kullanıcılar tercih " +"ettikleri kaplamayı seçmek için seçeneğe sahiptir." #: plinth/modules/mediawiki/views.py:48 msgid "Password updated" msgstr "Parola güncellendi" #: plinth/modules/mediawiki/views.py:57 -#, fuzzy -#| msgid "Public registration enabled" msgid "Public registrations enabled" -msgstr "Herkese açık kayıt etkinleştirildi" +msgstr "Herkese açık kayıtlar etkinleştirildi" #: plinth/modules/mediawiki/views.py:66 -#, fuzzy -#| msgid "Public registration disabled" msgid "Public registrations disabled" -msgstr "Herkese açık kayıt devre dışı bırakıldı" +msgstr "Herkese açık kayıtlar etkisizleştirildi" #: plinth/modules/mediawiki/views.py:71 -#, fuzzy -#| msgid "PageKite enabled" msgid "Private mode enabled" -msgstr "PageKite etkinleştirildi" +msgstr "Özel kip etkinleştirildi" #: plinth/modules/mediawiki/views.py:78 -#, fuzzy -#| msgid "PageKite disabled" msgid "Private mode disabled" -msgstr "PageKite devre dışı" +msgstr "Özel kip etkisizleştirildi" #: plinth/modules/mediawiki/views.py:86 -#, fuzzy -#| msgid "Setting unchanged" msgid "Default skin changed" -msgstr "Ayar değiştirilmedi" +msgstr "Varsayılan kaplama değiştirildi" #: plinth/modules/minetest/__init__.py:38 #, python-brace-format @@ -2936,87 +3002,88 @@ msgid "" "(30000). To connect to the server, a Minetest client is needed." msgstr "" -"Minetest, çoklu kullanıcılı sonsuz dünya blok kum havuzudur. Bu modül " -"Minetest sunucusunu bu {box_name} kutusunda varsayılan portta (30000) " -"etkinleştirir. Sunucuya bağlanmak için bir Minetest istemcisi gereklidir." +"Minetest, çok oyunculu sonsuz dünyalı bir blok kum havuzudur. Bu modül " +"Minetest sunucusunun bu {box_name} üzerinde, varsayılan bağlantı noktasında " +"(30000) çalıştırılmasını sağlar. Sunucuya bağlanmak için bir Minetest istemcisi gereklidir." -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "Minetest" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "Blok Kum Havuzu" #: plinth/modules/minetest/forms.py:13 msgid "Maximum number of players" -msgstr "Azami oyuncu sayısı" +msgstr "En fazla oyuncu sayısı" #: plinth/modules/minetest/forms.py:15 msgid "" "You can change the maximum number of players playing minetest at a single " "instance of time." msgstr "" -"Tek bir vakitte minetest oynayan azami oyuncu sayısını değiştirebilirsiniz." +"Tek bir seferde minetest oynayan en fazla oyuncu sayısını " +"değiştirebilirsiniz." #: plinth/modules/minetest/forms.py:19 msgid "Enable creative mode" -msgstr "Yaratıcı kipi etkinleştir" +msgstr "Yaratıcı kipini etkinleştir" #: plinth/modules/minetest/forms.py:20 msgid "" "Creative mode changes the rules of the game to make it more suitable for " "creative gameplay, rather than challenging \"survival\" gameplay." msgstr "" -"Yaratıcı kip, oyunun kurallarını \"hayatta kalma\" oyun stili yerine " -"yaratıcı oyun stiline daha uygun olarak değiştirir." +"Yaratıcı kipi, oyunun kurallarını değiştirerek oyunu \"hayatta kalma\" oyun " +"tarzına meydan okuma yerine yaratıcı oyun için daha uygun hale getirir." #: plinth/modules/minetest/forms.py:25 msgid "Enable PVP" -msgstr "PVP'yi Etkinleştir" +msgstr "PVP'yi etkinleştir" #: plinth/modules/minetest/forms.py:26 msgid "Enabling Player Vs Player will allow players to damage other players." msgstr "" -"PVP'yi (oyuncuya karşı oyuncu) etkinleştirmek, oyuncuların diğer oyunculara " -"zarar vermesine izin verecektir." +"Player Vs Player'ı (Oyuncuya Karşı Oyuncu) etkinleştirmek, oyuncuların diğer " +"oyunculara zarar vermesine izin verecek." #: plinth/modules/minetest/forms.py:30 msgid "Enable damage" -msgstr "Zararı etkinleştir" +msgstr "Hasarı etkinleştir" #: plinth/modules/minetest/forms.py:31 msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" -"Devre dışı bırakıldığında, oyuncular ölemez ve hiçbir zarar göremezler." +"Etkisizleştirildiğinde, oyuncular ölemez veya hiçbir şekilde hasar alamazlar." #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "Adres" #: plinth/modules/minetest/templates/minetest.html:19 #: plinth/modules/tor/templates/tor.html:71 msgid "Port" -msgstr "Port" +msgstr "Bağlantı noktası" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" -msgstr "Azami oyuncu sayısı yapılandırması güncellendi" +msgstr "En fazla oyuncu yapılandırması güncellendi" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" -msgstr "Yaratıcı kip kurulumu güncellendi" +msgstr "Yaratıcı kipi yapılandırması güncellendi" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" -msgstr "PVP kurulumu güncellendi" +msgstr "PVP yapılandırması güncellendi" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" -msgstr "Zarar verme kurulumu güncellendi" +msgstr "Hasar yapılandırması güncellendi" #: plinth/modules/minidlna/__init__.py:23 msgid "" @@ -3028,24 +3095,29 @@ msgid "" "gaming systems (such as PS3 and Xbox 360) or applications such as totem and " "Kodi." msgstr "" +"MiniDLNA, DLNA/UPnP-AV istemcileriyle tam uyumlu olma amacı taşıyan basit " +"bir ortam sunucusu yazılımıdır. MiniDNLA arka plan programı, bir ağ " +"üzerindeki istemcilere ortam dosyalarını (müzik, resimler ve görüntü) sunar. " +"DNLA/UPnP, sıfır yapılandırma protokolüdür ve taşınabilir ortam " +"oynatıcıları, Akıllı Telefonlar, Televizyonlar ve oyun sistemleri (PS3 ve " +"Xbox 360 gibi) gibi ya da totem ve Kodi gibi uygulamalar da dahil olmak " +"üzere DLNA Sertifikası geçen tüm cihazlarla uyumludur." #: plinth/modules/minidlna/__init__.py:44 msgid "Media streaming server" -msgstr "" +msgstr "Ortam akış sunucusu" #: plinth/modules/minidlna/__init__.py:47 msgid "MiniDLNA" -msgstr "" +msgstr "MiniDLNA" #: plinth/modules/minidlna/__init__.py:48 -#, fuzzy -#| msgid "Mumble Voice Chat Server" msgid "Simple Media Server" -msgstr "Mumble Ses ile Sohbet Sunucusu" +msgstr "Basit Ortam Sunucusu" #: plinth/modules/minidlna/forms.py:13 msgid "Media Files Directory" -msgstr "" +msgstr "Ortam Dosyaları Dizini" #: plinth/modules/minidlna/forms.py:14 msgid "" @@ -3054,30 +3126,35 @@ msgid "" "that the new directory exists and that is readable from the \"minidlna\" " "user. Any user media directories (\"/home/username/\") will usually work." msgstr "" +"MiniDLNA Sunucusunun içerik için okuyacağı dizin. Bunun tüm alt dizinleri de " +"ortam dosyaları için taranacaktır. Eğer varsayılanı değiştirirseniz, yeni " +"dizinin var olduğundan ve \"minidlna\" kullanıcısının okuyabilir olduğundan " +"emin olun. Herhangi bir kullanıcı ortam dizinleri (\"/home/kullanıcıadı/\") " +"genellikle çalışacaktır." #: plinth/modules/minidlna/manifest.py:10 msgid "vlc" -msgstr "" +msgstr "vlc" #: plinth/modules/minidlna/manifest.py:49 msgid "kodi" -msgstr "" +msgstr "kodi" #: plinth/modules/minidlna/manifest.py:88 msgid "yaacc" -msgstr "" +msgstr "yaacc" #: plinth/modules/minidlna/manifest.py:99 msgid "totem" -msgstr "" +msgstr "totem" #: plinth/modules/minidlna/views.py:37 msgid "Specified directory does not exist." -msgstr "" +msgstr "Belirtilen dizin mevcut değil." #: plinth/modules/minidlna/views.py:42 msgid "Updated media directory" -msgstr "" +msgstr "Güncellenmiş ortam dizini" #: plinth/modules/mldonkey/__init__.py:27 msgid "" @@ -3085,6 +3162,10 @@ msgid "" "files. It can participate in multiple peer-to-peer networks including " "eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect." msgstr "" +"MLDonkey, büyük dosyaları takas etmek için kullanılan kişiden-kişiye bir " +"dosya paylaşım uygulamasıdır. eDonkey, Kademlia, Overnet, BitTorrent ve " +"DirectConnect dahil olmak üzere birden fazla kişiden-kişiye ağlarına " +"katılabilir." #: plinth/modules/mldonkey/__init__.py:30 msgid "" @@ -3092,43 +3173,39 @@ msgid "" "interface. Users in the admin group can also control it through any of the " "separate mobile or desktop front-ends or a telnet interface. See manual." msgstr "" +"Admin ve ed2k grubuna ait kullanıcılar web arayüzü üzerinden " +"denetleyebilirler. Admin grubundaki kullanıcılar, ayrı mobil veya masaüstü " +"ön uçlarından herhangi biri veya bir telnet arayüzü aracılığıyla da " +"denetleyebilir. Kılavuza bakın." #: plinth/modules/mldonkey/__init__.py:35 #, python-brace-format msgid "" "On {box_name}, downloaded files can be found in /var/lib/mldonkey/ directory." msgstr "" +"{box_name} üzerinde, indirilen dosyalar /var/lib/mldonkey/ dizininde " +"bulunabilir." #: plinth/modules/mldonkey/__init__.py:53 -#, fuzzy -#| msgid "Download files using BitTorrent applications" msgid "Download files using eDonkey applications" -msgstr "BitTorrent uygulamaları kullanarak dosya indir" +msgstr "eDonkey uygulamalarını kullanarak dosyaları indir" #: plinth/modules/mldonkey/__init__.py:56 #: plinth/modules/mldonkey/manifest.py:12 -#, fuzzy -#| msgid "Monkeysphere" msgid "MLDonkey" -msgstr "Monkeysphere" +msgstr "MLDonkey" #: plinth/modules/mldonkey/__init__.py:58 -#, fuzzy -#| msgid "File Synchronization" msgid "Peer-to-peer File Sharing" -msgstr "Dosya eşleşmesi" +msgstr "Kişiden-kişiye Dosya Paylaşımı" #: plinth/modules/mldonkey/manifest.py:19 -#, fuzzy -#| msgid "Monkeysphere" msgid "KMLDonkey" -msgstr "Monkeysphere" +msgstr "KMLDonkey" #: plinth/modules/mldonkey/manifest.py:31 -#, fuzzy -#| msgid "Monkeysphere" msgid "AMLDonkey" -msgstr "Monkeysphere" +msgstr "AMLDonkey" #: plinth/modules/monkeysphere/__init__.py:19 msgid "" @@ -3141,14 +3218,15 @@ msgid "" "monkeysphere.info/getting-started-ssh/\"> Monkeysphere SSH documentation " "for more details." msgstr "" -"Monkeysphere ile her SSH sunan yapılandırılmış alan için bir OpenPGP " -"anahtarı oluşturulabilir. Bunun ardından herkese açık OpenPGP anahtarı " -"OpenPGP anahtar sunucularına yüklenebilir. Bu makineye SSH vasıtasıyla " -"bağlanan kullanıcılar doğru makineye bağlandıklarını teyit edebilirler. " -"Kullanıcıların anahtara güvenebilmeleri için en az bir kişinin (genellikle " -"makine sahibi) anahtarı olağan OpenPGP anahtar imzalama süreciyle imzalaması " -"gerekir. Daha fazla bilgi için Monkeysphere SSH belgelendirmesine bakınız." +"Monkeysphere ile, SSH hizmeti veren her yapılandırılmış etki alanı için bir " +"OpenPGP anahtarı oluşturulabilir. OpenPGP ortak anahtarı daha sonra OpenPGP " +"anahtar sunucularına yüklenebilir. Bu makineye SSH aracılığıyla bağlanan " +"kullanıcılar, doğru anamakineye bağlandıklarını doğrulayabilir. " +"Kullanıcıların anahtara güvenmesi için en az bir kişinin (genellikle makine " +"sahibi) normal OpenPGP anahtar imzalama işlemini kullanarak anahtarı " +"imzalaması gerekir. Daha fazla ayrıntı için Monkeysphere SSH belgelerine " +"bakın." #: plinth/modules/monkeysphere/__init__.py:27 msgid "" @@ -3160,13 +3238,13 @@ msgid "" "is available on the " "Monkeysphere website." msgstr "" -"Monkeysphere aynı zamanda bu makinede kurulu olan her Güvenli Ağ Sunucusu " -"(HTTPS) sertifikası için bir OpenPGP anahtarı oluşturabilir. Bunun ardından " -"herkese açık OpenPGP anahtarı OpenPGP anahtar sunucularına yüklenebilir. Web " -"sunucusuna HTTPS vasıtasıyla bağlanan kullanıcılar doğru makineye " -"bağlandıklarını teyit edebilirler. Sertifikayı doğrulamak için kullanıcının " -"Monkeysphere sitesinde mevcut olan bazı yazılımları yükleyip kurması gerekecektir." +"Monkeysphere, bu makinede yüklü her Güvenli Web Sunucusu (HTTPS) sertifikası " +"için bir OpenPGP anahtarı da oluşturabilir. OpenPGP ortak anahtarı daha " +"sonra OpenPGP anahtar sunucularına yüklenebilir. Web sunucusuna HTTPS " +"aracılığıyla erişen kullanıcılar, doğru anamakineye bağlandıklarını " +"doğrulayabilir. Sertifikayı doğrulamak için kullanıcının Monkeysphere web sitesinde bulunan " +"bazı yazılımları yüklemesi gerekecektir." #: plinth/modules/monkeysphere/__init__.py:49 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:11 @@ -3186,16 +3264,16 @@ msgstr "İptal" #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:40 #: plinth/modules/tor/templates/tor.html:70 msgid "Service" -msgstr "Servis" +msgstr "Hizmet" #: plinth/modules/monkeysphere/templates/monkeysphere.html:55 msgid "Domains" -msgstr "Alan" +msgstr "Etki Alanları" #: plinth/modules/monkeysphere/templates/monkeysphere.html:56 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:16 msgid "OpenPGP Fingerprint" -msgstr "OpenPGP Parmak izi" +msgstr "OpenPGP Parmak İzi" #: plinth/modules/monkeysphere/templates/monkeysphere.html:65 #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:43 @@ -3211,7 +3289,7 @@ msgstr "Diğer" #: plinth/modules/monkeysphere/templates/monkeysphere.html:106 #, python-format msgid "Show details for key %(fingerprint)s" -msgstr "%(fingerprint)s anahtarı için detayları göster" +msgstr "%(fingerprint)s anahtarının ayrıntılarını göster" #: plinth/modules/monkeysphere/templates/monkeysphere.html:112 msgid "-" @@ -3227,7 +3305,7 @@ msgstr "Anahtarı Yayınla" #: plinth/modules/monkeysphere/templates/monkeysphere.html:143 msgid "Add Domains" -msgstr "Alan Ekle" +msgstr "Etki Alanları Ekle" #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:20 msgid "OpenPGP User IDs" @@ -3247,7 +3325,7 @@ msgstr "SSH Anahtar Boyutu" #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:36 msgid "SSH Fingerprint" -msgstr "SSH Parmak izi" +msgstr "SSH Parmak İzi" #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:52 msgid "Key File" @@ -3255,20 +3333,19 @@ msgstr "Anahtar Dosyası" #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:56 msgid "Available Domains" -msgstr "Mevcut Alanlar" +msgstr "Kullanılabilir Etki Alanları" #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:60 msgid "Added Domains" -msgstr "Eklenen Alanlar" +msgstr "Eklenen Etki Alanları" #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:67 msgid "" "After this key is published to the keyservers, it can be signed using GnuPG with the following commands:" msgstr "" -"Bu anahtarın anahtar sunucularına yayınlanmasından sonra aşağıdaki " -"komutlarla GnuPG kullanılarak " -"imzalanması mümkündür:" +"Bu anahtar, anahtar sunucularında yayınlandıktan sonra, aşağıdaki komutlarla " +"GnuPG kullanılarak imzalanabilir:" #: plinth/modules/monkeysphere/templates/monkeysphere_details.html:73 msgid "Download the key" @@ -3288,7 +3365,7 @@ msgstr "Anahtar içe aktarıldı." #: plinth/modules/monkeysphere/views.py:80 msgid "Cancelled key publishing." -msgstr "Anahtar yayını iptal edildi." +msgstr "Anahtar yayınlama iptal edildi." #: plinth/modules/monkeysphere/views.py:131 msgid "Published key to keyserver." @@ -3296,15 +3373,15 @@ msgstr "Anahtar, anahtar sunucusuna yayınlandı." #: plinth/modules/monkeysphere/views.py:133 msgid "Error occurred while publishing key." -msgstr "Anahtarın yayınlanmasında bir hata meydana geldi." +msgstr "Anahtar yayınlanırken bir hata meydana geldi." #: plinth/modules/mumble/__init__.py:24 msgid "" "Mumble is an open source, low-latency, encrypted, high quality voice chat " "software." msgstr "" -"Mumble, açık kaynak, düşük gecikmeli, şifreli, yüksek kaliteli sesle sohbet " -"yazılımıdır." +"Mumble, açık kaynaklı, düşük gecikmeli, şifreli, yüksek kaliteli bir sesli " +"sohbet yazılımıdır." #: plinth/modules/mumble/__init__.py:26 msgid "" @@ -3312,29 +3389,29 @@ msgid "" "href=\"http://mumble.info\">Clients to connect to Mumble from your " "desktop and Android devices are available." msgstr "" -"Mumble sunucunuza alışılagelmiş 64738 numaralı Mumble portundan " -"bağlanabilirsiniz. Mumble'a masaüstünden ya da Android cihazlarından " +"Mumble sunucunuza normal Mumble bağlantı noktası 64738 üzerinden " +"bağlanabilirsiniz. Masaüstünüzden ve Android cihazlarınızdan Mumble'a " "bağlanmak için istemciler mevcuttur." -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "Mumble" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" -msgstr "Ses ile Sohbet" +msgstr "Sesli Sohbet" #: plinth/modules/mumble/forms.py:14 -#, fuzzy -#| msgid "SSH server password" msgid "Set SuperUser Password" -msgstr "SSH sunucu parolası" +msgstr "Süper Kullanıcı Parolası Ayarlayın" #: plinth/modules/mumble/forms.py:17 msgid "" "Optional. Leave this field blank to keep the current password. SuperUser " "password can be used to manage permissions in Mumble." msgstr "" +"İsteğe bağlı. Şu anki parolayı korumak için bu alanı boş bırakın. Süper " +"Kullanıcı parolası, Mumble'daki izinleri yönetmek için kullanılabilir." #: plinth/modules/mumble/manifest.py:37 msgid "Plumble" @@ -3346,13 +3423,11 @@ msgstr "Mumblefly" #: plinth/modules/mumble/manifest.py:60 msgid "Mumla" -msgstr "" +msgstr "Mumla" -#: plinth/modules/mumble/views.py:29 -#, fuzzy -#| msgid "Password changed successfully." +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." -msgstr "Parola başarılı bir şekilde değiştirildi." +msgstr "Süper Kullanıcı parolası başarılı olarak güncellendi." #: plinth/modules/names/__init__.py:26 #, python-brace-format @@ -3362,307 +3437,328 @@ msgid "" "each type of name, it is shown whether the HTTP, HTTPS, and SSH services are " "enabled or disabled for incoming connections through the given name." msgstr "" +"Ad Hizmetleri, {box_name} cihazının herkese açık Internet'ten ulaşılabilir " +"yollarına genel bir bakış sağlar: etki alanı adı, Tor onion hizmeti ve " +"Pagekite. Her tür ad için HTTP, HTTPS ve SSH hizmetlerinin, verilen ad " +"aracılığıyla gelen bağlantılar için etkinleştirildiği mi yoksa " +"etkisizleştirildiği mi gösterilir." #: plinth/modules/names/__init__.py:46 msgid "Name Services" -msgstr "İsim Servisleri" +msgstr "Ad Hizmetleri" #: plinth/modules/names/components.py:12 msgid "All" -msgstr "" +msgstr "Tümü" #: plinth/modules/names/components.py:16 plinth/modules/names/components.py:20 msgid "All web apps" -msgstr "" +msgstr "Tüm web uygulamaları" + +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "Hizmet" #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " "PPPoE. Share that connection with other devices on the network." msgstr "" +"Ağ cihazlarını yapılandırın. Internet'e Ethernet, Wi-Fi veya PPPoE ile " +"bağlanın. Bu bağlantıyı ağdaki diğer cihazlarla paylaşın." #: plinth/modules/networks/__init__.py:42 msgid "" "Devices administered through other methods may not be available for " "configuration here." msgstr "" +"Diğer yöntemler aracılığıyla yönetilen cihazlar burada yapılandırma için " +"mevcut olmayabilir." -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "Ağlar" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" -msgstr "IPv{kind} üzerinde DNSSEC kullanılıyor" +msgstr "IPv{kind} üzerinde DNSSEC kullanma" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "Bağlantı Türü" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" -msgstr "Bağlantı İsmi" - -#: plinth/modules/networks/forms.py:30 -#, fuzzy -#| msgid "Interface" -msgid "Network Interface" -msgstr "Arayüz" +msgstr "Bağlantı Adı" #: plinth/modules/networks/forms.py:31 -msgid "The network device that this connection should be bound to." -msgstr "Bu bağlantının bağlanacağı ağ cihazı." +msgid "Network Interface" +msgstr "Ağ Arayüzü" -#: plinth/modules/networks/forms.py:34 -msgid "Firewall Zone" -msgstr "Güvenlik Duvarı Alanı" +#: plinth/modules/networks/forms.py:32 +msgid "The network device that this connection should be bound to." +msgstr "Bu bağlantının bağlanması gereken ağ cihazı." #: plinth/modules/networks/forms.py:35 +msgid "Firewall Zone" +msgstr "Güvenlik Duvarı Bölgesi" + +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -"Güvenlik duvarı alanı bu arayüzlerde hangi servislerin mevcut olacağını " -"kontrol eder. Dahiliyi sadece güvenilir şebekeler için seçin." +"Güvenlik duvarı bölgesi, bu arayüzler üzerinden hangi hizmetlerin " +"kullanılabileceğini denetleyecek. Sadece güvenilir ağlar için Dahili'yi " +"seçin." -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "Harici" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "Dahili" -#: plinth/modules/networks/forms.py:40 -msgid "IPv4 Addressing Method" -msgstr "IPv4 Adresleme Metodu" - #: plinth/modules/networks/forms.py:41 +msgid "IPv4 Addressing Method" +msgstr "IPv4 Adresleme Yöntemi" + +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " "network making it a client. \"Shared\" method will make {box_name} act as a " "router, configure clients on this network and share its Internet connection." msgstr "" -"\"Otomatik\" metodu {box_name} kutusunun yapılandırmasını bu ağdan almasını " -"sağlayacak ve onu bir istemci yapacaktır. \"Paylaşılan\" metodu {box_name} " -"kutusunun bir yönlendirici olarak iş görmesini, bu ağdaki istemcileri " -"yapılandırmasını ve İnternet bağlantısını paylaşmasını sağlayacaktır." +"\"Otomatik\" yöntem, {box_name} cihazının yapılandırmayı bu ağdan almasını " +"sağlayarak onu bir istemci yapacak. \"Paylaşılan\" yöntem, {box_name} " +"cihazının bir yönlendirici görevi görmesini, bu ağdaki istemcileri " +"yapılandırmasını ve Internet bağlantısını paylaşmasını sağlayacak." -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "Otomatik (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "Paylaşılan" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "Elle" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "Ağ Maskesi" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -"Seçime dayalı değer. Boş bırakılırsa adrese dayalı varsayılan bir ağ maskesi " -"kullanılacaktır." +"İsteğe bağlı değer. Eğer boş bırakılırsa, adrese dayalı varsayılan bir ağ " +"maskesi kullanılacaktır." -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" -msgstr "Geçit" +msgstr "Ağ Geçidi" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." -msgstr "Seçime dayalı değer." +msgstr "İsteğe bağlı değer." -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS Sunucusu" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -"Seçime dayalı değer. Eğer bu değer belirtildiyse ve IPv4 adresleme metodu " -"\"Otomatik\" ise, DHCP sunucusu tarafından sunulan DNS sunucuları görmezden " -"gelinecektir." +"İsteğe bağlı değer. Eğer bu değer girilirse ve IPv4 adresleme yöntemi " +"\"Otomatik\" ise, DHCP sunucusu tarafından sağlanan DNS Sunucuları " +"yoksayılacaktır." -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "İkinci DNS Sunucusu" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -"Seçime dayalı değer. Eğer bu değer belirtildiyse ve IPv4 Adresleme Metodu " -"\"Otomatik\" ise, DHCP sunucusu tarafından sunulan DNS sunucuları görmezden " -"gelinecektir." +"İsteğe bağlı değer. Eğer bu değer girilirse ve IPv4 Adresleme Yöntemi " +"\"Otomatik\" ise, DHCP sunucusu tarafından sağlanan DNS Sunucuları " +"yoksayılacaktır." -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" -msgstr "IPv6 Adresleme Metodu" +msgstr "IPv6 Adresleme Yöntemi" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -"\"Otomatik\" metodları {box_name} kutusunun yapılandırmasını bu ağdan " -"almasını sağlayacak ve onu bir istemci yapacaktır." +"\"Otomatik\" yöntemi, {box_name} cihazının bu ağdan yapılandırma almasını " +"sağlayarak onu bir istemci yapar." -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "Otomatik" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "Otomatik, sadece DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" -msgstr "Yok say" +msgstr "Yoksay" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "Önek" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." -msgstr "1 ilâ 128 arasında bir değer." +msgstr "1 ile 128 arasında bir değer." -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -"Seçime dayalı değer. Eğer bu değer belirtildiyse ve IPv6 adresleme metodu " -"\"Otomatik\" ise, DHCP sunucusu tarafından sunulan DNS sunucuları görmezden " -"gelinecektir." +"İsteğe bağlı değer. Eğer bu değer girilirse ve IPv6 adresleme yöntemi " +"\"Otomatik\" ise, DHCP sunucusu tarafından sağlanan DNS Sunucuları " +"yoksayılacaktır." -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -"Seçime dayalı değer. Eğer bu değer belirtildiyse ve IPv6 Adresleme Metodu " -"\"Otomatik\" ise, DHCP sunucusu tarafından sunulan DNS sunucuları görmezden " -"gelinecektir." +"İsteğe bağlı değer. Eğer bu değer girilirse ve IPv6 Adresleme Yöntemi " +"\"Otomatik\" ise, DHCP sunucusu tarafından sağlanan DNS Sunucuları " +"yoksayılacaktır." -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- seç --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." -msgstr "Şebekenin görünür ismi." +msgstr "Ağın görünür adı." -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "Kip" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "Altyapı" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "Erişim Noktası" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "Geçici" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "Frekans Bandı" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" -msgstr "B/G (2,4 GHz)" +msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "Kanal" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -"Seçime dayalı değer. Seçili frekans bandına sınırlanacak kablosuz kanal. Boş " -"ya da 0 değeri otomatik seçim anlamına gelir." +"İsteğe bağlı değer. Seçilen frekans bandında kısıtlanacak kablosuz kanal. " +"Boş veya 0 değeri otomatik seçim anlamına gelir." -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -"Seçime dayalı değer. Erişim noktası için benzersiz kimlik. Bir erişim " -"noktasına bağlantı kurulduğunda, sadece erişim noktasının BSSID'si " -"sağlananla eşleşiyorsa bağlanın. Örnek: 00:11:22:aa:bb:cc." +"İsteğe bağlı değer. Erişim noktası için benzersiz tanımlayıcı. Bir erişim " +"noktasına bağlanırken, sadece erişim noktasının BSSID'si sağlanan ile " +"eşleşiyorsa bağlanır. Örnek: 00:11:22:aa:bb:cc." -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "Kimlik Doğrulama Kipi" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -"Eğer kablosuz ağ güvenli ise ve istemcilerin bağlantı için parolaları " -"olmasını gerektiriyorsa WPA'yi seçin." +"Kablosuz ağ güvenliyse ve istemcilerin bağlanmak için parolaya sahip " +"olmasını gerektiriyorsa WPA'yı seçin." -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "Açık" -#: plinth/modules/networks/forms.py:299 -#, fuzzy, python-brace-format -#| msgid "Use upstream bridges to connect to Tor network" +#: plinth/modules/networks/forms.py:302 +#, python-brace-format msgid "Specify how your {box_name} is connected to your network" -msgstr "Tor şebekesine bağlanmak için upstream köprüleri kullan" +msgstr "{box_name} cihazınızın ağınıza nasıl bağlı olduğunu belirtin" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " "Internet connection from your router via Wi-Fi or Ethernet cable. This is a " "typical home setup.

    " msgstr "" +"Bir yönlendiriciye bağlı

    {box_name} cihazınız " +"Internet bağlantısını yönlendiricinizden Kablosuz (Wi-Fi) veya Ethernet " +"kablosu aracılığıyla alır. Bu tipik bir ev ayarlamasıdır.

    " -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3670,20 +3766,28 @@ msgid "" "adapter. {box_name} is directly connected to the Internet and all your " "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" +"{box_name} yönlendiricinizdir

    {box_name} cihazınız " +"birden çok Ethernet bağlantı noktası veya bir Kablosuz (Wi-Fi) " +"bağdaştırıcısı gibi birden çok ağ arayüzüne sahip. {box_name} doğrudan " +"Internet'e bağlı ve tüm cihazlarınız kendi Internet bağlanabilirlikleri için " +"{box_name} cihazına bağlanır.

    " -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " "connection is directly attached to your {box_name} and there are no other " "devices on the network. This can happen on community or cloud setups.

    " msgstr "" +"Doğrudan Internet'e bağlı

    Internet bağlantınız " +"doğrudan {box_name} cihazınıza bağlıdır ve ağda başka cihaz yoktur. Bu, " +"topluluk veya bulut ayarlamalarında olabilir.

    " -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" -msgstr "" +msgstr "Internet bağlantı türünüzü seçin" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3693,8 +3797,15 @@ msgid "" "connectivity. If you have a public IP address but are unsure if it changes " "over time or not, it is safer to choose this option.

    " msgstr "" +"Zamanla değişebilen bir dış IP adresim var

    Bu, " +"Internet'teki cihazların siz Internete bağlandığınızda size ulaşabileceği " +"anlamına gelir. Internet Servis Sağlayıcınız (ISS) ile Internet'e her " +"bağlandığınızda, özellikle bir süre çevrimdışı kaldıktan sonra farklı bir IP " +"adresi alabilirsiniz. Birçok ISS bu tür bir bağlanabilirlik sunar. Eğer bir " +"dış IP adresiniz varsa ancak zamanla değişip değişmeyeceğinden emin " +"değilseniz, bu seçeneği seçmeniz daha güvenlidir.

    " -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" +"Zamanla değişmeyen bir dış IP adresim var (önerilir)

    Bu, Internet'teki cihazların Internet'e bağlandığınızda size " +"ulaşabileceği anlamına gelir. Internet Servis Sağlayıcınız (ISS) ile " +"Internet'e her bağlandığınızda, her zaman aynı IP adresini alırsınız. Bu, " +"birçok {box_name} hizmeti için en sorunsuz ayarlamadır, ancak çok az ISS " +"bunu sunmaktadır. Ek ödeme yaparak bu hizmeti ISS'nizden alabilirsiniz.

    " -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3717,20 +3834,27 @@ msgid "" "troublesome situation for hosting services at home. {box_name} provides many " "workaround solutions but each solution has some limitations.

    " msgstr "" +"Bir dış IP adresim yok

    Bu, Internet üzerindeki " +"cihazların, Internet'e bağlandığınızda size ulaşamayacağı anlamına " +"gelir. Internet Servis Sağlayıcınız (ISS) ile Internet'e her " +"bağlandığınızda, sadece yerel ağlar için geçerli olan bir IP adresi " +"alırsınız. Birçok ISS bu tür bir bağlanabilirlik sunar. Evde barındırma " +"hizmetleri için en sıkıntılı durum budur. {box_name} birçok geçici çözüm " +"sağlar ancak her çözümün bazı sınırlamaları vardır.

    " -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" +"ISS'min sağladığı bağlantı türünü bilmiyorum

    Size en " +"ölçülü eylemler önerilecektir.

    " -#: plinth/modules/networks/forms.py:400 -#, fuzzy -#| msgid "Current Network Configuration" +#: plinth/modules/networks/forms.py:403 msgid "Preferred router configuration" -msgstr "Güncel Şebeke Yapılandırması" +msgstr "Tercih edilen yönlendirici yapılandırması" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" +"Tüm trafiği yönlendirmek için DMZ özelliğini kullan (önerilir)

    Çoğu yönlendirici, DMZ adı verilen bir yapılandırma ayarı " +"sağlar. Bu, yönlendiricinin Internet'ten gelen tüm trafiği {box_name} " +"cihazının IP adresi gibi tek bir IP adresine yönlendirmesini sağlayacak. " +"Öncelikle yönlendiricinizin yapılandırmasında {box_name} cihazınız için " +"sabit bir yerel IP adresi yapılandırmayı unutmayın.

    " -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" +"Her uygulamanın gerektirdiği şekilde belirli trafiği yönlendir

    Alternatif olarak, {box_name} cihazınıza sadece belirli " +"trafiği yönlendirmeyi seçebilirsiniz. Ağınızda {box_name} gibi başka " +"sunucularınız varsa veya yönlendiriciniz DMZ özelliğini desteklemiyorsa bu " +"idealdir. Bir web arayüzü sağlayan tüm uygulamalar, çalışmak için trafiği 80 " +"ve 443 numaralı bağlantı noktalarından yönlendirmenizi gerektirir. Diğer " +"uygulamaların her biri, o uygulamanın çalışması için hangi bağlantı " +"nokta(larının)sının yönlendirilmesi gerektiğini önerecektir.

    " -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " "to be reminded later. Some of the other configuration steps may fail.

    " msgstr "" +"Yönlendirici şu anda yapılandırılmamış

    Yönlendiriciyi şu anda yapılandırmadıysanız veya yapılandıramıyorsanız ve " +"daha sonra hatırlatılmasını istiyorsanız bunu seçin. Diğer yapılandırma " +"adımlarından bazıları başarısız olabilir.

    " #: plinth/modules/networks/templates/connection_show.html:28 msgid "Edit connection" -msgstr "Bağlantıyı Düzenle" +msgstr "Bağlantıyı düzenle" #: plinth/modules/networks/templates/connection_show.html:28 #: plinth/modules/wireguard/templates/wireguard_show_client.html:68 @@ -3774,7 +3916,7 @@ msgstr "Düzenle" #: plinth/modules/networks/templates/connection_show.html:35 #: plinth/modules/networks/templates/connections_list.html:40 msgid "Deactivate" -msgstr "Devre Dışı Bırak" +msgstr "Devre dışı bırak" #: plinth/modules/networks/templates/connection_show.html:42 #: plinth/modules/networks/templates/connections_list.html:48 @@ -3806,7 +3948,7 @@ msgstr "evet" #: plinth/modules/networks/templates/connection_show.html:69 #: plinth/modules/storage/templates/storage.html:25 msgid "Device" -msgstr "Cihaz" +msgstr "Aygıt" #: plinth/modules/networks/templates/connection_show.html:73 msgid "State" @@ -3833,7 +3975,7 @@ msgstr "Açıklama" #: plinth/modules/networks/templates/connection_show.html:101 msgid "Physical Link" -msgstr "Fiziki Bağlantı" +msgstr "Fiziksel Bağlantı" #: plinth/modules/networks/templates/connection_show.html:106 msgid "Link state" @@ -3845,7 +3987,7 @@ msgstr "kablo bağlı" #: plinth/modules/networks/templates/connection_show.html:113 msgid "please check cable" -msgstr "lütfen kabloyu kontrol edin" +msgstr "lütfen kabloyu denetleyin" #: plinth/modules/networks/templates/connection_show.html:118 #: plinth/modules/networks/templates/connection_show.html:134 @@ -3864,7 +4006,7 @@ msgstr "%(wireless_bitrate)s Mbit/s" #: plinth/modules/networks/templates/connection_show.html:148 msgid "Signal strength" -msgstr "Sinyal kuvveti" +msgstr "Sinyal gücü" #: plinth/modules/networks/templates/connection_show.html:166 msgid "IPv4" @@ -3874,7 +4016,7 @@ msgstr "IPv4" #: plinth/modules/networks/templates/connection_show.html:212 #: plinth/modules/shadowsocks/forms.py:48 msgid "Method" -msgstr "Metot" +msgstr "Yöntem" #: plinth/modules/networks/templates/connection_show.html:178 #: plinth/modules/networks/templates/connection_show.html:219 @@ -3898,7 +4040,7 @@ msgstr "IPv6" #: plinth/modules/networks/templates/connection_show.html:248 msgid "This connection is not active." -msgstr "Bu bağlantı etkin değildir." +msgstr "Bu bağlantı etkin değil." #: plinth/modules/networks/templates/connection_show.html:251 #: plinth/modules/security/__init__.py:45 @@ -3909,7 +4051,7 @@ msgstr "Güvenlik" #: plinth/modules/networks/templates/connection_show.html:276 #: plinth/modules/networks/templates/connection_show.html:295 msgid "Firewall zone" -msgstr "Güvenlik duvarı alanı" +msgstr "Güvenlik duvarı bölgesi" #: plinth/modules/networks/templates/connection_show.html:265 msgid "" @@ -3917,9 +4059,9 @@ msgid "" "connect this interface to a public network, services meant to be available " "only internally will become available externally. This is a security risk." msgstr "" -"Bu arayüz yerel bir ağa/makineye bağlı olmalıdır. Eğer bu arayüzü herkese " -"açık bir şebekeye bağlarsanız, sadece dahili olması amaçlanan servislere " -"harici erişim mümkün olacaktır. Bu bir güvenlik riskidir." +"Bu arayüz yerel bir ağa/makineye bağlanmalıdır. Eğer bu arayüzü bir dış ağa " +"bağlarsanız, sadece dahili olarak kullanılabilir olan hizmetler harici " +"olarak kullanılabilir hale gelecektir. Bu bir güvenlik riskidir." #: plinth/modules/networks/templates/connection_show.html:285 #: plinth/modules/networks/templates/connection_show.html:308 @@ -3928,9 +4070,9 @@ msgid "" "a local network/machine, many services meant to available only internally " "will not be available." msgstr "" -"Bu arayüz sizin İnternet bağlantınızı almalıdır. Eğer onu yerel bir ağ/" -"makineye bağlarsanız, sadece dahili olarak erişilebilir olması amaçlanan " -"servislerin birçoğuna erişim mümkün olmayacaktır." +"Bu arayüz Internet bağlantınızı almalıdır. Eğer yerel bir ağa/makineye " +"bağlarsanız, sadece dahili olarak kullanılabilir birçok hizmet " +"kullanılamayacaktır." #: plinth/modules/networks/templates/connection_show.html:304 #, python-format @@ -3938,24 +4080,26 @@ msgid "" "This interface is not maintained by %(box_name)s. For security, it is " "automatically assigned to the external zone." msgstr "" +"Bu arayüz, %(box_name)s tarafından korunmaz. Güvenlik için otomatik olarak " +"harici bölgeye atanır." #: plinth/modules/networks/templates/connections_create.html:19 msgid "Create Connection" msgstr "Bağlantı Oluştur" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "Bağlantıyı Sil" #: plinth/modules/networks/templates/connections_delete.html:14 #, python-format msgid "Delete connection %(name)s permanently?" -msgstr "%(name)s isimli bağlantı daimi olarak silinsin mi?" +msgstr "%(name)s bağlantısı kalıcı olarak silinsin mi?" #: plinth/modules/networks/templates/connections_diagram.html:50 msgid "Internet" -msgstr "İnternet" +msgstr "Internet" #: plinth/modules/networks/templates/connections_diagram.html:55 #: plinth/modules/networks/templates/connections_diagram.html:87 @@ -3972,42 +4116,40 @@ msgstr "Ethernet" #: plinth/modules/networks/templates/connections_diagram.html:101 #: plinth/network.py:26 msgid "Wi-Fi" -msgstr "Wi-Fi" +msgstr "Kablosuz (Wi-Fi)" #: plinth/modules/networks/templates/connections_diagram.html:74 #, python-format msgid "Show connection %(connection.name)s" -msgstr "%(connection.name)s isimli bağlantıyı göster" +msgstr "%(connection.name)s bağlantısını göster" #: plinth/modules/networks/templates/connections_diagram.html:104 #, python-format msgid "Show connection %(name)s" -msgstr "%(name)s isimli bağlantıyı göster" +msgstr "%(name)s bağlantısını göster" #: plinth/modules/networks/templates/connections_diagram.html:116 msgid "Computer" msgstr "Bilgisayar" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "Bağlantıyı Düzenle" #: plinth/modules/networks/templates/connections_list.html:8 -#, fuzzy -#| msgid "Connection" msgid "Connections" -msgstr "Bağlantı" +msgstr "Bağlantılar" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" -msgstr "Yakındaki Wi-Fi Ağları" +msgstr "Yakındaki Kablosuz (Wi-Fi) Ağları" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "Bağlantı Ekle" @@ -4015,7 +4157,7 @@ msgstr "Bağlantı Ekle" #: plinth/modules/networks/templates/connections_list.html:29 #, python-format msgid "Delete connection %(name)s" -msgstr "%(name)s isimli bağlantıyı sil" +msgstr "%(name)s bağlantısını sil" #: plinth/modules/networks/templates/connections_list.html:54 msgid "Active" @@ -4031,31 +4173,32 @@ msgstr "Oluştur..." #: plinth/modules/networks/templates/internet_connectivity_content.html:10 msgid "What Type Of Internet Connection Do You Have?" -msgstr "" +msgstr "Ne Tür Internet Bağlantınız Var?" #: plinth/modules/networks/templates/internet_connectivity_content.html:16 msgid "" "Select an option that best describes the type of Internet connection. This " "information is used only to guide you with further setup." msgstr "" +"Internet bağlantısı türünü en iyi tanımlayan seçeneği seçin. Bu bilgiler " +"sadece size daha fazla ayarlama için rehberlik etmek amacıyla kullanılır." #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:19 #: plinth/modules/networks/templates/network_topology_firstboot.html:19 #: plinth/modules/networks/templates/router_configuration_firstboot.html:19 msgid "Skip this step" -msgstr "" +msgstr "Bu adımı atla" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" -msgstr "" +msgstr "İleri" #: plinth/modules/networks/templates/internet_connectivity_main.html:9 -#, fuzzy -#| msgid "Connection Type" msgid "Your Internet Connection Type" -msgstr "Bağlantı Türü" +msgstr "Internet Bağlantınızın Türü" #: plinth/modules/networks/templates/internet_connectivity_main.html:14 msgid "" @@ -4063,35 +4206,35 @@ msgid "" "your ISP. This information is only used to suggest you necessary " "configuration actions." msgstr "" +"Aşağıda, ISS'niz tarafından sağlanan Internet bağlantısı türünü en iyi " +"şekilde açıklanmaktadır. Bu bilgiler sadece size gerekli yapılandırma " +"eylemlerini önermek için kullanılır." #: plinth/modules/networks/templates/internet_connectivity_main.html:23 msgid "My ISP provides a public IP address that does not change over time." -msgstr "" +msgstr "ISS'm, zamanla değişmeyen bir dış IP adresi sağlıyor." #: plinth/modules/networks/templates/internet_connectivity_main.html:27 msgid "My ISP provides a public IP address that may change over time." -msgstr "" +msgstr "ISS'm, zaman içinde değişebilen bir dış IP adresi sağlıyor." #: plinth/modules/networks/templates/internet_connectivity_main.html:31 msgid "My ISP does not provide a public IP address." -msgstr "" +msgstr "ISS'm bir dış IP adresi sağlamıyor." #: plinth/modules/networks/templates/internet_connectivity_main.html:35 msgid "I do not know the type of connection my ISP provides." -msgstr "" +msgstr "ISS'mın sağladığı bağlantı türünü bilmiyorum." #: plinth/modules/networks/templates/internet_connectivity_main.html:41 #: plinth/modules/networks/templates/network_topology_main.html:41 -#, fuzzy -#| msgid "Update" msgid "Update..." -msgstr "Güncelle" +msgstr "Güncelle..." #: plinth/modules/networks/templates/network_topology_content.html:10 -#, fuzzy, python-format -#| msgid "Direct connection to the Internet." +#, python-format msgid "How is Your %(box_name)s Connected to the Internet?" -msgstr "İnternet'e doğrudan bağlantı." +msgstr "%(box_name)s Cihazınız Internet'e Nasıl Bağlı?" #: plinth/modules/networks/templates/network_topology_content.html:16 #, python-format @@ -4100,11 +4243,14 @@ msgid "" "your network. This information is used to guide you with further setup. It " "can be changed later." msgstr "" +"%(box_name)s cihazınızın ağınıza nasıl bağlandığını en iyi tanımlayan " +"seçeneği seçin. Bu bilgiler, daha ileri ayarlamada size yol göstermek için " +"kullanılır. Daha sonra değiştirilebilir." #: plinth/modules/networks/templates/network_topology_main.html:9 #, python-format msgid "%(box_name)s Internet Connectivity" -msgstr "" +msgstr "%(box_name)s Internet Bağlanabilirliği" #: plinth/modules/networks/templates/network_topology_main.html:15 #, python-format @@ -4113,6 +4259,9 @@ msgid "" "network. This information is used only to suggest necessary configuration " "actions." msgstr "" +"Aşağıdaki, %(box_name)s cihazınızın ağınıza nasıl bağlandığını en iyi " +"şekilde tanımlar. Bu bilgiler sadece gerekli yapılandırma eylemlerini " +"önermek için kullanılır." #: plinth/modules/networks/templates/network_topology_main.html:24 #, python-format @@ -4120,6 +4269,8 @@ msgid "" "Your %(box_name)s gets its Internet connection from your router via Wi-Fi or " "Ethernet cable. This is a typical home setup." msgstr "" +"%(box_name)s cihazınız Internet bağlantısını yönlendiricinizden Kablosuz (Wi-" +"Fi) veya Ethernet kablosu ile alır. Bu tipik bir ev ayarlamasıdır." #: plinth/modules/networks/templates/network_topology_main.html:29 #, python-format @@ -4127,6 +4278,8 @@ msgid "" "Your %(box_name)s is directly connected to the Internet and all your devices " "connect to %(box_name)s for their Internet connectivity." msgstr "" +"%(box_name)s cihazınız doğrudan Internet'e bağlı ve tüm cihazlarınız kendi " +"Internet bağlanabilirlikleri için %(box_name)s cihazına bağlanır." #: plinth/modules/networks/templates/network_topology_main.html:34 #, python-format @@ -4134,18 +4287,21 @@ msgid "" "Your Internet connection is directly attached to your %(box_name)s and there " "are no other devices on the network." msgstr "" +"Internet bağlantınız doğrudan %(box_name)s cihazınıza bağlı ve ağda başka " +"cihaz yok." #: plinth/modules/networks/templates/networks_configuration.html:51 msgid "" "Advanced networking operations such as bonding, bridging and VLAN management " "are provided by the Cockpit app." msgstr "" +"Birleştirme, köprüleme ve VLAN yönetimi gibi gelişmiş ağ işlemleri Cockpit uygulaması tarafından sağlanır." #: plinth/modules/networks/templates/router_configuration_content.html:10 -#, fuzzy, python-format -#| msgid "Plinth is up to date." +#, python-format msgid "Setup %(box_name)s Behind a Router" -msgstr "Plinth günceldir." +msgstr "%(box_name)s Cihazını bir Yönlendirici Arkasında Ayarlama" #: plinth/modules/networks/templates/router_configuration_content.html:16 #, python-format @@ -4153,6 +4309,8 @@ msgid "" "Your %(box_name)s gets its internet connection from your router via Wi-Fi or " "Ethernet cable. This is a typical home setup." msgstr "" +"%(box_name)s cihazınız internet bağlantısını yönlendiricinizden Kablosuz (Wi-" +"Fi) veya Ethernet kablosu ile alır. Bu tipik bir ev ayarlamasıdır." #: plinth/modules/networks/templates/router_configuration_content.html:23 #, python-format @@ -4162,6 +4320,10 @@ msgid "" "configured to forward all traffic it receives so that %(box_name)s provides " "the services." msgstr "" +"Bu ayarlamayla, internet'te %(box_name)s cihazınıza ulaşmaya çalışan " +"herhangi bir cihazın yönlendiricinizden geçmesi gerekecektir. %(box_name)s " +"cihazının hizmetleri sağlaması için yönlendiricinin aldığı tüm trafiği " +"yönlendirecek şekilde yapılandırılması gerekecektir." #: plinth/modules/networks/templates/router_configuration_content.html:32 msgid "" @@ -4169,16 +4331,21 @@ msgid "" "see options to overcome this limitation, choose 'no public address' option " "in Internet connection type selection." msgstr "" +"Eğer yönlendiriciniz üzerinde denetiminiz yoksa yapılandırmamayı seçin. Bu " +"sınırlamanın üstesinden gelme seçeneklerini görmek için Internet bağlantı " +"türü seçiminde 'dış IP adresi yok' seçeneğini seçin." #: plinth/modules/networks/templates/router_configuration_content.html:39 msgid "Choose How You Wish to Configure Your Router" -msgstr "" +msgstr "Yönlendiricinizi Nasıl Yapılandırmak İstediğinizi Seçin" #: plinth/modules/networks/templates/router_configuration_content.html:42 msgid "" "You will need to login to your router's administration console provided by " "the router. This may look like one of the following:" msgstr "" +"Yönlendirici tarafından sağlanan yönlendiricinizin yönetim konsolunda oturum " +"açmanız gerekecek. Bu, aşağıdakilerden birine benzeyebilir:" #: plinth/modules/networks/templates/router_configuration_content.html:54 msgid "" @@ -4189,76 +4356,82 @@ msgid "" "model number and search online for the router's manual. This will provide " "full instructions on how to perform this task." msgstr "" +"Yönlendiriciyi ilk ayarladığınızda kullanıcı adı ve parola sizin " +"tarafınızdan yapılandırılır. Birçok yönlendirici için bu bilgiler " +"yönlendiricinin arkasında yazılıdır. Eğer yönlendiricinin kimlik bilgilerini " +"veya IP adresini hatırlamıyorsanız, sıfırlamaya ve yeniden ayarlamaya karar " +"verebilirsiniz. Yönlendiricinizin model numarasına bakın ve yönlendiricinin " +"kılavuzunu çevrimiçi olarak arayın. Bu, bu görevin nasıl " +"gerçekleştirileceğine dair tam talimatlar sağlayacak." -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "Ağ Bağlantıları" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." -msgstr "Bağlantı gösterilemez: bağlantı bulunamadı." +msgstr "Bağlantı gösterilemiyor: Bağlantı bulunamadı." -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" -msgstr "Bağlantı Verileri" +msgstr "Bağlantı Bilgileri" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." -msgstr "Bağlantı düzenlenemez: bağlantı bulunamadı." +msgstr "Bağlantı düzenlenemiyor: Bağlantı bulunamadı." -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." -msgstr "Bu tip bağlantı henüz anlaşılamamaktadır." +msgstr "Bu tür bir bağlantı henüz anlaşılmadı." -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "{name} bağlantısı etkinleştirildi." -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." -msgstr "Bağlantı etkinleştirilemedi: bağlantı bulunamadı." +msgstr "Bağlantıyı etkinleştirme başarısız oldu: Bağlantı bulunamadı." -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -"{name} isimli bağlantı etkinleştirilemedi: hiçbir uygun cihaz mevcut değil." +"{name} bağlantısını etkinleştirme başarısız oldu: Mevcut uygun bir cihaz yok." -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." -msgstr "{name} isimli bağlantı devre dışı bırakıldı." +msgstr "{name} bağlantısı devre dışı bırakıldı." -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." -msgstr "" -"Bağlantının devre dışı bırakılması başarısız oldu: bağlantı bulunamadı." +msgstr "Bağlantıyı devre dışı bırakma başarısız oldu: Bağlantı bulunamadı." -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" -msgstr "Yeni Jenerik Bağlantı Ekleniyor" +msgstr "Yeni Genel Bağlantı Ekleme" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" -msgstr "Yeni Ethernet Bağlantısı Ekleniyor" +msgstr "Yeni Ethernet Bağlantısı Ekleme" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" -msgstr "Yeni PPPoE Bağlantısı Ekleniyor" +msgstr "Yeni PPPoE Bağlantısı Ekleme" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" -msgstr "Yeni Kablosuz Bağlantı Ekleniyor" +msgstr "Yeni Kablosuz (Wi-Fi) Bağlantısı Ekleme" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." -msgstr "{name} isimli bağlantı silindi." +msgstr "{name} bağlantısı silindi." -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." -msgstr "Bağlantının silinmesi başarısız oldu: bağlantı bulunamadı." +msgstr "Bağlantının silinmesi başarısız oldu: Bağlantı bulunamadı." #: plinth/modules/openvpn/__init__.py:26 #, python-brace-format @@ -4270,31 +4443,31 @@ msgid "" "You can also access the rest of the Internet via {box_name} for added " "security and anonymity." msgstr "" -"Sanal Özel Ağ (Virtual Private Network, VPN), özel bir ağın kaynaklarına " -"erişmek için iki cihaz arasında güvenli bir şekilde bağlantı kurmak için " -"kullanılan tekniktir. Evinizden uzaktayken ev ağınıza erişmek için " -"{box_name} kutusuna bağlanıp {box_name} tarafından sunulan özel/dahili " -"servisleri kullanabilirsiniz. Aynı zamanda ek güvenlik ve anonimlik için " -"İnternet'in geri kalanına {box_name} vasıtasıyla erişebilirsiniz." +"Sanal Özel Ağ (VPN), özel bir ağın kaynaklarına erişmek için iki cihazı " +"güvenli bir şekilde bağlamak için kullanılan bir tekniktir. Evden uzaktayken " +"ev ağınıza katılmak ve {box_name} tarafından sağlanan özel/dahili hizmetlere " +"erişmek için {box_name} cihazınıza bağlanabilirsiniz. Eklenen güvenlik ve " +"isim gizliliği sayesinde {box_name} aracılığıyla Internet'e de " +"erişebilirsiniz." -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "OpenVPN" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" -msgstr "Sanal Özel Şebeke" +msgstr "Sanal Özel Ağ" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" -msgstr "Profil İndir" +msgstr "Profili İndir" #: plinth/modules/openvpn/manifest.py:48 msgid "Tunnelblick" -msgstr "" +msgstr "Tunnelblick" #: plinth/modules/openvpn/templates/openvpn.html:20 #, python-format @@ -4303,17 +4476,18 @@ msgid "" "time. Depending on how fast your %(box_name)s is, it may even take hours. " "If the setup is interrupted, you may start it again." msgstr "" -"OpenVPN kurulumu henüz yapılmamıştır. Güvenli kurulum yapmak çok uzun bir " -"süre alır. %(box_name)s kutunuzun hızına bağlı olarak saatler sürmesi bile " -"mümkündür. Eğer kurulum kesilirse, tekrar başlatabilirsiniz." +"OpenVPN henüz ayarlanmadı. Güvenli bir ayarlama gerçekleştirilmesi çok uzun " +"zaman alır. %(box_name)s cihazınızın ne kadar hızlı olduğuna bağlı olarak " +"saatler bile sürebilir. Eğer ayarlama yarıda kesilirse, tekrar " +"başlatabilirsiniz." #: plinth/modules/openvpn/templates/openvpn.html:33 msgid "Start setup" -msgstr "Kuruluma başla" +msgstr "Ayarlamayı başlat" #: plinth/modules/openvpn/templates/openvpn.html:42 msgid "OpenVPN setup is running" -msgstr "OpenVPN kurulumu çalışmaktadır" +msgstr "OpenVPN ayarlaması çalışıyor" #: plinth/modules/openvpn/templates/openvpn.html:46 #, python-format @@ -4322,54 +4496,44 @@ msgid "" "on how fast your %(box_name)s is, it may even take hours. If the setup is " "interrupted, you may start it again." msgstr "" -"Güvenli kurulum yapmak çok uzun bir süre alır. %(box_name)s kutunuzun hızına " -"bağlı olarak saatler sürmesi bile mümkündür. Eğer kurulum kesilirse, tekrar " -"başlatabilirsiniz." +"Güvenli bir ayarlama gerçekleştirmek için bu işlem çok uzun sürer. " +"%(box_name)s cihazınızın ne kadar hızlı olduğuna bağlı olarak saatler bile " +"sürebilir. Eğer ayarlama yarıda kesilirse, tekrar başlatabilirsiniz." #: plinth/modules/openvpn/templates/openvpn.html:61 msgid "Profile" msgstr "Profil" #: plinth/modules/openvpn/templates/openvpn.html:64 -#, fuzzy, python-format -#| msgid "" -#| "To connect to %(box_name)s's VPN, you need to download a profile and feed " -#| "it to an OpenVPN client on your mobile or desktop machine. OpenVPN " -#| "Clients are available for most platforms. See documentation on recommended clients and instructions on " -#| "how to configure them." +#, python-format msgid "" "To connect to %(box_name)s's VPN, you need to download a profile and feed it " "to an OpenVPN client on your mobile or desktop machine. OpenVPN Clients are " "available for most platforms. Click \"Learn more...\" above for recommended " "clients and instructions on how to configure them." msgstr "" -"%(box_name)s kutusunun VPN'ine erişmek için bir profil indirmeniz ve bunu " -"mobil ya da masaüstü makinenize yüklemeniz gerekir. OpenVPN istemcileri " -"platformların çoğu için mevcuttur. Tavsiye edilen istemciler ve onları " -"yapılandırma talimatları için belgelendirmeyi " -"okuyun." +"%(box_name)s cihazının VPN'ine bağlanmak için bir profil indirmeniz ve bunu " +"mobil veya masaüstü makinenizdeki bir OpenVPN istemcisine göstermeniz " +"gerekir. OpenVPN İstemcileri çoğu platform için mevcuttur. Önerilen " +"istemciler ve bunların nasıl yapılandırılacağıyla ilgili talimatlar için " +"yukarıdaki \"Daha fazla bilgi edinin...\" bağlantısına tıklayın." #: plinth/modules/openvpn/templates/openvpn.html:74 #, python-format msgid "Profile is specific to each user of %(box_name)s. Keep it a secret." -msgstr "" -"Profil, %(box_name)s kutusunun her kullanıcısı için özeldir. Onun " -"gizliliğini koruyun." +msgstr "Profil, %(box_name)s cihazının her kullanıcısına özgüdür. Gizli tutun." #: plinth/modules/openvpn/templates/openvpn.html:85 msgid "Download my profile" msgstr "Profilimi indir" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." -msgstr "Kurulum tamamlandı." +msgstr "Ayarlama tamamlandı." -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." -msgstr "Kurulum başarısız oldu." +msgstr "Ayarlama başarısız oldu." #: plinth/modules/pagekite/__init__.py:28 #, python-brace-format @@ -4379,65 +4543,54 @@ msgid "" "services are unreachable from the rest of the Internet. This includes the " "following situations:" msgstr "" -"PageKite {box_name} servislerine İnternet'e doğrudan bağlantınız olmadığında " -"erişmek için bir sistemdir. Buna sadece {box_name} servislerine İnternet'ten " -"erişmek mümkün değilse ihtiyaç duyarsınız. Bu, şu durumları kapsar:" +"PageKite, Internet'e doğrudan bağlantınız olmadığında {box_name} " +"hizmetlerini kullanıma sunmak için kullanılan bir sistemdir. Buna sadece " +"{box_name} hizmetlerinize Internet'ten erişilemiyorsa ihtiyacınız vardır. " +"Bu, aşağıdaki durumları içerir:" #: plinth/modules/pagekite/__init__.py:33 #, python-brace-format msgid "{box_name} is behind a restricted firewall." -msgstr "{box_name} kısıtlı bir güvenlik duvarının arkasında olduğunda." +msgstr "{box_name} kısıtlanmış bir güvenlik duvarının arkasında." #: plinth/modules/pagekite/__init__.py:36 #, python-brace-format msgid "{box_name} is connected to a (wireless) router which you don't control." -msgstr "" -"{box_name} kontrolünüzde olmayan bir (kablosuz) yönlendiriciye bağlı " -"olduğunda." +msgstr "{box_name} denetleyemediğiniz bir (kablosuz) yönlendiriciye bağlı." #: plinth/modules/pagekite/__init__.py:38 msgid "" "Your ISP does not provide you an external IP address and instead provides " "Internet connection through NAT." msgstr "" -"İnternet Erişim Sağlayıcınız size harici bir IP adresi sunmadığında ve bunun " -"yerine İnternet bağlantısını NAT vasıtasıyla sağladığında." +"ISS'niz size bir dış IP adresi sağlamıyor ve bunun yerine NAT aracılığıyla " +"Internet bağlantısı sağlıyor." #: plinth/modules/pagekite/__init__.py:40 -#, fuzzy -#| msgid "" -#| "Your ISP does not provide you a static IP address and your IP address " -#| "changes evertime you connect to Internet." msgid "" "Your ISP does not provide you a static IP address and your IP address " "changes every time you connect to Internet." msgstr "" -"İnternet Erişim Sağlayıcınız size statik bir IP adresi sağlamadığında ve IP " -"adresiniz İnternet'e her bağlandığınızda değiştiğinde." +"ISS'niz size bir sabit IP adresi sağlamıyor ve IP adresiniz Internet'e her " +"bağlandığınızda değişiyor." #: plinth/modules/pagekite/__init__.py:42 msgid "Your ISP limits incoming connections." -msgstr "İnternet Erişim Sağlayıcınız içeri gelen bağlantıları kısıtladığında." +msgstr "ISS'niz gelen bağlantıları sınırlıyor." #: plinth/modules/pagekite/__init__.py:44 -#, fuzzy, python-brace-format -#| msgid "" -#| "PageKite works around NAT, firewalls and IP-address limitations by using " -#| "a combination of tunnels and reverse proxies. You can use any pagekite " -#| "service provider, for example pagekite." -#| "net. In future it might be possible to use your buddy's {box_name} " -#| "for this." +#, python-brace-format msgid "" "PageKite works around NAT, firewalls and IP address limitations by using a " "combination of tunnels and reverse proxies. You can use any pagekite service " "provider, for example pagekite.net. In " "the future it might be possible to use your buddy's {box_name} for this." msgstr "" -"PageKite NAT, güvenlik duvarları ve IP adresi sınırlamalarına rağmen tünel " -"ve ters vekil sunucular birleşimini kullanarak işleyebilir. Herhangi bir " -"pagekite servis sağlayıcısını kullanabilirsiniz, örneğin pagekite.net. Gelecekte bunun için arkadaşlarınızın " -"{box_name} kutusunu kullanmanız mümkün olacaktır." +"PageKite, tünellerin ve ters proksilerin bir birleşimini kullanarak NAT, " +"güvenlik duvarları ve IP adresi sınırlamaları etrafından çalışır. Herhangi " +"bir pagekite hizmet sağlayıcısını kullanabilirsiniz, örneğin pagekite.net. Gelecekte bunun için " +"arkadaşınızın {box_name} cihazını kullanmak mümkün olabilir." #: plinth/modules/pagekite/__init__.py:64 msgid "PageKite" @@ -4445,57 +4598,55 @@ msgstr "PageKite" #: plinth/modules/pagekite/__init__.py:66 msgid "Public Visibility" -msgstr "Herkese Açık Görünülürlük" +msgstr "Herkese Açık Görünürlük" #: plinth/modules/pagekite/__init__.py:76 -#, fuzzy -#| msgid "PageKite Account" msgid "PageKite Domain" -msgstr "PageKite Hesabı" +msgstr "PageKite Etki Alanı" #: plinth/modules/pagekite/forms.py:47 msgid "Server domain" -msgstr "Sunucu alanı" +msgstr "Sunucu etki alanı" #: plinth/modules/pagekite/forms.py:49 msgid "" "Select your pagekite server. Set \"pagekite.net\" to use the default " "pagekite.net server." msgstr "" -"PageKite sunucunuzu seçin. Varsayılan pagekite.net sunucusunu kullanmak için " -"\"pagekite.net\" değerini kullanın." +"Pagekite sunucunuzu seçin. Varsayılan pagekite.net sunucusunu kullanmak için " +"\"pagekite.net\" olarak ayarlayın." #: plinth/modules/pagekite/forms.py:52 plinth/modules/shadowsocks/forms.py:39 msgid "Server port" -msgstr "Sunucu portu" +msgstr "Sunucu bağlantı noktası" #: plinth/modules/pagekite/forms.py:53 msgid "Port of your pagekite server (default: 80)" -msgstr "PageKite sunucunuzun portu (varsayılan: 80)" +msgstr "Pagekite sunucunuzun bağlantı noktası (varsayılan: 80)" #: plinth/modules/pagekite/forms.py:55 msgid "Kite name" -msgstr "Kite ismi" +msgstr "Kite adı" #: plinth/modules/pagekite/forms.py:56 msgid "Example: mybox.pagekite.me" -msgstr "Örnek: mybox.pagekite.me" +msgstr "Örnek: benimkutum.pagekite.me" #: plinth/modules/pagekite/forms.py:58 msgid "Invalid kite name" -msgstr "Geçersiz kite ismi" +msgstr "Geçersiz kite adı" #: plinth/modules/pagekite/forms.py:62 msgid "Kite secret" -msgstr "Kite sırrı" +msgstr "Kite gizli anahtarı" #: plinth/modules/pagekite/forms.py:63 msgid "" "A secret associated with the kite or the default secret for your account if " "no secret is set on the kite." msgstr "" -"Kite ile ilişkilendirilmiş bir sır ya da kite üzerinde hiçbir sır " -"ayarlanmamışsa hesabınız için varsayılan sır." +"Kite ile ilişkilendirilmiş bir gizli anahtar ya da kite üzerinde hiçbir " +"gizli anahtar ayarlanmamışsa hesabınız için varsayılan gizli anahtar." #: plinth/modules/pagekite/forms.py:100 msgid "protocol" @@ -4503,64 +4654,54 @@ msgstr "protokol" #: plinth/modules/pagekite/forms.py:103 msgid "external (frontend) port" -msgstr "harici (ön arayüz) port" +msgstr "harici (ön uç) bağlantı noktası" #: plinth/modules/pagekite/forms.py:106 msgid "internal (freedombox) port" -msgstr "dahili (freedombox) port" +msgstr "dahili (freedombox) bağlantı noktası" #: plinth/modules/pagekite/forms.py:107 msgid "Enable Subdomains" -msgstr "Alt Alanları Etkinleştir" +msgstr "Alt Etki Alanlarını etkinleştir" #: plinth/modules/pagekite/forms.py:141 msgid "Deleted custom service" -msgstr "Özel servis silindi" +msgstr "Özel hizmet silindi" #: plinth/modules/pagekite/forms.py:174 -#, fuzzy -#| msgid "" -#| "This service is available as a standard service. Please use the " -#| "\"Standard Services\" page to enable it." msgid "This service is already available as a standard service." -msgstr "" -"Bu servis standart bir servis olarak mevcuttur. Etkinleştirmek için lütfen " -"\"Standart Servisler\" sayfasını kullanın." +msgstr "Bu hizmet zaten standart bir hizmet olarak mevcut." #: plinth/modules/pagekite/forms.py:182 msgid "Added custom service" -msgstr "Özel servis eklendi" +msgstr "Özel hizmet eklendi" #: plinth/modules/pagekite/forms.py:185 msgid "This service already exists" -msgstr "Bu servis zaten mevcuttur" +msgstr "Bu hizmet zaten var" #: plinth/modules/pagekite/templates/pagekite_configure.html:25 msgid "Custom Services" -msgstr "Özel Servisler" +msgstr "Özel Hizmetler" #: plinth/modules/pagekite/templates/pagekite_configure.html:29 #: plinth/modules/pagekite/templates/pagekite_configure.html:31 -#, fuzzy -#| msgid "Custom Services" msgid "Add Custom Service" -msgstr "Özel Servisler" +msgstr "Özel Hizmet Ekle" #: plinth/modules/pagekite/templates/pagekite_configure.html:47 #, python-format msgid "connected to %(backend_host)s:%(backend_port)s" -msgstr "%(backend_host)s:%(backend_port)s unsuruna bağlandı" +msgstr "%(backend_host)s:%(backend_port)s cihazına bağlandı" #: plinth/modules/pagekite/templates/pagekite_configure.html:59 msgid "Delete this service" -msgstr "Bu servisi sil" +msgstr "Bu hizmeti sil" #: plinth/modules/pagekite/templates/pagekite_custom_services.html:11 #: plinth/modules/pagekite/views.py:33 -#, fuzzy -#| msgid "Added custom service" msgid "Add custom PageKite service" -msgstr "Özel servis eklendi" +msgstr "Özel PageKite hizmeti ekle" #: plinth/modules/pagekite/templates/pagekite_custom_services.html:14 msgid "" @@ -4568,30 +4709,31 @@ msgid "" "protocol/port combinations that you are able to define here. For example, " "HTTPS on ports other than 443 is known to cause problems." msgstr "" -"İkaz:
    PageKite ön arayüz sunucunuz burada ayarlayabileceğiniz tüm " -"protokol/bağlantı noktası (port) tertiplerini desteklemeyebilir. Mesela 443 " -"bağlantı noktasından değişik bağlantı noktalarında HTTPS protokolünün sorun " -"çıkardığı bilinir." +"Uyarı:
    PageKite ön uç sunucunuz burada tanımlayabildiğiniz tüm " +"protokol/bağlantı noktası birleşimlerini desteklemeyebilir. Örneğin, 443 " +"dışındaki bağlantı noktalarında HTTPS'nin sorunlara neden olduğu " +"bilinmektedir." #: plinth/modules/pagekite/utils.py:42 msgid "Web Server (HTTP)" -msgstr "Ağ Sunucusu (HTTP)" +msgstr "Web Sunucusu (HTTP)" #: plinth/modules/pagekite/utils.py:44 #, python-brace-format msgid "Site will be available at http://{0}" msgstr "" -"Siteye http://{0} adresinde erişilebilecektir" +"Site http://{0} adresinde kullanılabilir olacaktır" #: plinth/modules/pagekite/utils.py:56 msgid "Web Server (HTTPS)" -msgstr "Ağ Sunucusu (HTTPS)" +msgstr "Web Sunucusu (HTTPS)" #: plinth/modules/pagekite/utils.py:58 #, python-brace-format msgid "Site will be available at https://{0}" msgstr "" -"Siteye https://{0} adresinde erişilebilecektir" +"Site https://{0} adresinde kullanılabilir " +"olacaktır" #: plinth/modules/pagekite/utils.py:70 msgid "Secure Shell (SSH)" @@ -4602,39 +4744,50 @@ msgid "" "See SSH client setup instructions" msgstr "" -"SSH istemci kurulum talimatlarını okuyun" +"SSH istemci ayarlaması talimatlarına bakın" #: plinth/modules/performance/__init__.py:16 #: plinth/modules/performance/__init__.py:45 msgid "Performance" +msgstr "Performans" + +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." msgstr "" #: plinth/modules/performance/__init__.py:46 -#, fuzzy -#| msgid "System Configuration" msgid "System Monitoring" -msgstr "Sistem Yapılandırması" +msgstr "Sistem İzleme" #: plinth/modules/power/__init__.py:16 msgid "Restart or shut down the system." -msgstr "Sistemi tekrar başlat ya da kapat." +msgstr "Sistemi yeniden başlatın veya kapatın." #: plinth/modules/power/__init__.py:31 msgid "Power" -msgstr "Enerji" +msgstr "Güç" #: plinth/modules/power/templates/power.html:13 msgid "" "Currently an installation or upgrade is running. Consider waiting until it's " "finished before shutting down or restarting." msgstr "" -"Şu anda bir kurulum ya da yükseltme çalışmaktadır. Kapatmadan ya da yeniden " -"başlatmadan önce bunun sona ermesini beklemeyi değerlendirin." +"Şu anda bir kurulum veya yükseltme çalışıyor. Kapatmadan veya yeniden " +"başlatmadan önce bitene kadar beklemeyi düşünün." #: plinth/modules/power/templates/power.html:22 msgid "Restart »" -msgstr "Tekrar başlat »" +msgstr "Yeniden Başlat »" #: plinth/modules/power/templates/power.html:25 msgid "Shut Down »" @@ -4645,37 +4798,37 @@ msgid "" "Are you sure you want to restart? You will not be able to access this web " "interface for a few minutes until the system is restarted." msgstr "" -"Yeniden başlatmak istediğinizden emin misiniz? Bu ağ arayüzüne sistem tekrar " -"başlatılına dek birkaç dakika boyunca erişemeyeceksiniz." +"Yeniden başlatmak istediğinize emin misiniz? Sistem yeniden başlatılana " +"kadar bu web arayüzüne birkaç dakika erişemeyeceksiniz." #: plinth/modules/power/templates/power_restart.html:34 msgid "" "Currently an installation or upgrade is running. Consider waiting until it's " "finished before restarting." msgstr "" -"Şu anda bir kurulum ya da yükseltme çalışmaktadır. Yeniden başlatmadan önce " -"bunun sona ermesini beklemeyi değerlendirin." +"Şu anda bir kurulum veya yükseltme çalışıyor. Yeniden başlatmadan önce " +"bitene kadar beklemeyi düşünün." #: plinth/modules/power/templates/power_restart.html:48 #: plinth/modules/power/templates/power_restart.html:51 msgid "Restart Now" -msgstr "Şimdi Tekrar Başlat" +msgstr "Şimdi Yeniden Başlat" #: plinth/modules/power/templates/power_shutdown.html:17 msgid "" "Are you sure you want to shut down? You will not be able to access this web " "interface after shut down." msgstr "" -"Sistemi kapatmak istediğinizden emin misiniz? Kapatmanın ardından bu ağ " -"arayüzüne erişemeyeceksiniz." +"Kapatmak istediğinize emin misiniz? Kapattıktan sonra bu web arayüzüne " +"erişemeyeceksiniz." #: plinth/modules/power/templates/power_shutdown.html:33 msgid "" "Currently an installation or upgrade is running. Consider waiting until it's " "finished before shutting down." msgstr "" -"Şu anda bir kurulum ya da yükseltme çalışmaktadır. Kapatmadan önce bunun " -"sona ermesini beklemeyi değerlendirin." +"Şu anda bir kurulum veya yükseltme çalışıyor. Kapatmadan önce bitene kadar " +"beklemeyi düşünün." #: plinth/modules/power/templates/power_shutdown.html:47 #: plinth/modules/power/templates/power_shutdown.html:50 @@ -4688,10 +4841,10 @@ msgid "" "enhancing privacy, modifying web page data and HTTP headers, controlling " "access, and removing ads and other obnoxious Internet junk. " msgstr "" -"Privoxy, reklamları ve diğer istenmeyen İnternet içeriğini kaldıran, ağ " -"sayfası verilerini ve HTTP başlıklarını değiştiren, gizliliği arttırmak için " -"gelişmiş filtreleme özellikleri bulunan ve önbelleğe veri almayan bir ağ " -"vekil sunucusudur. " +"Privoxy, gizliliği artırmak, web sayfası verilerini ve HTTP başlıklarını " +"değiştirmek, erişimi denetlemek ve reklamları ve diğer iğrenç Internet " +"çöplerini kaldırmak için gelişmiş süzme yeteneklerine sahip, önbelleğe " +"alınmayan bir web proksidir. " #: plinth/modules/privoxy/__init__.py:34 #, python-brace-format @@ -4702,12 +4855,10 @@ msgid "" "config.privoxy.org\">http://config.privoxy.org/ or http://p.p." msgstr "" -"Privoxy'yi tarayıcınızın vekil sunucu ayarlarını {box_name} kutunuzun makine " -"ismine (ya da IP adresine) 8118 numaralı port ile ayarlayarak " -"kullanabilirsiniz. Privoxy'yi kullanırken belgelendirmesini ve yapılandırma " -"ayrıntılarını http://config.privoxy." -"org/ veya http://p.p adresinde " -"görebilirsiniz." +"Tarayıcı proksi ayarlarınızı {box_name} anamakine adınıza (veya IP adresine) " +"8118 bağlantı noktasıyla değiştirerek Privoxy'yi kullanabilirsiniz. Privoxy " +"kullanırken, yapılandırma ayrıntılarını ve belgelerini https://www.privoxy.org adresinde görebilirsiniz." #: plinth/modules/privoxy/__init__.py:55 msgid "Privoxy" @@ -4715,12 +4866,12 @@ msgstr "Privoxy" #: plinth/modules/privoxy/__init__.py:56 msgid "Web Proxy" -msgstr "Ağ Vekil Sunucusu" +msgstr "Web Proksi" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" -msgstr "{url} konumuna {proxy} vekili vasıtasıyla tcp{kind} üzerinden eriş" +msgstr "Tcp{kind} üzerinde {proxy} proksi ile {url} adresine erişin" #: plinth/modules/quassel/__init__.py:33 #, python-brace-format @@ -4732,12 +4883,12 @@ msgid "" "one or more Quassel clients from a desktop or a mobile can be used to " "connect and disconnect from it." msgstr "" -"Quassel, \"çekirdek\" ve \"istemci\" olarak ikiye ayrılmış bir IRC " -"uygulamasıdır. Bu, istemcinin çevrimdışı olduğu zamanda bile çekirdeğin IRC " -"sunucularına bağlı kalmasına ve mesajları almaya devam etmesine imkân verir. " -"{box_name} Quassel çekirdek servisini daima çevrimiçinde tutabilir ve bir ya " -"da daha fazla Quassel istemcileri masaüstünden ya da mobil telefondan ona " -"bağlanmak ve ondan bağlantıyı kesmek için kullanılabilir." +"Quassel, bir \"çekirdek\" ve bir \"istemci\" olmak üzere iki bölüme ayrılmış " +"bir IRC uygulamasıdır. Bu, çekirdeğin IRC sunucularına bağlı kalmasına ve " +"istemci bağlantısı kesildiğinde bile ileti almaya devam etmesini sağlar. " +"{box_name}, sizi her zaman çevrimiçi tutan Quassel çekirdek hizmetini " +"çalıştırabilir ve bir masaüstünden veya cep telefonundan bir veya daha fazla " +"Quassel istemcisini bağlamak ve bağlantısını kesmek için kullanılabilir." #: plinth/modules/quassel/__init__.py:40 msgid "" @@ -4746,16 +4897,16 @@ msgid "" "downloads\">desktop and mobile devices are available." msgstr "" -"Quassel çekirdeğine varsayılan Quassel portu olan 4242 numaralı porttan " -"bağlanabilirsiniz. Quassel'e bağlanacak masaüstü ve mobil cihaz istemcileri mevcuttur." +"Quassel çekirdeğinize varsayılan Quassel bağlantı noktası 4242 üzerinden " +"bağlanabilirsiniz. Quassel'e masaüstü ve mobil cihazlarınızdan bağlanacak istemciler mevcuttur." -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "Quassel" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "IRC İstemcisi" @@ -4763,13 +4914,8 @@ msgstr "IRC İstemcisi" msgid "Quasseldroid" msgstr "Quasseldroid" -#: plinth/modules/radicale/__init__.py:33 -#, fuzzy, python-brace-format -#| msgid "" -#| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " -#| "sharing of scheduling and contact data. To use Radicale, a supported client application is " -#| "needed. Radicale can be accessed by any user with a {box_name} login." +#: plinth/modules/radicale/__init__.py:29 +#, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " "sharing of scheduling and contact data. To use Radicale, a is needed. Radicale can be accessed by any user with a " "{box_name} login." msgstr "" -"Radicale, bir CalDAV ve CardDAV sunucusudur. İletişim ve randevu verilerinin " -"paylaşılmasına ve eşleştirilmesine imkân verir. Radicale'i kullanmak için " -"desteklenen bir istemci uygulama " -"gereklidir. Radicale'e erişim {box_name} girişi olan herhangi bir kullanıcı " -"tarafından yapılabilir." +"Radicale bir CalDAV ve CardDAV sunucusudur. Planlama ve kişi verilerinin " +"eşitlenmesini ve paylaşımını sağlar. Radicale'yi kullanmak için desteklenen bir istemci uygulaması gereklidir. Radicale'ye {box_name} " +"oturum açma adı ile herhangi bir kullanıcı tarafından erişilebilir." -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" +"Radicale, sadece yeni takvimler ve adres defterleri oluşturmayı destekleyen " +"temel bir web arayüzü sağlar. Ayrı bir istemci kullanılarak yapılması " +"zorunlu olan olayların veya kişilerin eklenmesini desteklemez." -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "Radicale" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "Takvim ve Adres Defteri" @@ -4806,45 +4955,43 @@ msgstr "" "yapabilir." #: plinth/modules/radicale/forms.py:18 -#, fuzzy, python-brace-format -#| msgid "" -#| "Any user can view any calendar/addressbook, but only the owner can make " -#| "changes." +#, python-brace-format msgid "" "Any user with a {box_name} login can view any calendar/addressbook, but only " "the owner can make changes." msgstr "" -"Herhangi bir kullanıcı takvim/adres defterini görüntüleyebilir ancak sadece " -"sahibi değişiklik yapabilir." +"{box_name} oturum açma bilgilerine sahip herhangi bir kullanıcı herhangi bir " +"takvimi/adres defterini görüntüleyebilir, ancak sadece sahibi değişiklik " +"yapabilir." #: plinth/modules/radicale/forms.py:23 -#, fuzzy, python-brace-format -#| msgid "Any user can view or make changes to any calendar/addressbook." +#, python-brace-format msgid "" "Any user with a {box_name} login can view or make changes to any calendar/" "addressbook." msgstr "" -"Takvim/adres defterini herhangi bir kullanıcı görüntüleyebilir ya da " -"değişiklik yapabilir." +"{box_name} oturum açma bilgilerine sahip herhangi bir kullanıcı herhangi bir " +"takvimi/adres defterini görüntüleyebilir ve değişiklik yapabilir." + +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "Erişim Noktası" #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" -msgstr "" +msgstr "DAVx5" #: plinth/modules/radicale/manifest.py:12 -#, fuzzy -#| msgid "" -#| "Enter the URL of the Radicale server (e.g. http://localhost:5232) and " -#| "your user name. DAVdroid will show all existing calendars and address " -#| "books and you can create new." msgid "" "Enter the URL of the Radicale server (e.g. https://) and your user name. DAVx5 will show all existing calendars and " "address books and you can create new." msgstr "" -"Radicale sunucusunun adresini (mesela http://localhost:5232) ve kullanıcı " -"isminizi girin. DAVdroid mevcut tüm takvimleri ve adres defterlerini " -"gösterecektir ve yenilerini oluşturabileceksiniz." +"Radicale sunucusunun URL'sini (örn. https://) ve " +"kullanıcı adınızı girin. DAVx5, varolan tüm takvimleri ve adres defterlerini " +"gösterecek ve yenilerini oluşturabilirsiniz." #: plinth/modules/radicale/manifest.py:29 msgid "GNOME Calendar" @@ -4852,7 +4999,7 @@ msgstr "GNOME Takvim" #: plinth/modules/radicale/manifest.py:37 msgid "Mozilla Thunderbird" -msgstr "" +msgstr "Mozilla Thunderbird" #: plinth/modules/radicale/manifest.py:57 msgid "Evolution" @@ -4863,16 +5010,10 @@ msgid "" "Evolution is a personal information management application that provides " "integrated mail, calendaring and address book functionality." msgstr "" -"Evolution, tümleşik adres defteri, takvim ve e-posta sunan kişisel bilgi " -"yönetimi uygulamasıdır." +"Evolution, bütünleştirilmiş posta, takvim ve adres defteri işlevselliği " +"sağlayan kişisel bir bilgi yönetimi uygulamasıdır." #: plinth/modules/radicale/manifest.py:63 -#, fuzzy -#| msgid "" -#| "In Evolution add a new calendar and address book respectively with " -#| "WebDAV. Enter the URL of the Radicale server (e.g. http://localhost:5232) " -#| "and your user name. Clicking on the search button will list the existing " -#| "calendars and address books." msgid "" "In Evolution add a new calendar and address book respectively with WebDAV. " "Enter the URL of the Radicale server (e.g. https://) ve " +"kullanıcı adınızı girin. Ara düğmesine tıklamak, varolan takvimleri ve adres " "defterlerini listeleyecektir." #: plinth/modules/radicale/views.py:35 @@ -4895,19 +5036,12 @@ msgid "" "from an email client, including MIME support, address book, folder " "manipulation, message searching and spell checking." msgstr "" -"Roundcube ağ e-postası, tarayıcı tabanlı, çoklu dil desteği olan ve uygulama " -"benzeri kullanıcı arayüzü bulunan bir IMAP istemcisidir. E-posta " -"istemcilerinden beklediğiniz tüm işlevleri sağlar ve buna MIME desteği, " -"adres defteri, klasör düzenleme, mesaj arama ve imlâ kontrolü de dahildir." +"Roundcube web postası, uygulama benzeri bir kullanıcı arayüzüne sahip, " +"tarayıcı tabanlı çok dilli bir IMAP istemcisidir. MIME desteği, adres " +"defteri, klasör işleme, ileti arama ve yazım denetimi dahil olmak üzere bir " +"e-posta istemcisinden beklediğiniz tam işlevselliği sağlar." #: plinth/modules/roundcube/__init__.py:26 -#, fuzzy -#| msgid "" -#| "You can access Roundcube from /roundcube. " -#| "Provide the username and password of the email account you wish to access " -#| "followed by the domain name of the IMAP server for your email provider, " -#| "like imap.example.com. For IMAP over SSL (recommended), " -#| "fill the server field like imaps://imap.example.com." msgid "" "You can use it by providing the username and password of the email account " "you wish to access followed by the domain name of the IMAP server for your " @@ -4915,12 +5049,11 @@ msgid "" "(recommended), fill the server field like imaps://imap.example.com." msgstr "" -"Roundcube'a /roundcube adresinden " -"erişebilirsiniz. Erişmek istediğiniz hesabın kullanıcı ismiyle parolasını ve " -"ardından e-posta sağlayıcınızın IMAP sunucusunun alan adını, mesela " -"imap.example.com gibi, belirtin. SSL üzerinden IMAP için (ki " -"tavsiye edilir), sunucu alanını imaps://imap.example.com gibi " -"doldurun." +"Erişmek istediğiniz e-posta hesabının kullanıcı adını ve parolasını ve " +"ardından imap.ornek.com gibi e-posta sağlayıcınız için IMAP " +"sunucusunun etki alanı adını girerek bunu kullanabilirsiniz. SSL üzerinden " +"IMAP için (önerilir), sunucu alanını imaps://imap.ornek.com " +"gibi doldurun." #: plinth/modules/roundcube/__init__.py:31 msgid "" @@ -4931,11 +5064,11 @@ msgid "" "lesssecureapps\">https://www.google.com/settings/security/lesssecureapps)." msgstr "" -"GMail için kullanıcı ismi GMail adresiniz, parolanız Google hesap parolanız " -"ve sunucu ise imaps://imap.gmail.com olacaktır. Google hesap " -"seçeneklerinde (https://www.google.com/settings/security/lesssecureapps) \"daha az güvenli uygulamalara\" müsaade etmeniz gerekeceğini unutmayın." +"Gmail için kullanıcı adı Gmail adresiniz, parolanız Google hesabı parolanız " +"ve sunucu imaps://imap.gmail.com olacaktır. Google hesap " +"ayarlarınızda \"Daha az güvenli uygulama erişimi\"ni de etkinleştirmeniz " +"gerekeceğini unutmayın (https://myaccount.google.com/lesssecureapps)." #: plinth/modules/roundcube/__init__.py:53 #: plinth/modules/roundcube/manifest.py:9 @@ -4951,6 +5084,8 @@ msgid "" "Samba allows to share files and folders between FreedomBox and other " "computers in your local network." msgstr "" +"Samba, FreedomBox ile yerel ağınızdaki diğer bilgisayarlar arasında dosya ve " +"klasör paylaşmayı sağlar." #: plinth/modules/samba/__init__.py:35 #, python-brace-format @@ -4960,79 +5095,80 @@ msgid "" "\\{hostname} (on Windows) or smb://{hostname}.local (on Linux and Mac). " "There are three types of shares you can choose from: " msgstr "" +"Kurulumdan sonra, paylaşım için hangi disklerin kullanılacağını " +"seçebilirsiniz. Etkinleştirilmiş paylaşımlara, bilgisayarınızdaki dosya " +"yöneticisinde \\\\{hostname} (Windows'ta) veya smb://{hostname} .local " +"(Linux ve Mac'te) konumunda erişilebilir. Aralarından seçim yapabileceğiniz " +"üç tür paylaşım vardır: " #: plinth/modules/samba/__init__.py:40 msgid "Open share - accessible to everyone in your local network." -msgstr "" +msgstr "Açık paylaşım - yerel ağınızdaki herkes tarafından erişilebilir." #: plinth/modules/samba/__init__.py:41 msgid "" "Group share - accessible only to FreedomBox users who are in the freedombox-" "share group." msgstr "" +"Grup paylaşımı - sadece Freedombox paylaşım grubundaki FreedomBox " +"kullanıcıları tarafından erişilebilir." #: plinth/modules/samba/__init__.py:43 msgid "" "Home share - every user in the freedombox-share group can have their own " "private space." msgstr "" +"Ev paylaşımı - Freedombox paylaşım grubundaki her kullanıcı kendi özel " +"alanına sahip olabilir." #: plinth/modules/samba/__init__.py:59 msgid "Access to the private shares" -msgstr "" +msgstr "Özel paylaşımlara erişim" #: plinth/modules/samba/__init__.py:62 msgid "Samba" -msgstr "" +msgstr "Samba" #: plinth/modules/samba/__init__.py:63 -#, fuzzy -#| msgid "Network Time Server" msgid "Network File Storage" -msgstr "Ağ Zaman Sunucusu" +msgstr "Ağ Dosya Depolama" #: plinth/modules/samba/manifest.py:15 -#, fuzzy -#| msgid "IRC Client" msgid "Android Samba Client" -msgstr "IRC İstemcisi" +msgstr "Android Samba İstemcisi" #: plinth/modules/samba/manifest.py:28 msgid "Ghost Commander - Samba plugin" -msgstr "" +msgstr "Ghost Commander - Samba eklentisi" #: plinth/modules/samba/manifest.py:42 msgid "VLC media player" -msgstr "" +msgstr "VLC ortam oynatıcı" #: plinth/modules/samba/manifest.py:56 -#, fuzzy -#| msgid "GNOME Calendar" msgid "GNOME Files" -msgstr "GNOME Takvim" +msgstr "GNOME Dosyaları" #: plinth/modules/samba/manifest.py:68 msgid "Dolphin" -msgstr "" +msgstr "Dolphin" #: plinth/modules/samba/templates/samba.html:24 #: plinth/modules/samba/templates/samba.html:35 -#, fuzzy -#| msgid "Shared" msgid "Shares" -msgstr "Paylaşılan" +msgstr "Paylaşımlar" #: plinth/modules/samba/templates/samba.html:26 msgid "" "Note: Only specially created directories will be shared on selected disks, " "not the whole disk." msgstr "" +"Not: Sadece özel olarak oluşturulmuş dizinler, bütün diskte değil, seçilen " +"disklerde paylaşılacaktır." #: plinth/modules/samba/templates/samba.html:34 -#, fuzzy -#| msgid "Domain Name" msgid "Disk Name" -msgstr "Alan Adı" +msgstr "Disk Adı" #: plinth/modules/samba/templates/samba.html:36 #: plinth/modules/storage/templates/storage.html:29 @@ -5041,7 +5177,7 @@ msgstr "Kullanılan" #: plinth/modules/samba/templates/samba.html:57 msgid "VFAT partitions are not supported" -msgstr "" +msgstr "VFAT bölümleri desteklenmiyor" #: plinth/modules/samba/templates/samba.html:88 #, python-format @@ -5050,149 +5186,128 @@ msgid "" "\"%(storage_url)s\">storage module page and configure access to the " "shares on the users module page." msgstr "" +"Depolama modülü sayfasında diskler hakkında " +"ek bilgi bulabilir ve kullanıcılar modülü " +"sayfasında paylaşımlara erişimi yapılandırabilirsiniz." #: plinth/modules/samba/templates/samba.html:94 msgid "Users who can currently access group and home shares" -msgstr "" +msgstr "Şu anda grup ve ev paylaşımlarına erişebilen kullanıcılar" #: plinth/modules/samba/templates/samba.html:98 msgid "" "Users needing to re-enter their password on the password change page to " "access group and home shares" msgstr "" +"Grup ve ev paylaşımlarına erişmek için parola değiştirme sayfasında " +"parolalarını yeniden girmesi gereken kullanıcılar" #: plinth/modules/samba/templates/samba.html:103 -#, fuzzy -#| msgid "Available Domains" msgid "Unavailable Shares" -msgstr "Mevcut Alanlar" +msgstr "Kullanılamaz Paylaşımlar" #: plinth/modules/samba/templates/samba.html:105 msgid "" "Shares that are configured but the disk is not available. If the disk is " "plugged back in, sharing will be automatically enabled." msgstr "" +"Yapılandırılan ancak disk kullanılabilir olmayan paylaşımlar. Eğer disk " +"tekrar takılırsa paylaşım otomatik olarak etkinleştirilecektir." #: plinth/modules/samba/templates/samba.html:113 -#, fuzzy -#| msgid "Shared" msgid "Share name" -msgstr "Paylaşılan" +msgstr "Paylaşım adı" #: plinth/modules/samba/templates/samba.html:114 -#, fuzzy -#| msgid "Actions" msgid "Action" -msgstr "Eylemler" +msgstr "Eylem" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 -#, fuzzy -#| msgid "Add Service" +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" -msgstr "Servis Ekle" +msgstr "Açık Paylaşım" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 -#, fuzzy -#| msgid "Add Service" +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" -msgstr "Servis Ekle" +msgstr "Grup Paylaşımı" -#: plinth/modules/samba/views.py:45 -#, fuzzy -#| msgid "Homepage" +#: plinth/modules/samba/views.py:53 msgid "Home Share" -msgstr "Ana sayfa" +msgstr "Ev Paylaşımı" -#: plinth/modules/samba/views.py:78 -#, fuzzy -#| msgid "{name} deleted." +#: plinth/modules/samba/views.py:86 msgid "Share enabled." -msgstr "{name} silindi." +msgstr "Paylaşım etkinleştirildi." -#: plinth/modules/samba/views.py:83 -#, fuzzy, python-brace-format -#| msgid "Error installing application: {error}" +#: plinth/modules/samba/views.py:91 +#, python-brace-format msgid "Error enabling share: {error_message}" -msgstr "Uygulamanın kurulmasında hata: {error}" +msgstr "Paylaşımı etkinleştirirken hata oldu: {error_message}" -#: plinth/modules/samba/views.py:88 -#, fuzzy -#| msgid "Shared" +#: plinth/modules/samba/views.py:96 msgid "Share disabled." -msgstr "Paylaşılan" +msgstr "Paylaşım etkisizleştirildi." -#: plinth/modules/samba/views.py:93 -#, fuzzy, python-brace-format -#| msgid "Error installing application: {error}" +#: plinth/modules/samba/views.py:101 +#, python-brace-format msgid "Error disabling share: {error_message}" -msgstr "Uygulamanın kurulmasında hata: {error}" +msgstr "Paylaşımı etkisizleştirirken hata oldu: {error_message}" #: plinth/modules/searx/__init__.py:25 msgid "" "Searx is a privacy-respecting Internet metasearch engine. It aggregrates and " "displays results from multiple search engines." msgstr "" +"Searx, gizliliğe saygılı bir Internet üst arama motorudur. Birden çok arama " +"motorundan gelen sonuçları toplar ve görüntüler." #: plinth/modules/searx/__init__.py:27 msgid "" "Searx can be used to avoid tracking and profiling by search engines. It " "stores no cookies by default." msgstr "" +"Searx, arama motorları tarafından izlenmeyi ve profil oluşturmayı önlemek " +"için kullanılabilir. Varsayılan olarak hiçbir tanımlama bilgisi saklamaz." #: plinth/modules/searx/__init__.py:45 msgid "Search the web" -msgstr "" +msgstr "Web'de ara" #: plinth/modules/searx/__init__.py:48 plinth/modules/searx/manifest.py:9 msgid "Searx" -msgstr "" +msgstr "Searx" #: plinth/modules/searx/__init__.py:49 -#, fuzzy -#| msgid "Web Server" msgid "Web Search" -msgstr "Web Sunucusu" +msgstr "Web Arama" #: plinth/modules/searx/forms.py:13 -#, fuzzy -#| msgid "Save Services" msgid "Safe Search" -msgstr "Servisleri Kaydet" +msgstr "Güvenli Arama" #: plinth/modules/searx/forms.py:14 msgid "Select the default family filter to apply to your search results." -msgstr "" +msgstr "Arama sonuçlarınıza uygulanacak varsayılan aile süzgecini seçin." #: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - -#: plinth/modules/searx/forms.py:15 -#, fuzzy -#| msgid "Mode" msgid "Moderate" -msgstr "Kip" +msgstr "Orta" #: plinth/modules/searx/forms.py:15 msgid "Strict" -msgstr "" +msgstr "Sıkı" #: plinth/modules/searx/forms.py:18 msgid "Allow Public Access" -msgstr "" +msgstr "Herkese Açık Erişime izin ver" #: plinth/modules/searx/forms.py:19 msgid "Allow this application to be used by anyone who can reach it." msgstr "" - -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "Kurulum güncellendi." +"Bu uygulamanın, ona ulaşabilen herkes tarafından kullanılmasına izin verin." #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" -msgstr "Konsol girişlerini kısıtla (tavsiye edilir)" +msgstr "Konsol oturum açmalarını kısıtla (önerilir)" #: plinth/modules/security/forms.py:14 msgid "" @@ -5200,14 +5315,13 @@ msgid "" "to log in to console or via SSH. Console users may be able to access some " "services without further authorization." msgstr "" -"Bu seçenek etkinleştirildiğinde, sadece \"admin\" (yönetici) grubundaki " -"kullanıcılar konsol ya da SSH vasıtasıyla oturum açabileceklerdir. Konsol " -"kullanıcılarının bazı hizmetlere ek izne gerek olmadan erişebilmesi mümkün " -"olabilir." +"Bu seçenek etkinleştirildiğinde, sadece \"admin\" grubundaki kullanıcılar " +"konsola veya SSH aracılığıyla oturum açabilir. Konsol kullanıcıları daha " +"fazla yetkilendirme olmadan bazı hizmetlere erişebilir." #: plinth/modules/security/forms.py:19 msgid "Fail2Ban (recommended)" -msgstr "Fail2Ban (tavsiye edilir)" +msgstr "Fail2Ban (önerilir)" #: plinth/modules/security/forms.py:20 msgid "" @@ -5215,23 +5329,58 @@ msgid "" "attempts to the SSH server and other enabled password protected internet-" "services." msgstr "" -"Bu şık etkinleştirildiğinde, Fail2Ban SSH sunucusuna ve diğer etkin parola " -"ile korunmuş İnternet servislerine yapılan kaba kuvvetle parola bulma " -"saldırı teşebbüslerini sınırlayacaktır." +"Bu seçenek etkinleştirildiğinde, Fail2Ban, SSH sunucusuna ve diğer " +"etkinleştirilmiş parola korumalı internet hizmetlerine yönelik deneme " +"yanılmayla zorlama girişimlerini sınırlayacaktır." #: plinth/modules/security/templates/security.html:11 #: plinth/modules/security/templates/security.html:13 -#, fuzzy -#| msgid "Security" msgid "Show security report" -msgstr "Güvenlik" +msgstr "Güvenlik raporunu göster" + +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "Sık Yapılan Özellik Güncellemeleri" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +#, fuzzy +#| msgid "Frequent feature updates are enabled." +msgid "Frequent feature updates are activated." +msgstr "Sık yapılan özellik güncellemeleri etkinleştirildi." + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, fuzzy, python-format +#| msgid "" +#| "This will allow a very limited set of software, including FreedomBox " +#| "service, to be updated to receive newer features regularly instead of " +#| "once every 2 years or so. Note that packages with frequent feature " +#| "updates do not have support from Debian Security Team. They are instead " +#| "maintained by contributors to Debian and the FreedomBox community." +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" +"Bu, FreedomBox hizmeti de dahil olmak üzere çok sınırlı bir yazılım " +"grubunun, her 2 yılda bir yerine düzenli olarak yeni özellikler alacak " +"şekilde güncellenmesini sağlayacak. Sık yapılan özellik güncellemelerine " +"sahip paketlerin Debian Güvenlik Ekibi tarafından desteklenmediğini " +"unutmayın. Bunun yerine Debian ve FreedomBox topluluğuna katkıda bulunanlar " +"tarafından yapılmaktadırlar." #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 -#, fuzzy -#| msgid "Security" +#: plinth/modules/security/views.py:74 msgid "Security Report" -msgstr "Güvenlik" +msgstr "Güvenlik Raporu" #: plinth/modules/security/templates/security_report.html:12 #, python-format @@ -5239,12 +5388,15 @@ msgid "" "The installed version of FreedomBox has %(count)s reported security " "vulnerabilities." msgstr "" +"FreedomBox'ın yüklü sürümü bildirilmiş %(count)s güvenlik açığına sahip." #: plinth/modules/security/templates/security_report.html:18 msgid "" "The following table lists the current reported number, and historical count, " "of security vulnerabilities for each installed app." msgstr "" +"Aşağıdaki tablo, yüklü her uygulama için bildirilen güvenlik açıklarının şu " +"anki sayısını ve geçmiş sayısını listeler." #: plinth/modules/security/templates/security_report.html:24 msgid "" @@ -5252,6 +5404,10 @@ msgid "" "sandboxing features are in use. Sandboxing mitigates the impact of a " "potentially compromised app to the rest of the system." msgstr "" +"Hizmet sağlayan uygulamalar için \"Korumalı\" sütunu korumalı alan " +"özelliklerinin kullanımda olup olmadığını gösterir. Korumalı alan oluşturma, " +"olası tehlikeye atılmış bir uygulamanın sistemin geri kalanı üzerindeki " +"etkisini azaltır." #: plinth/modules/security/templates/security_report.html:31 msgid "" @@ -5259,80 +5415,66 @@ msgid "" "from the rest of the system. It is only displayed while the service is " "running." msgstr "" +"\"Korumalı Alan Kapsamı\", hizmetin sistemin geri kalanından ne kadar etkili " +"bir şekilde izole edildiğinin bir sonucudur. Sadece hizmet çalışırken " +"görüntülenir." #: plinth/modules/security/templates/security_report.html:40 -#, fuzzy -#| msgid "Name" msgid "App Name" -msgstr "İsim" +msgstr "Uygulama Adı" #: plinth/modules/security/templates/security_report.html:41 msgid "Current Vulnerabilities" -msgstr "" +msgstr "Şu Anki Güvenlik Açığı" #: plinth/modules/security/templates/security_report.html:42 msgid "Past Vulnerabilities" -msgstr "" +msgstr "Geçmiş Güvenlik Açığı" #: plinth/modules/security/templates/security_report.html:43 -#, fuzzy -#| msgid "Block Sandbox" msgid "Sandboxed" -msgstr "Blok Kum Havuzu" +msgstr "Korumalı" #: plinth/modules/security/templates/security_report.html:44 -#, fuzzy -#| msgid "Block Sandbox" msgid "Sandbox Coverage" -msgstr "Blok Kum Havuzu" +msgstr "Korumalı Alan Kapsamı" #: plinth/modules/security/templates/security_report.html:55 msgid "N/A" -msgstr "" +msgstr "YOK" #: plinth/modules/security/templates/security_report.html:57 -#, fuzzy -#| msgid "yes" msgid "Yes" -msgstr "evet" +msgstr "Evet" #: plinth/modules/security/templates/security_report.html:59 msgid "No" -msgstr "" +msgstr "Hayır" #: plinth/modules/security/templates/security_report.html:66 -#, fuzzy -#| msgid "is not running" msgid "Not running" -msgstr "çalışmamaktadır" - -#: plinth/modules/security/views.py:53 -#, python-brace-format -msgid "Error setting restricted access: {exception}" -msgstr "Kısıtlı erişimin ayarlanmasında hata: {exception}" +msgstr "Çalışmıyor" #: plinth/modules/security/views.py:56 +#, python-brace-format +msgid "Error setting restricted access: {exception}" +msgstr "Kısıtlı erişim ayarlanırken hata oldu: {exception}" + +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "Güvenlik yapılandırması güncellendi" #: plinth/modules/shaarli/__init__.py:20 msgid "Shaarli allows you to save and share bookmarks." -msgstr "Shaarli, yer imlerinizi kaydetmenize ve paylaşmanıza imkân verir." +msgstr "Shaarli, yer işaretlerini kaydetmenizi ve paylaşmanızı sağlar." #: plinth/modules/shaarli/__init__.py:21 -#, fuzzy -#| msgid "" -#| "When enabled, Shaarli will be available from /" -#| "shaarli path on the web server. Note that Shaarli only supports a " -#| "single user account, which you will need to setup on the initial visit." msgid "" "Note that Shaarli only supports a single user account, which you will need " "to setup on the initial visit." msgstr "" -"Etkinleştirildiğinde, Shaarli'ye ağ sunucusunda /" -"shaarli yolunda erişilebilecektir. Shaarli'nin ilk ziyaretinizde " -"ayarlamanız gerekecek olan sadece tek bir kullanıcı hesabını desteklediğini " -"unutmayın." +"Shaarli'nin sadece ilk ziyaretinizde ayarlamanız gerekecek tek bir kullanıcı " +"hesabını desteklediğini unutmayın." #: plinth/modules/shaarli/__init__.py:37 plinth/modules/shaarli/manifest.py:8 msgid "Shaarli" @@ -5340,7 +5482,7 @@ msgstr "Shaarli" #: plinth/modules/shaarli/__init__.py:38 msgid "Bookmarks" -msgstr "Yer İmleri" +msgstr "Yer İşaretleri" #: plinth/modules/shadowsocks/__init__.py:25 msgid "" @@ -5348,8 +5490,8 @@ msgid "" "your Internet traffic. It can be used to bypass Internet filtering and " "censorship." msgstr "" -"Shadowsocks, İnternet trafiğinizi korumak için tasarlanmış hafif ve güvenli " -"bir SOCKS5 vekil sunucusudur. İnternet filtreleme ve sansürünü atlatmak için " +"Shadowsocks, Internet trafiğinizi korumak için tasarlanmış hafif ve güvenli " +"bir SOCKS5 proksidir. Internet süzmeyi ve sansürü atlamak için " "kullanılabilir." #: plinth/modules/shadowsocks/__init__.py:29 @@ -5360,19 +5502,19 @@ msgid "" "connect to this proxy, and their data will be encrypted and proxied through " "the Shadowsocks server." msgstr "" -"{box_name} kutunuz, bir Shadowsocks sunucusuna bağlanacak Shadowsocks " -"istemcisi çalıştırabilir. Aynı zamanda bir SOCKS5 vekil sunucusu " -"çalıştıracaktır. Yerel cihazlar bu vekil sunucuya bağlanacaktır ve verileri " -"şifrelenip Shadowsocks sunucusu aracılığıyla aktarılacaktır." +"{box_name} cihazınız bir Shadowsocks sunucusuna bağlanabilen bir Shadowsocks " +"istemcisi çalıştırabilir. Ayrıca bir SOCKS5 proksi çalıştıracaktır. Yerel " +"cihazlar bu proksiye bağlanabilir ve verileri şifrelenecek ve Shadowsocks " +"sunucusu aracılığıyla proksiye tabi tutulacaktır." #: plinth/modules/shadowsocks/__init__.py:34 msgid "" "To use Shadowsocks after setup, set the SOCKS5 proxy URL in your device, " "browser or application to http://freedombox_address:1080/" msgstr "" -"Yapılandırmadan sonra Shadowstocks'ı kullanmak için cihazınızda, " -"tarayıcınızda ya da uygulamanızda SOCKS5 adresini http://" -"freedombox_address:1080/ olarak ayarlayın" +"Ayarlamadan sonra Shadowsocks kullanmak için cihazınızda, tarayıcınızda veya " +"uygulamanızda SOCKS5 proksi URL'sini http://freedombox_adresi:1080/ olarak " +"ayarlayın" #: plinth/modules/shadowsocks/__init__.py:50 msgid "Shadowsocks" @@ -5380,12 +5522,12 @@ msgstr "Shadowsocks" #: plinth/modules/shadowsocks/__init__.py:52 msgid "Socks5 Proxy" -msgstr "Socks5 Vekil Sunucusu" +msgstr "Socks5 Proksi" #: plinth/modules/shadowsocks/forms.py:12 #: plinth/modules/shadowsocks/forms.py:13 msgid "Recommended" -msgstr "Tavsiye edilir" +msgstr "Önerilen" #: plinth/modules/shadowsocks/forms.py:36 msgid "Server" @@ -5393,21 +5535,21 @@ msgstr "Sunucu" #: plinth/modules/shadowsocks/forms.py:37 msgid "Server hostname or IP address" -msgstr "Sunucu makine ismi ya da IP adresi" +msgstr "Sunucu anamakine adı veya IP adresi" #: plinth/modules/shadowsocks/forms.py:41 msgid "Server port number" -msgstr "Sunucu port numarası" +msgstr "Sunucu bağlantı noktası numarası" #: plinth/modules/shadowsocks/forms.py:44 msgid "Password used to encrypt data. Must match server password." msgstr "" -"Verileri şifrelemek için kullanılacak parola. Sunucu parolasıyla eşleşmesi " -"gerekir." +"Verileri şifrelemek için kullanılan parola. Sunucu parolası ile eşleşmek " +"zorundadır." #: plinth/modules/shadowsocks/forms.py:49 msgid "Encryption method. Must match setting on server." -msgstr "Şifreleme metodu. Sunucudaki ayarla eşleşmesi gerekir." +msgstr "Şifreleme yöntemi. Sunucudaki ayarla eşleşmek zorundadır." #: plinth/modules/sharing/__init__.py:21 #, python-brace-format @@ -5415,136 +5557,116 @@ msgid "" "Sharing allows you to share files and folders on your {box_name} over the " "web with chosen groups of users." msgstr "" +"Paylaşım, web üzerinden {box_name} cihazınızdaki dosyaları ve klasörleri, " +"seçilen kullanıcı gruplarıyla paylaşmanızı sağlar." #: plinth/modules/sharing/__init__.py:38 -#, fuzzy -#| msgid "File Synchronization" msgid "Sharing" -msgstr "Dosya eşleşmesi" +msgstr "Paylaşım" #: plinth/modules/sharing/forms.py:18 msgid "Name of the share" -msgstr "" +msgstr "Paylaşım adı" #: plinth/modules/sharing/forms.py:20 msgid "" "A lowercase alpha-numeric string that uniquely identifies a share. Example: " "media." msgstr "" +"Bir paylaşımı benzersiz şekilde tanımlayan küçük harfli alfa-sayısal bir " +"dizgi. Örnek: ortam." #: plinth/modules/sharing/forms.py:24 msgid "Path to share" -msgstr "" +msgstr "Paylaşma yolu" #: plinth/modules/sharing/forms.py:25 msgid "Disk path to a folder on this server that you intend to share." -msgstr "" +msgstr "Bu sunucudaki paylaşmayı düşündüğünüz bir klasörün disk yolu." #: plinth/modules/sharing/forms.py:28 -#, fuzzy -#| msgid "Publish Key" msgid "Public share" -msgstr "Anahtarı Yayınla" +msgstr "Herkese açık paylaşım" #: plinth/modules/sharing/forms.py:29 msgid "Make files in this folder available to anyone with the link." -msgstr "" +msgstr "Bu klasördeki dosyaları bağlantıya sahip herkesin kullanımına açın." #: plinth/modules/sharing/forms.py:34 msgid "User groups that can read the files in the share" -msgstr "" +msgstr "Paylaşımdaki dosyaları okuyabilen kullanıcı grupları" #: plinth/modules/sharing/forms.py:36 msgid "" "Users of the selected user groups will be able to read the files in the " "share." msgstr "" +"Seçilen kullanıcı gruplarının kullanıcıları paylaşımdaki dosyaları " +"okuyabilecektir." #: plinth/modules/sharing/forms.py:52 -#, fuzzy -#| msgid "This service already exists" msgid "A share with this name already exists." -msgstr "Bu servis zaten mevcuttur" +msgstr "Bu ada sahip bir paylaşım zaten var." #: plinth/modules/sharing/forms.py:63 msgid "Shares should be either public or shared with at least one group" -msgstr "" +msgstr "Paylaşımlar herkese açık olmalı veya en az bir grupla paylaşılmalıdır" #: plinth/modules/sharing/templates/sharing.html:24 #: plinth/modules/sharing/templates/sharing.html:27 -#, fuzzy -#| msgid "Add Service" msgid "Add share" -msgstr "Servis Ekle" +msgstr "Paylaşım ekle" #: plinth/modules/sharing/templates/sharing.html:32 msgid "No shares currently configured." -msgstr "" +msgstr "Şu anda yapılandırılmış paylaşımlar yok." #: plinth/modules/sharing/templates/sharing.html:38 msgid "Disk Path" -msgstr "" +msgstr "Disk Yolu" #: plinth/modules/sharing/templates/sharing.html:39 -#, fuzzy -#| msgid "Shared" msgid "Shared Over" -msgstr "Paylaşılan" +msgstr "Paylaşım Bitti" #: plinth/modules/sharing/templates/sharing.html:40 -#, fuzzy -#| msgid "Groups" msgid "With Groups" -msgstr "Gruplar" +msgstr "Gruplarla" #: plinth/modules/sharing/templates/sharing.html:57 msgid "public access" -msgstr "" +msgstr "herkese açık erişim" #: plinth/modules/sharing/views.py:39 -#, fuzzy -#| msgid "Shared" msgid "Share added." -msgstr "Paylaşılan" +msgstr "Paylaşım eklendi." #: plinth/modules/sharing/views.py:44 -#, fuzzy -#| msgid "Add Service" msgid "Add Share" -msgstr "Servis Ekle" +msgstr "Paylaşım Ekleyin" #: plinth/modules/sharing/views.py:59 -#, fuzzy -#| msgid "Shared" msgid "Share edited." -msgstr "Paylaşılan" +msgstr "Paylaşım düzenlendi." #: plinth/modules/sharing/views.py:64 -#, fuzzy -#| msgid "Edit User" msgid "Edit Share" -msgstr "Kullanıcıyı Düzenle" +msgstr "Paylaşımı Düzenle" #: plinth/modules/sharing/views.py:95 -#, fuzzy -#| msgid "{name} deleted." msgid "Share deleted." -msgstr "{name} silindi." +msgstr "Paylaşım silindi." #: plinth/modules/snapshot/__init__.py:25 -#, fuzzy -#| msgid "" -#| "Snapshots allows creating and managing filesystem snapshots. These can be " -#| "used to roll back the system to a previously known good state in case of " -#| "unwanted changes to the system." msgid "" "Snapshots allows creating and managing btrfs file system snapshots. These " "can be used to roll back the system to a previously known good state in case " "of unwanted changes to the system." msgstr "" -"Anlıklar dosya sistemi anlıklarının oluşturulmasına ve yönetilmesine izin " -"verir. Bunlar, sisteme istenmeyen değişiklikler yapılması durumunda sistemin " -"daha önce bilinen iyi bir duruma geri getirilmesini sağlar." +"Anlık görüntüler, btrfs dosya sistemi anlık görüntülerinin oluşturulmasını " +"ve yönetilmesini sağlar. Bunlar, sistemde istenmeyen değişiklikler olması " +"durumunda sistemi önceden bilinen iyi bir duruma geri döndürmek için " +"kullanılabilir." #: plinth/modules/snapshot/__init__.py:29 #, no-python-format @@ -5553,6 +5675,10 @@ msgid "" "and after a software installation. Older snapshots will be automatically " "cleaned up according to the settings below." msgstr "" +"Anlık görüntüler düzenli olarak (zaman çizelgesi anlık görüntüleri olarak " +"adlandırılır) ve ayrıca bir yazılım kurulumundan önce ve sonra alınır. Daha " +"eski anlık görüntüler, aşağıdaki ayarlara göre otomatik olarak " +"temizlenecektir." #: plinth/modules/snapshot/__init__.py:32 msgid "" @@ -5560,14 +5686,18 @@ msgid "" "partition only. Snapshots are not a replacement for backups since they can only be stored on the same partition. " msgstr "" +"Anlık görüntüler şu anda sadece btrfs dosya sistemlerinde ve sadece kök " +"bölümde çalışmaktadır. Anlık görüntüler, sadece aynı bölümde " +"depolanabildikleri için yedeklemelerin " +"yerine geçmez. " #: plinth/modules/snapshot/__init__.py:54 msgid "Storage Snapshots" -msgstr "Depolama Anlıkları" +msgstr "Depolama Anlık Görüntüleri" #: plinth/modules/snapshot/forms.py:12 msgid "Free Disk Space to Maintain" -msgstr "" +msgstr "Korunacak Boş Disk Alanı" #: plinth/modules/snapshot/forms.py:13 msgid "" @@ -5575,85 +5705,82 @@ msgid "" "below this value, older snapshots are removed until this much free space is " "regained. The default value is 30%." msgstr "" +"Diskteki bu boş alan yüzdesini koruyun. Eğer boş alan bu değerin altına " +"düşerse, bu kadar boş alan yeniden kazanılıncaya kadar eski anlık görüntüler " +"kaldırılır. Varsayılan değer %30'dur." #: plinth/modules/snapshot/forms.py:20 -#, fuzzy -#| msgid "Enable Timeline Snapshots" msgid "Timeline Snapshots" -msgstr "Zaman Çizelgesi Anlıklarını Etkinleştir" +msgstr "Zaman Çizelgesi Anlık Görüntüleri" #: plinth/modules/snapshot/forms.py:21 -#, fuzzy -#| msgid "" -#| "Uncheck this to disable timeline snapshots (hourly, daily, monthly and " -#| "yearly)." msgid "" "Enable or disable timeline snapshots (hourly, daily, monthly and yearly)." msgstr "" -"Zaman çizelgesi anlıklarını (saat, gün, ay ve yıl başı) devre dışı bırakmak " -"için bu şıkkı boş bırakın." +"Zaman çizelgesi anlık görüntülerini (saatlik, günlük, aylık ve yıllık) " +"etkinleştirin veya etkisizleştirin." #: plinth/modules/snapshot/forms.py:26 msgid "Software Installation Snapshots" -msgstr "" +msgstr "Yazılım Kurulum Anlık Görüntüleri" #: plinth/modules/snapshot/forms.py:27 msgid "Enable or disable snapshots before and after software installation" msgstr "" +"Yazılım kurulumundan önce ve sonra anlık görüntüleri etkinleştirin veya " +"etkisizleştirin" #: plinth/modules/snapshot/forms.py:32 -#, fuzzy -#| msgid "Storage Snapshots" msgid "Hourly Snapshots Limit" -msgstr "Depolama Anlıkları" +msgstr "Saatlik Anlık Görüntü Sınırı" #: plinth/modules/snapshot/forms.py:33 msgid "Keep a maximum of this many hourly snapshots." -msgstr "" +msgstr "Bu birçok saatlik anlık görüntüyü en fazlada tutun." #: plinth/modules/snapshot/forms.py:36 -#, fuzzy -#| msgid "Delete Snapshots" msgid "Daily Snapshots Limit" -msgstr "Anlıkları Sil" +msgstr "Günlük Anlık Görüntü Sınırı" #: plinth/modules/snapshot/forms.py:37 msgid "Keep a maximum of this many daily snapshots." -msgstr "" +msgstr "Bu birçok günlük anlık görüntüyü en fazlada tutun." #: plinth/modules/snapshot/forms.py:40 -#, fuzzy -#| msgid "Delete Snapshots" msgid "Weekly Snapshots Limit" -msgstr "Anlıkları Sil" +msgstr "Haftalık Anlık Görüntü Sınırı" #: plinth/modules/snapshot/forms.py:41 msgid "Keep a maximum of this many weekly snapshots." -msgstr "" +msgstr "Bu birçok haftalık anlık görüntüyü en fazlada tutun." #: plinth/modules/snapshot/forms.py:44 msgid "Monthly Snapshots Limit" -msgstr "" +msgstr "Aylık Anlık Görüntü Sınırı" #: plinth/modules/snapshot/forms.py:45 msgid "Keep a maximum of this many monthly snapshots." -msgstr "" +msgstr "Bu birçok aylık anlık görüntüyü en fazlada tutun." #: plinth/modules/snapshot/forms.py:48 -#, fuzzy -#| msgid "Delete Snapshots" msgid "Yearly Snapshots Limit" -msgstr "Anlıkları Sil" +msgstr "Yıllık Anlık Görüntü Sınırı" #: plinth/modules/snapshot/forms.py:49 +#, fuzzy +#| msgid "" +#| "Keep a maximum of this many yearly snapshots. The default value is 0 " +#| "(disabled)." msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" +"Bu birçok yıllık anlık görüntüyü en fazlada tutun. Varsayılan değer 0'dır " +"(etkisizleştirildi)." #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 msgid "Delete the following snapshots permanently?" -msgstr "Bu anlıklar daimi olarak silinsin mi?" +msgstr "Aşağıdaki anlık görüntüler kalıcı olarak silinsin mi?" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:16 #: plinth/modules/snapshot/templates/snapshot_manage.html:29 @@ -5671,28 +5798,28 @@ msgstr "Tarih" #: plinth/modules/snapshot/templates/snapshot_manage.html:22 #: plinth/modules/snapshot/views.py:189 msgid "Delete Snapshots" -msgstr "Anlıkları Sil" +msgstr "Anlık Görüntüleri Sil" #: plinth/modules/snapshot/templates/snapshot_manage.html:18 msgid "Create Snapshot" -msgstr "Anlık Oluştur" +msgstr "Anlık Görüntü Oluştur" #: plinth/modules/snapshot/templates/snapshot_manage.html:32 msgid "Rollback" -msgstr "Geri getir" +msgstr "Geri Al" #: plinth/modules/snapshot/templates/snapshot_manage.html:42 msgid "will be used at next boot" -msgstr "" +msgstr "sonraki önyüklemede kullanılacaktır" #: plinth/modules/snapshot/templates/snapshot_manage.html:47 msgid "in use" -msgstr "" +msgstr "kullanımda" #: plinth/modules/snapshot/templates/snapshot_manage.html:56 #, python-format msgid "Rollback to snapshot #%(number)s" -msgstr "#%(number)s sayılı anlığa geri getir" +msgstr "#%(number)s nolu anlık görüntüye geri al" #: plinth/modules/snapshot/templates/snapshot_not_supported.html:11 #, python-format @@ -5700,10 +5827,13 @@ msgid "" "You have a filesystem of type %(fs_type)s. Snapshots are " "currently only available on %(types_supported)s filesystems." msgstr "" +"%(fs_type)s türünde bir dosya sisteminiz var. Anlık " +"görüntüler şu anda sadece %(types_supported)s dosya " +"sistemlerinde kullanılabilir." #: plinth/modules/snapshot/templates/snapshot_rollback.html:12 msgid "Roll back the system to this snapshot?" -msgstr "Sistem bu anlığa geri getirilsin mi?" +msgstr "Sistem bu anlık görüntüye geri alınsın mı?" #: plinth/modules/snapshot/templates/snapshot_rollback.html:15 msgid "" @@ -5711,30 +5841,26 @@ msgid "" "automatically created. You will be able to undo a rollback by reverting to " "the newly created snapshot." msgstr "" -"Dosya sisteminin güncel durumunu yansıtan yeni bir anlık otomatik olarak " -"oluşturulacaktır. Herhangi bir anlığa geri getirmek, yeni oluşturulan anlığa " -"geri getirmek suretiyle iptal edilebilecektir." +"Dosya sisteminin şu anki durumu ile yeni bir anlık görüntü otomatik olarak " +"oluşturulacaktır. Yeni oluşturulan anlık görüntüye geri dönerek bir geri " +"alma işlemini geri alabileceksiniz." #: plinth/modules/snapshot/templates/snapshot_rollback.html:42 #, python-format msgid "Rollback to Snapshot #%(number)s" -msgstr "#%(number)s sayılı anlığa geri al" +msgstr "#%(number)s Nolu Anlık Görüntüye Geri Al" #: plinth/modules/snapshot/views.py:32 -#, fuzzy -#| msgid "Storage Snapshots" msgid "Manage Snapshots" -msgstr "Depolama Anlıkları" +msgstr "Anlık Görüntüleri Yönet" #: plinth/modules/snapshot/views.py:81 msgid "Created snapshot." -msgstr "Anlık oluşturuldu." +msgstr "Anlık görüntü oluşturuldu." #: plinth/modules/snapshot/views.py:144 -#, fuzzy -#| msgid "Timeline Snapshots configuration updated" msgid "Storage snapshots configuration updated" -msgstr "Zaman Çizelgesi Anlıklarının yapılandırması güncellendi" +msgstr "Depolama anlık görüntü yapılandırması güncellendi" #: plinth/modules/snapshot/views.py:148 plinth/modules/tor/views.py:60 #, python-brace-format @@ -5742,28 +5868,26 @@ msgid "Action error: {0} [{1}] [{2}]" msgstr "Eylem hatası: {0} [{1}] [{2}]" #: plinth/modules/snapshot/views.py:176 -#, fuzzy -#| msgid "Delete all the snapshots" msgid "Deleted selected snapshots" -msgstr "Tüm anlıkları sil" +msgstr "Seçilen anlık görüntüler silindi" #: plinth/modules/snapshot/views.py:181 msgid "Snapshot is currently in use. Please try again later." -msgstr "" +msgstr "Anlık görüntü şu anda kullanımda. Lütfen daha sonra tekrar deneyin." #: plinth/modules/snapshot/views.py:200 #, python-brace-format msgid "Rolled back to snapshot #{number}." -msgstr "#{number} sayılı anlığa geri alındı." +msgstr "#{number} nolu anlık görüntüye geri alındı." #: plinth/modules/snapshot/views.py:203 msgid "The system must be restarted to complete the rollback." msgstr "" -"Geri alınmanın tamamlanması için sistemin yeniden başlatılması gereklidir." +"Geri alma işlemini tamamlamak için sistem yeniden başlatılmak zorundadır." #: plinth/modules/snapshot/views.py:215 msgid "Rollback to Snapshot" -msgstr "Anlığa Geri Al" +msgstr "Anlık Görüntüye Geri Al" #: plinth/modules/ssh/__init__.py:29 msgid "" @@ -5772,20 +5896,18 @@ msgid "" "administration tasks, copy files or run other services using such " "connections." msgstr "" -"Güvenli Kabuk sunucusu uzaktaki bilgisayarlardan bağlantıları kabul etmek " -"için güvenli kabuk (secure shell) protokolünü kullanır. İzinli uzak bir " -"bilgisayar bu bağlantıları vasıtasıyla yönetim işlemleri yapabilir, dosya " -"kopyalayabilir ve diğer servisleri çalıştırabilir." +"Güvenli Kabuk sunucusu, uzak bilgisayarlardan gelen bağlantıları kabul etmek " +"için güvenli kabuk protokolünü kullanır. Yetkili bir uzak bilgisayar, bu tür " +"bağlantıları kullanarak yönetim görevlerini gerçekleştirebilir, dosyaları " +"kopyalayabilir veya diğer hizmetleri çalıştırabilir." -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "Güvenli Kabuk (SSH) Sunucusu" #: plinth/modules/ssh/forms.py:13 -#, fuzzy -#| msgid "Use HTTP basic authentication" msgid "Disable password authentication" -msgstr "Temel HTTP kimlik doğrulamasını kullan" +msgstr "Parola kimlik doğrulamasını etkisizleştir" #: plinth/modules/ssh/forms.py:14 msgid "" @@ -5793,44 +5915,45 @@ msgid "" "setup SSH keys in your administrator user account before enabling this " "option." msgstr "" +"Parola tahminini önleyerek güvenliği artırır. Bu seçeneği etkinleştirmeden " +"önce yönetici kullanıcısı hesabınızda SSH anahtarlarını ayarladığınızdan " +"emin olun." #: plinth/modules/ssh/templates/ssh.html:11 -#, fuzzy -#| msgid "SSH Fingerprint" msgid "Server Fingerprints" -msgstr "SSH Parmak izi" +msgstr "Sunucu Parmak İzleri" #: plinth/modules/ssh/templates/ssh.html:14 msgid "" "When connecting to the server, ensure that the fingerprint shown by the SSH " "client matches one of these fingerprints." msgstr "" +"Sunucuya bağlanırken, SSH istemcisi tarafından gösterilen parmak izinin bu " +"parmak izlerinden biriyle eşleştiğinden emin olun." #: plinth/modules/ssh/templates/ssh.html:23 msgid "Algorithm" -msgstr "" +msgstr "Algoritma" #: plinth/modules/ssh/templates/ssh.html:24 -#, fuzzy -#| msgid "SSH Fingerprint" msgid "Fingerprint" -msgstr "SSH Parmak izi" +msgstr "Parmak İzi" #: plinth/modules/ssh/views.py:48 msgid "SSH authentication with password disabled." -msgstr "" +msgstr "Parola ile SSH kimlik doğrulaması etkisizleştirildi." #: plinth/modules/ssh/views.py:51 msgid "SSH authentication with password enabled." -msgstr "" +msgstr "Parola ile SSH kimlik doğrulaması etkinleştirildi." -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" -msgstr "Tekli Oturum Açma" +msgstr "Tek Oturum Açma" #: plinth/modules/sso/templates/login.html:20 msgid "Login" -msgstr "Giriş" +msgstr "Oturum aç" #: plinth/modules/storage/__init__.py:29 #, python-brace-format @@ -5839,174 +5962,159 @@ msgid "" "You can view the storage media currently in use, mount and unmount removable " "media, expand the root partition etc." msgstr "" +"Bu modül, {box_name} cihazınıza ekli depolama ortamını yönetmenizi sağlar. " +"Şu anda kullanımda olan depolama ortamını görüntüleyebilir, çıkarılabilir " +"ortamı bağlayabilir ve sökebilir, kök bölümünü vb. genişletebilirsiniz." -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "Depolama" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "{disk_size:.1f} bayt" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "{disk_size:.1f} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "{disk_size:.1f} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "{disk_size:.1f} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "{disk_size:.1f} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." -msgstr "" +msgstr "İşlem başarısız oldu." + +#: plinth/modules/storage/__init__.py:235 +msgid "The operation was cancelled." +msgstr "İşlem iptal edildi." + +#: plinth/modules/storage/__init__.py:237 +msgid "The device is already unmounting." +msgstr "Aygıt zaten sökülüyor." + +#: plinth/modules/storage/__init__.py:239 +msgid "The operation is not supported due to missing driver/tool support." +msgstr "Eksik sürücü/araç desteğinden dolayı işlem desteklenmiyor." #: plinth/modules/storage/__init__.py:242 -msgid "The operation was cancelled." -msgstr "" +msgid "The operation timed out." +msgstr "İşlem zaman aşımına uğradı." #: plinth/modules/storage/__init__.py:244 -#, fuzzy -#| msgid "repro service is running" -msgid "The device is already unmounting." -msgstr "repro servisi çalışmaktadır" +msgid "The operation would wake up a disk that is in a deep-sleep state." +msgstr "İşlem, derin uyku durumunda olan bir diski uyandırır." -#: plinth/modules/storage/__init__.py:246 -msgid "The operation is not supported due to missing driver/tool support." -msgstr "" +#: plinth/modules/storage/__init__.py:247 +msgid "Attempting to unmount a device that is busy." +msgstr "Meşgul olan bir aygıt sökülmeye çalışılıyor." #: plinth/modules/storage/__init__.py:249 -msgid "The operation timed out." -msgstr "" +msgid "The operation has already been cancelled." +msgstr "İşlem zaten iptal edildi." #: plinth/modules/storage/__init__.py:251 -msgid "The operation would wake up a disk that is in a deep-sleep state." -msgstr "" - -#: plinth/modules/storage/__init__.py:254 -msgid "Attempting to unmount a device that is busy." -msgstr "" - -#: plinth/modules/storage/__init__.py:256 -msgid "The operation has already been cancelled." -msgstr "" - -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." -msgstr "" +msgstr "İstenen işlemi gerçekleştirmek için yetkili değilsiniz." -#: plinth/modules/storage/__init__.py:264 -#, fuzzy -#| msgid "This service already exists" +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." -msgstr "Bu servis zaten mevcuttur" +msgstr "Aygıt zaten bağlı." -#: plinth/modules/storage/__init__.py:266 -#, fuzzy -#| msgid "repro service is not running" +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." -msgstr "repro servisi çalışmamaktadır" +msgstr "Aygıt bağlı değil." -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." -msgstr "" +msgstr "İstenen seçeneği kullanmak için izin verilmedi." -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." -msgstr "" +msgstr "Aygıt başka bir kullanıcı tarafından bağlandı." -#: plinth/modules/storage/__init__.py:314 -#, fuzzy, no-python-format, python-brace-format -#| msgid "" -#| "Warning: Low space on system partition ({percent_used}% used, " -#| "{free_space} free)." +#: plinth/modules/storage/__init__.py:307 +#, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -"İkaz: sistem disk bölümünde düşük alan (%{percent_used} kullanıldı, " -"{free_space} boş)." +"Sistem bölümünde düşük alan: %{percent_used} kullanıldı, {free_space} boş." -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" -msgstr "" +msgstr "Düşük disk alanı" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" -msgstr "" +msgstr "Disk arızası yakın" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " "any data while you still can and replace the drive." msgstr "" +"Disk {id}, yakın gelecekte başarısız olma ihtimalinin yüksek olduğunu " +"bildiriyor. Hala yapabilirken tüm verileri kopyalayın ve sürücüyü değiştirin." #: plinth/modules/storage/forms.py:63 -#, fuzzy -#| msgid "Invalid hostname" msgid "Invalid directory name." -msgstr "Geçersiz makine ismi" +msgstr "Geçersiz dizin adı." #: plinth/modules/storage/forms.py:80 msgid "Directory does not exist." -msgstr "" +msgstr "Dizin mevcut değil." #: plinth/modules/storage/forms.py:83 -#, fuzzy -#| msgid "Download directory" msgid "Path is not a directory." -msgstr "İndirme klasörü" +msgstr "Yol bir dizin değil." #: plinth/modules/storage/forms.py:86 msgid "Directory is not readable by the user." -msgstr "" +msgstr "Dizin kullanıcı tarafından okunabilir değil." #: plinth/modules/storage/forms.py:89 msgid "Directory is not writable by the user." -msgstr "" +msgstr "Dizin kullanıcı tarafından yazılabilir değil." #: plinth/modules/storage/forms.py:94 -#, fuzzy -#| msgid "Download directory" msgid "Directory" -msgstr "İndirme klasörü" +msgstr "Dizin" #: plinth/modules/storage/forms.py:96 msgid "Subdirectory (optional)" -msgstr "" +msgstr "Alt dizin (isteğe bağlı)" #: plinth/modules/storage/forms.py:143 -#, fuzzy -#| msgid "Shared" msgid "Share" -msgstr "Paylaşılan" +msgstr "Paylaş" #: plinth/modules/storage/forms.py:151 msgid "Other directory (specify below)" -msgstr "" +msgstr "Diğer dizin (aşağıda belirtin)" #: plinth/modules/storage/templates/storage.html:20 -#, fuzzy -#| msgid "The following disks are in use:" msgid "The following storage devices are in use:" -msgstr "Aşağıdaki diskler kullanımdadır:" +msgstr "Aşağıdaki depolama aygıtları kullanımda:" #: plinth/modules/storage/templates/storage.html:26 msgid "Label" -msgstr "" +msgstr "Etiket" #: plinth/modules/storage/templates/storage.html:27 msgid "Mount Point" @@ -6023,10 +6131,9 @@ msgid "" "root partition. Root partition can be expanded to use this space. This " "will provide you additional free space to store your files." msgstr "" -"Kök disk bölümünden sonra ayrılmamış kullanılabilir %(expandable_root_size)s " -"değerinde alan bulunmaktadır. Kök bölümü bu alanı kullanmak için " -"genişletilebilir. Bu, size dosyalarınızı saklamak için ilave boş alan " -"sunacaktır." +"Kök bölümünüzden sonra kullanılabilir %(expandable_root_size)s ayrılmamış " +"alan var. Bu alanı kullanmak için kök bölümü genişletilebilir. Bu, " +"dosyalarınızı depolamanız için size ek boş alan sağlayacaktır." #: plinth/modules/storage/templates/storage.html:90 #: plinth/modules/storage/templates/storage_expand.html:24 @@ -6039,6 +6146,8 @@ msgid "" "Advanced storage operations such as disk partitioning and RAID management " "are provided by the Cockpit app." msgstr "" +"Disk bölümleme ve RAID yönetimi gibi gelişmiş depolama işlemleri Cockpit uygulaması tarafından sağlanır." #: plinth/modules/storage/templates/storage_expand.html:14 #, python-format @@ -6047,32 +6156,32 @@ msgid "" "%(expandable_root_size)s of additional free space will be available in your " "root partition." msgstr "" -"Lütfen devam etmeden önce verilerinizi yedekleyin. Bu işlemden sonra kök " -"bölümünüzde ilave %(expandable_root_size)s değerinde boş alan " -"kullanılabilir olacaktır." +"Lütfen devam etmeden önce verilerinizi yedekleyin. Bu işlemden sonra, " +"%(expandable_root_size)s ek boş alan kök bölümünüzde kullanılabilir " +"olacaktır." #: plinth/modules/storage/views.py:70 #, python-brace-format msgid "Error expanding partition: {exception}" -msgstr "Bölümün genişletilmesinde hata: {exception}" +msgstr "Bölüm genişletilirken hata oldu: {exception}" #: plinth/modules/storage/views.py:73 msgid "Partition expanded successfully." -msgstr "Bölüm başarılı bir şekilde genişletildi." +msgstr "Bölüm başarılı olarak genişletildi." #: plinth/modules/storage/views.py:91 #, python-brace-format msgid "{drive_vendor} {drive_model} can be safely unplugged." -msgstr "" +msgstr "{drive_vendor} {drive_model} güvenle çıkarılabilir." #: plinth/modules/storage/views.py:95 msgid "Device can be safely unplugged." -msgstr "" +msgstr "Aygıt güvenli bir şekilde çıkarılabilir." #: plinth/modules/storage/views.py:102 #, python-brace-format msgid "Error ejecting device: {error_message}" -msgstr "" +msgstr "Aygıt çıkarılırken hata oldu: {error_message}" #: plinth/modules/syncthing/__init__.py:27 msgid "" @@ -6081,20 +6190,13 @@ msgid "" "deletion of files on one device will be automatically replicated on all " "other devices that also run Syncthing." msgstr "" -"Syncthing, masaüstü bilgisayar ve mobil telefon gibi birçok cihaz üzerinde " -"dosya eşleşmesi yapan bir uygulamadır. Herhangi bir cihaz üzerinde dosya " -"oluşturulması, değiştirilmesi ya da silinmesi, Syncthing çalıştıran diğer " -"tüm cihazlarda da otomatik olarak meydana gelecektir." +"Syncthing, dosyaları birden çok cihaz arasında eşitlemek için kullanılan bir " +"uygulamadır, ör.n masaüstü bilgisayarınız ve cep telefonunuz. Bir cihazda " +"dosyaların oluşturulması, değiştirilmesi veya silinmesi, Syncthing'i de " +"çalıştıran diğer tüm cihazlarda otomatik olarak tekrarlanacaktır." #: plinth/modules/syncthing/__init__.py:32 -#, fuzzy, python-brace-format -#| msgid "" -#| "Running Syncthing on {box_name} provides an extra synchronization point " -#| "for your data that is available most of the time, allowing your devices " -#| "to synchronize more often. {box_name} runs a single instance of " -#| "Syncthing that may be used by multiple users. Each user's set of devices " -#| "may be synchronized with a distinct set of folders. The web interface on " -#| "{box_name} is only available for users belonging to the \"admin\" group." +#, python-brace-format msgid "" "Running Syncthing on {box_name} provides an extra synchronization point for " "your data that is available most of the time, allowing your devices to " @@ -6104,19 +6206,17 @@ msgid "" "{box_name} is only available for users belonging to the \"admin\" or " "\"syncthing\" group." msgstr "" -"{box_name} üzerinde Syncthing çalıştırılması, verileriniz için çoğu zaman " -"kullanılabilir ekstra bir eşleşme noktası sağlar ve bu cihazlarınızın daha " -"sık eşleşmelerine imkân tanır. {box_name} tek bir Syncthing örneklemesi " -"çalıştıracaktır ve bu birçok kullanıcı tarafından kullanılabilir. Her " -"kullanıcının cihaz kümesi, farklı bir klasör grubu ile eşleştirilebilir. " -"{box_name} üzerindeki ağ arayüzü sadece \"admin\" yani yönetici grubuna ait " -"kullanıcılar tarafından kullanılabilir." +"Syncthing'in {box_name} cihazında çalıştırılması, verileriniz için çoğu " +"zaman kullanılabilen fazladan bir eşitleme noktası sağlar ve cihazlarınızın " +"daha sık eşitlenmesine izin verir. {box_name}, birden çok kullanıcı " +"tarafından kullanılabilen tek bir Syncthing örneği çalıştırır. Her " +"kullanıcının cihaz grubu, farklı bir klasör grubuyla eşitlenebilir. " +"{box_name} cihazındaki web arayüzü sadece \"admin\" veya \"syncthing\" " +"grubuna ait kullanıcılar tarafından kullanılabilir." #: plinth/modules/syncthing/__init__.py:56 -#, fuzzy -#| msgid "Install this application?" msgid "Administer Syncthing application" -msgstr "Bu uygulama kurulsun mu?" +msgstr "Syncthing uygulamasını yönet" #: plinth/modules/syncthing/__init__.py:59 #: plinth/modules/syncthing/manifest.py:13 @@ -6125,7 +6225,7 @@ msgstr "Syncthing" #: plinth/modules/syncthing/__init__.py:60 msgid "File Synchronization" -msgstr "Dosya eşleşmesi" +msgstr "Dosya Eşitleme" #: plinth/modules/tahoe/__init__.py:30 msgid "" @@ -6134,10 +6234,10 @@ msgid "" "nodes. Even if some of the nodes fail, your files can be retrieved from the " "remaining nodes." msgstr "" -"Tahoe-LAFS, merkezi olmayan güvenli bir dosya depolama sistemidir. " -"Dosyaları dağıtılmış depolama düğümleri ağında depolamak için sağlayıcıdan " -"bağımsız güvenlik kullanır. Bazı düğümler arızalansa bile dosyalarınız kalan " -"düğümlerden alınabilir." +"Tahoe-LAFS, merkezi olmayan bir güvenli dosya depolama sistemidir. " +"Dosyaları, dağıtılmış bir depolama düğümleri ağı üzerinden depolamak için " +"sağlayıcıdan bağımsız güvenlik kullanır. Bazı düğümler başarısız olsa bile, " +"dosyalarınız kalan düğümlerden alınabilir." #: plinth/modules/tahoe/__init__.py:35 #, python-brace-format @@ -6146,15 +6246,15 @@ msgid "" "Additional introducers can be added, which will introduce this node to the " "other storage nodes." msgstr "" -"Bu {box_name} varsayılan değer olarak bir depolama düğümü ve bir tanıtıcı " -"barındırmaktadır. Ek tanıtıcılar ilâve edilebilir ve bu, bu düğümü diğer " -"depolama düğümlerine tanıtır." +"Bu {box_name}, varsayılan olarak bir depolama düğümünü ve bir tanıtıcıyı " +"barındırır. Bu düğümü diğer depolama düğümlerine tanıtacak ek tanıtıcılar " +"eklenebilir." -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "Tahoe-LAFS" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "Dağıtılmış Dosya Depolaması" @@ -6166,10 +6266,11 @@ msgid "" "DATA. You can access Tahoe-LAFS at https://%(domain_name)s:5678." msgstr "" -"Tahoe-LAFS sunucu alanı %(domain_name)s olarak ayarlanmıştır. " -"FreedomBox alanının değiştirilmesi Tahoe-LAFS için tekrar bir kurulum " -"gerektirir ve VERİ KAYBEDERSİNİZ. Tahoe-LAFS, şu konumdan erişilebilir " -"durumdadır: %(domain_name)s." +"Tahoe-LAFS sunucusu etki alanı %(domain_name)s olarak ayarlandı. " +"FreedomBox etki alanı adını değiştirmek Tahoe-LAFS'ın yeniden yüklenmesini " +"gerektirir ve VERİLERİ KAYBEDERSİNİZ. Tahoe-LAFS'a https://%(domain_name)s:5678 adresinden " +"erişebilirsiniz." #: plinth/modules/tahoe/templates/tahoe-post-setup.html:29 msgid "Local introducer" @@ -6179,7 +6280,7 @@ msgstr "Yerel tanıtıcı" #: plinth/modules/tahoe/templates/tahoe-post-setup.html:49 #: plinth/modules/tahoe/templates/tahoe-post-setup.html:66 msgid "Pet Name" -msgstr "Evcil Hayvan İsmi" +msgstr "Evcil Hayvan Adı" #: plinth/modules/tahoe/templates/tahoe-post-setup.html:46 msgid "Add new introducer" @@ -6197,7 +6298,7 @@ msgstr "Bağlı tanıtıcılar" msgid "Remove" msgstr "Kaldır" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6205,53 +6306,48 @@ msgid "" "the Tor Browser." msgstr "" -"Tor, anonim bir şekilde iletişim kurma sistemidir. Hakkında daha fazla " -"bilgiyi Tor Projesi sitesinden " -"edinebilirsiniz. İnternet'te gezinirken en iyi korunma için Tor Projesi Tor " -"Tarayıcısını kullanmanızı tavsiye eder." +"Tor, isimsiz bir iletişim sistemidir. Tor Projesi web sitesinden daha fazla bilgi edinebilirsiniz. Web'de " +"gezinirken en iyi koruma için Tor Projesi, Tor Tarayıcı kullanmanızı önerir." -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "Tor" -#: plinth/modules/tor/__init__.py:65 -#, fuzzy -#| msgid "Tor Hidden Service" +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" -msgstr "Tor Gizli Servisi" +msgstr "Tor Onion Hizmeti" -#: plinth/modules/tor/__init__.py:69 -#, fuzzy -#| msgid "Socks5 Proxy" +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" -msgstr "Socks5 Vekil Sunucusu" +msgstr "Tor Socks Proksi" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" -msgstr "Tor Köprü Aktarması" +msgstr "Tor Köprüsü Aktarımı" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" -msgstr "Tor geçit portu mevcuttur" +msgstr "Tor aktarımı bağlantı noktası mevcut" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" -msgstr "Obfs3 taşıma kayıtlıdır" +msgstr "Obfs3 taşıma kayıtlı" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" -msgstr "Obfs4 taşıma kayıtlıdır" +msgstr "Obfs4 taşıma kayıtlı" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" -msgstr "{url} bağlantısına tcp{kind} üzerinden Tor vasıtasıyla eriş" +msgstr "Tor aracılığıyla tcp{kind} üzerindeki erişim URL'si {url}" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" -msgstr "tcp{kind} üzerinden {url} konumunda Tor kullanımını teyit et" +msgstr "Tcp{kind} üzerinde {url} adresinde Tor kullanımını onayla" #: plinth/modules/tor/forms.py:31 msgid "" @@ -6260,11 +6356,11 @@ msgstr "Şu biçemde geçerli bir köprü girin: [taşıma] IP:ORPort [parmakizi #: plinth/modules/tor/forms.py:73 msgid "Enable Tor" -msgstr "Tor'u Etkinleştir" +msgstr "Tor'u etkinleştir" #: plinth/modules/tor/forms.py:75 msgid "Use upstream bridges to connect to Tor network" -msgstr "Tor şebekesine bağlanmak için upstream köprüleri kullan" +msgstr "Tor ağına bağlanmak için yukarı akış köprülerini kullan" #: plinth/modules/tor/forms.py:77 msgid "" @@ -6272,14 +6368,14 @@ msgid "" "Tor network. Use this option if your Internet Service Provider (ISP) blocks " "or censors connections to the Tor Network. This will disable relay modes." msgstr "" -"Etkinleştirildiğinde, aşağıda yapılandırılan köprüler Tor şebekesine " -"bağlanmak için kullanılacaktır. Bu seçeneği İnternet Erişim Sağlayıcınız Tor " -"ağına bağlantıları engelliyor ya da sansürlüyorsa kullanın. Bu, aktarım " -"kiplerini devre dışı bırakacaktır." +"Etkinleştirildiğinde, aşağıda yapılandırılan köprüler Tor ağına bağlanmak " +"için kullanılacaktır. Internet Servis Sağlayıcınız (ISP) Tor Ağına " +"bağlantıları engelliyorsa veya sansürlüyorsa bu seçeneği kullanın. Bu, " +"aktarım kiplerini etkisizleştirecektir." #: plinth/modules/tor/forms.py:82 msgid "Upstream bridges" -msgstr "Upstream köprüler" +msgstr "Yukarı akış köprüleri" #: plinth/modules/tor/forms.py:84 msgid "" @@ -6287,10 +6383,10 @@ msgid "" "\">https://bridges.torproject.org/ and copy/paste the bridge information " "here. Currently supported transports are none, obfs3, obfs4 and scamblesuit." msgstr "" -"Bazı köprüleri https://bridges." -"torproject.org/ adresinden elde edip köprü bilgilerini buraya " -"yapıştırabilirsiniz. Güncel olarak desteklenen taşımalar şunlardır: hiçbiri, " -"obfs3, obfs4 ve scamblesuit." +"https://bridges.torproject.org/ adresinden bazı köprüler edinebilir ve köprü bilgilerini buraya kopyala/" +"yapıştır yapabilirsiniz. Şu anda desteklenen taşımalar none, obfs3, obfs4 ve " +"scamblesuit'tir." #: plinth/modules/tor/forms.py:90 msgid "Enable Tor relay" @@ -6303,13 +6399,13 @@ msgid "" "the Tor network. Do this if you have more than 2 megabits/s of upload and " "download bandwidth." msgstr "" -"Etkinleştirildiğinde, {box_name} bir Tor aktarıcısı çalıştıracak ve Tor " -"şebekesine bant genişliği bağışlayacaktır. Bunu, saniyede 2 megabitten fazla " -"indirme ve gönderme bant genişliğiniz varsa yapınız." +"Etkinleştirildiğinde, {box_name} cihazınız bir Tor aktarımı çalıştıracak ve " +"Tor ağına bant genişliği bağışlayacaktır. 2 megabit/s'den daha fazla " +"gönderme ve indirme bant genişliğiniz varsa bunu yapın." #: plinth/modules/tor/forms.py:96 msgid "Enable Tor bridge relay" -msgstr "Tor köprü aktarmasını etkinleştir" +msgstr "Tor köprüsü aktarımını etkinleştir" #: plinth/modules/tor/forms.py:98 msgid "" @@ -6317,31 +6413,24 @@ msgid "" "instead of public Tor relay database making it harder to censor this node. " "This helps others circumvent censorship." msgstr "" -"Etkinleştirildiğinde, aktarma verileri herkese açık Tor aktarma veritabanı " -"yerine Tor köprü veritabanında yayınlanacak ve bu, bu düğümün " -"sansürlenmesini zorlaştıracaktır. Bunu yapmanız, başkalarının sansürü " -"aşmasına yardımcı olur." +"Etkinleştirildiğinde, aktarım bilgileri bu düğümün sansürlenmesini " +"zorlaştıran herkese açık Tor aktarımı veritabanı yerine Tor köprüsü " +"veritabanında yayınlanır. Bu, başkalarının sansürü atlatmasına yardımcı olur." #: plinth/modules/tor/forms.py:103 -#, fuzzy -#| msgid "Enable Tor Hidden Service" msgid "Enable Tor Hidden Service" -msgstr "Tor Gizli Servisi Etkinleştir" +msgstr "Tor Gizli Hizmetini etkinleştir" #: plinth/modules/tor/forms.py:105 -#, fuzzy, python-brace-format -#| msgid "" -#| "A hidden service will allow {box_name} to provide selected services (such " -#| "as wiki or chat) without revealing its location. Do not use this for " -#| "strong anonymity yet." +#, python-brace-format msgid "" "A hidden service will allow {box_name} to provide selected services (such as " "wiki or chat) without revealing its location. Do not use this for strong " "anonymity yet." msgstr "" -"Gizli servisler {box_name} kutusunun (viki ya da sohbet gibi) seçili " -"servisleri konumunu ortaya çıkarmadan sağlamasına imkân verir. Güçlü " -"anonimlik için henüz kullanmayın." +"Gizli bir hizmet, {box_name} cihazına konumunu açıklamadan seçilen " +"hizmetleri (viki veya sohbet gibi) sağlaması için izin verecektir. Bunu " +"henüz güçlü bir isim gizliliği için kullanmayın." #: plinth/modules/tor/forms.py:110 msgid "Download software packages over Tor" @@ -6353,39 +6442,39 @@ msgid "" "installations and upgrades. This adds a degree of privacy and security " "during software downloads." msgstr "" -"Etkinleştirildiğinde, kurulum ve güncellemeler için yazılımlar Tor ağı " +"Etkinleştirildiğinde, kurulumlar ve yükseltmeler için yazılım Tor ağı " "üzerinden indirilecektir. Bu, yazılım indirmeleri sırasında bir derece " -"güvenlilik ve gizlilik ekler." +"gizlilik ve güvenlik sağlar." #: plinth/modules/tor/forms.py:126 msgid "Specify at least one upstream bridge to use upstream bridges." -msgstr "Upstream köprüleri kullanmak için en az bir upstream köprü belirtiniz." +msgstr "" +"Yukarı akış köprülerini kullanmak için en az bir yukarı akış köprüsü " +"belirtin." #: plinth/modules/tor/manifest.py:14 msgid "Tor Browser" -msgstr "Tor Tarayıcısı" +msgstr "Tor Tarayıcı" #: plinth/modules/tor/manifest.py:30 msgid "Orbot: Proxy with Tor" -msgstr "Orbot: Tor ile Vekil Sunucusu" +msgstr "Orbot: Tor ile Proksi" #: plinth/modules/tor/templates/tor.html:16 msgid "Tor configuration is being updated" -msgstr "Tor yapılandırması güncellenmektedir" +msgstr "Tor yapılandırması güncelleniyor" #: plinth/modules/tor/templates/tor.html:25 -#, fuzzy -#| msgid "Hidden Service" msgid "Onion Service" -msgstr "Gizli Servis" +msgstr "Onion Hizmeti" #: plinth/modules/tor/templates/tor.html:27 msgid "Ports" -msgstr "Portlar" +msgstr "Bağlantı Noktaları" #: plinth/modules/tor/templates/tor.html:57 msgid "Relay" -msgstr "Aktarıcı" +msgstr "Aktarım" #: plinth/modules/tor/templates/tor.html:59 #, python-format @@ -6393,9 +6482,9 @@ msgid "" "If your %(box_name)s is behind a router or firewall, you should make sure " "the following ports are open, and port-forwarded, if necessary:" msgstr "" -"Eğer %(box_name)s bir yönlendirici ya da güvenlik duvarı arkasındaysa ve " -"gerekiyorsa aşağıdaki bağlantı noktalarının (port) açık ve yönlendirilmiş " -"olduğundan emin olun:" +"Eğer %(box_name)s cihazınız bir yönlendirici veya güvenlik duvarının " +"arkasındaysa, aşağıdaki bağlantı noktalarının açık olduğundan ve gerekirse " +"bağlantı noktasından yönlendirildiğinden emin olmalısınız:" #: plinth/modules/tor/templates/tor.html:87 msgid "SOCKS" @@ -6405,21 +6494,21 @@ msgstr "SOCKS" #, python-format msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -"Bir Tor SOCKS bağlantı noktası %(box_name)s kutunuzda TCP 9050 numaralı " -"portta mevcuttur." +"9050 nolu TCP bağlantı noktası üzerindeki %(box_name)s cihazınızda bir Tor " +"SOCKS bağlantı noktası mevcuttur." -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" -msgstr "Ayar değiştirilmedi" +msgstr "Ayar değişmedi" #: plinth/modules/transmission/__init__.py:28 msgid "" "BitTorrent is a peer-to-peer file sharing protocol. Transmission daemon " "handles Bitorrent file sharing. Note that BitTorrent is not anonymous." msgstr "" -"BitTorrent bir eşten eşe dosya paylaşma protokolüdür. Transmission servisi " -"BitTorrent dosya paylaşımını idare eder. BitTorrent'ın anonim olmadığını " -"unutmayın." +"BitTorrent, kişiden-kişiye bir dosya paylaşım protokolüdür. Transmission " +"arka plan programı, Bitorrent dosya paylaşımını yönetir. BitTorrent'in " +"isimsiz olmadığını unutmayın." #: plinth/modules/transmission/__init__.py:51 #: plinth/modules/transmission/manifest.py:9 @@ -6432,40 +6521,30 @@ msgid "" "allow reading news from any location, while feeling as close to a real " "desktop application as possible." msgstr "" -"Tiny Tiny RSS, mümkün olduğu kadar gerçek bir masaüstü uygulamasına benzeyen " -"ve haber toplamaları herhangi bir yerden okumaya imkân sağlamak için " -"tasarlanmış bir haber besleme (RSS/Atom) okuyucusu ve toplayıcısıdır." +"Tiny Tiny RSS, gerçek bir masaüstü uygulamasına olabildiğince yakın " +"hissettiren herhangi bir konumdan haberleri okumayı sağlamak için " +"tasarlanmış bir haber bildirim (RSS/Atom) okuyucusu ve toplayıcısıdır." #: plinth/modules/ttrss/__init__.py:33 -#, fuzzy, python-brace-format -#| msgid "" -#| "When enabled, Tiny Tiny RSS will be available from /" -#| "tt-rss path on the web server. It can be accessed by any user with a {box_name} login." +#, python-brace-format msgid "" "When enabled, Tiny Tiny RSS can be accessed by any user with a {box_name} login." msgstr "" -"Etkinleştirildiğinde,Tiny Tiny RSS'e erişim ağ sunucusunda /tt-rss yolundan mümkün olacaktır. Herhangi bir {box_name} kullanıcısı, ki oturumu olmalıdır tarafından " -"kullanılabilir." +"Etkinleştirildiğinde, Tiny Tiny RSS'ye {box_name} " +"oturum açma adı olan herhangi bir kullanıcı tarafından erişilebilir." #: plinth/modules/ttrss/__init__.py:37 -#, fuzzy -#| msgid "" -#| "When using a mobile or desktop application for Tiny Tiny RSS, use the URL " -#| "/tt-rss-app for connecting." msgid "" "When using a mobile or desktop application for Tiny Tiny RSS, use the URL /tt-rss-app for connecting." msgstr "" -"Tiny Tiny RSS ile mobil ya da masaüstü uygulama kullanırken bağlantı için /tt-rss-app URL'ini kullanın." +"Tiny Tiny RSS için bir mobil veya masaüstü uygulaması kullanırken, bağlanmak " +"için /tt-rss-app URL'sini kullanın." #: plinth/modules/ttrss/__init__.py:53 msgid "Read and subscribe to news feeds" -msgstr "Haber beslemelerini oku ve onlara abone ol" +msgstr "Haber bildirimlerini oku ve abone ol" #: plinth/modules/ttrss/__init__.py:56 plinth/modules/ttrss/manifest.py:19 msgid "Tiny Tiny RSS" @@ -6473,51 +6552,76 @@ msgstr "Tiny Tiny RSS" #: plinth/modules/ttrss/__init__.py:57 msgid "News Feed Reader" -msgstr "Haber Besleme Okuyucusu" +msgstr "Haber Bildirim Okuyucusu" #: plinth/modules/ttrss/manifest.py:10 -#, fuzzy -#| msgid "Tiny Tiny RSS" msgid "Tiny Tiny RSS (Fork)" -msgstr "Tiny Tiny RSS" +msgstr "Tiny Tiny RSS (Fork)" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." -msgstr "" +msgstr "En son yazılım ve güvenlik güncellemelerini denetleyin ve uygulayın." -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " "to be unavailable briefly. If system reboot is deemed necessary, it is done " "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" +"Güncellemeler yerel saat dilimine göre her gün 06:00'da yapılır. Tarih ve " +"Saat uygulamasında saat diliminizi ayarlayın. Güncellemeden sonra " +"uygulamalar yeniden başlatılır ve kısa bir süre kullanılamaz hale gelir. " +"Eğer sistemin yeniden başlatılması gerekli görülürse, saat 02:00'da otomatik " +"olarak yapılır ve tüm uygulamalar kısa bir süre için kullanılamaz hale gelir." -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "Güncelle" -#: plinth/modules/upgrades/__init__.py:83 -#, fuzzy -#| msgid "FreedomBox Foundation" +#: plinth/modules/upgrades/__init__.py:102 msgid "FreedomBox Updated" -msgstr "FreedomBox Vakfı" +msgstr "FreedomBox Güncellendi" #: plinth/modules/upgrades/forms.py:13 -#, fuzzy -#| msgid "Enable automatic upgrades" msgid "Enable auto-update" -msgstr "Otomatik güncellemeleri etkinleştir" +msgstr "Otomatik güncellemeyi etkinleştir" #: plinth/modules/upgrades/forms.py:14 msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +"Etkinleştirildiğinde, FreedomBox günde bir kez otomatik olarak güncellenir." + +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "Sık yapılan özellik güncellemelerini etkinleştir (önerilir)" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +#, fuzzy +#| msgid "" +#| "Warning! Once frequent feature updates are activated, " +#| "they cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" +"Uyarı! Sık yapılan özellik güncellemeleri " +"etkinleştirildiğinde, devre dışı bırakılamazlar. Devam etmeden önce Depolama Anlık Görüntülerini kullanarak bir anlık " +"görüntü almak isteyebilirsiniz." #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 -#, fuzzy, python-format -#| msgid "Plinth is up to date." +#, python-format msgid "%(box_name)s Updated" -msgstr "Plinth günceldir." +msgstr "%(box_name)s Güncellendi" #: plinth/modules/upgrades/templates/upgrades-new-release.html:13 #, python-format @@ -6525,69 +6629,97 @@ msgid "" "%(box_name)s has been updated to version %(version)s. See the release announcement." msgstr "" +"%(box_name)s, %(version)s sürümüne güncellendi. Yayım " +"duyurusuna bakın." #: plinth/modules/upgrades/templates/upgrades-new-release.html:22 #: plinth/templates/notifications.html:44 msgid "Dismiss" +msgstr "Yoksay" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" +"Sık yapılan özellik güncellemeleri etkinleştirilebilir. Bunların " +"etkinleştirilmesi önerilir." -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -#, fuzzy -#| msgid "Last update" -msgid "Manual update" -msgstr "Son güncelleme" - -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 -msgid "Updating..." -msgstr "" - -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 -#, fuzzy -#| msgid "Update" -msgid "Update now" -msgstr "Güncelle" - -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 #, fuzzy #| msgid "" -#| "Depending on the number of packages to install, this may take a long time " -#| "to complete. While upgrades are in progress, you will not be able to " -#| "install other packages. During the upgrade, this web interface may be " -#| "temporarily unavailable and show an error. Refresh the page to continue." +#| "Frequent feature updates can be activated. Activating them is recommended." +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" +"Sık yapılan özellik güncellemeleri etkinleştirilebilir. Bunların " +"etkinleştirilmesi önerilir." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" +"Uyarı! Sık yapılan özellik güncellemeleri " +"etkinleştirildiğinde, devre dışı bırakılamazlar. Devam etmeden önce Depolama Anlık Görüntülerini kullanarak bir anlık " +"görüntü almak isteyebilirsiniz." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "Elle Güncelleme" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 +msgid "Updating..." +msgstr "Güncelleniyor..." + +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 +msgid "Update now" +msgstr "Şimdi güncelle" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -"Kurulacak paket sayısına göre bunun tamamlanması uzun bir süre alabilir. " -"Yükseltmeler sürmekteyken başka paket kurmanız mümkün olmayacaktır. " -"Yükseltme sırasında bu ağ arayüzüne geçici olarak erişim mümkün olmayabilir " -"ve bir hata gösterebilir. Devam etmek için sayfayı tazeleyin." +"Bu işlemin tamamlanması uzun zaman alabilir. Güncelleme " +"sırasında uygulama yükleyemezsiniz. Ayrıca, bu web arayüzü geçici olarak " +"kullanılamayabilir ve bir hata gösterebilir. Bu durumda devam etmek için " +"sayfayı yenileyin." -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" -msgstr "" - -#: plinth/modules/upgrades/views.py:53 -#, python-brace-format -msgid "Error when configuring unattended-upgrades: {error}" -msgstr "unattended-upgrades yapılandırılırken bir hata oluştu: {error}" +msgstr "Son güncelleme günlüklerini göster" #: plinth/modules/upgrades/views.py:57 +#, python-brace-format +msgid "Error when configuring unattended-upgrades: {error}" +msgstr "unattended-upgrades yapılandırılırken bir hata oldu: {error}" + +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "Otomatik yükseltmeler etkinleştirildi" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" -msgstr "Otomatik yükseltmeler devre dışı bırakıldı" +msgstr "Otomatik yükseltmeler etkisizleştirildi" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." -msgstr "Yükseltme süreci başlamıştır." +msgstr "Yükseltme işlemi başladı." -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." -msgstr "Yükseltmenin başlatılması başarısız oldu." +msgstr "Yükseltmeyi başlatma başarısız oldu." + +#: plinth/modules/upgrades/views.py:91 +#, fuzzy +#| msgid "Frequent feature updates are enabled." +msgid "Frequent feature updates activated." +msgstr "Sık yapılan özellik güncellemeleri etkinleştirildi." #: plinth/modules/users/__init__.py:39 msgid "" @@ -6595,6 +6727,10 @@ msgid "" "authentication mechanism for most apps. Some apps further require a user " "account to be part of a group to authorize the user to access the app." msgstr "" +"Kullanıcı hesapları oluşturun ve yönetin. Bu hesaplar, çoğu uygulama için " +"merkezi kimlik doğrulama mekanizması görevi görür. Bazı uygulamalar ayrıca " +"kullanıcıya, uygulamaya erişme yetkisi vermek için bir kullanıcı hesabının " +"bir grubun parçası olmasını gerektirir." #: plinth/modules/users/__init__.py:44 #, python-brace-format @@ -6603,6 +6739,10 @@ msgid "" "relevant to them in the home page. However, only users of the admin " "group may alter apps or system settings." msgstr "" +"Herhangi bir kullanıcı, ana sayfada kendileriyle ilgili uygulamaların bir " +"listesini görmek için {box_name} web arayüzünde oturum açabilir. Ancak, " +"sadece admin grubunun kullanıcıları uygulamaları veya sistem " +"ayarlarını değiştirebilir." #: plinth/modules/users/__init__.py:65 msgid "Users and Groups" @@ -6610,40 +6750,29 @@ msgstr "Kullanıcılar ve Gruplar" #: plinth/modules/users/__init__.py:78 msgid "Access to all services and system settings" -msgstr "Tüm servislere ve sistem ayarlarına erişim" +msgstr "Tüm hizmetlere ve sistem ayarlarına erişim" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" -msgstr "\"{search_item}\" LDAP unsurunu kontrol et" +msgstr "LDAP \"{search_item}\" girişini denetleme" #: plinth/modules/users/forms.py:36 msgid "Username is taken or is reserved." -msgstr "Kullanıcı ismi zaten alınmış ya da ayrılmıştır." +msgstr "Kullanıcı adı alınmış veya ayrılmış." #: plinth/modules/users/forms.py:63 -#, fuzzy -#| msgid "Invalid server name" msgid "Enter a valid username." -msgstr "Geçersiz sunucu ismi" +msgstr "Geçerli bir kullanıcı adı girin." -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" +"Zorunlu. 150 veya daha az karakter. Sadece İngilizce harfler, rakamlar ve " +"@/./-/_ karakterleri." -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "İzinler" - -#: plinth/modules/users/forms.py:85 -#, fuzzy -#| msgid "" -#| "Select which services should be available to the new user. The user will " -#| "be able to log in to services that support single sign-on through LDAP, " -#| "if they are in the appropriate group.

    Users in the admin group " -#| "will be able to log in to all services. They can also log in to the " -#| "system through SSH and have administrative privileges (sudo)." +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -6651,82 +6780,80 @@ msgid "" "able to log in to all services. They can also log in to the system through " "SSH and have administrative privileges (sudo)." msgstr "" -"Yeni kullanıcıya hangi servislerin mevcut olacağını seçin. Kullanıcı, uygun " -"grupta iseler, LDAP vasıtasıyla tek oturum açma desteği bulunan servislere " -"giriş yapabilecektir.

    admin grubundaki kullanıcılar tüm " -"servislere giriş yapabilecektir. Aynı zamanda sisteme SSH aracılığıyla giriş " -"yapıp yönetici izinlerine (sudo) erişebileceklerdir." +"Yeni kullanıcı için hangi hizmetlerin kullanılabilir olması gerektiğini " +"seçin. Kullanıcı, uygun gruptaysa, LDAP aracılığıyla tek oturum açmayı " +"destekleyen hizmetlerde oturum açabilecektir.

    Admin grubundaki " +"kullanıcılar tüm hizmetlere oturum açabilecektir. Ayrıca SSH aracılığıyla " +"sisteme oturum açabilir ve yönetici yetkilerine (sudo) sahip olabilirler." -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." -msgstr "LDAP kullanıcısı oluşturması başarısız oldu." +msgstr "LDAP kullanıcısının oluşturulması başarısız oldu." -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." -msgstr "{group} grubuna yeni kullanıcı ilâve edilmesi başarısız oldu." +msgstr "{group} grubuna yeni kullanıcı ekleme başarısız oldu." -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" -msgstr "" +msgstr "Yetkili SSH Anahtarları" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -"Herkese açık bir SSH anahtarı ayarlamak, bu kullanıcının sisteme parola " -"kullanmadan güvenli bir şekilde giriş yapmasına müsaade edecektir. Birden " -"çok anahtar girebilirsiniz, her anahtarı yeni bir satırda girin. Boş " -"satırlar ve # ile başlayan satırlar görmezden gelinecektir." +"Bir SSH ortak anahtarı ayarlamak, bu kullanıcının bir parola kullanmadan " +"sistemde güvenli bir şekilde oturum açmasına izin verecek. Her satıra bir " +"tane olmak üzere birden çok anahtar girebilirsiniz. Boş satırlar ve # ile " +"başlayan satırlar yoksayılacaktır." -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." -msgstr "LDAP kullanıcısının tekrar adlandırılması başarısız oldu." +msgstr "LDAP kullanıcısının yeniden adlandırılması başarısız oldu." -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." -msgstr "Kullanıcının gruptan kaldırılması başarısız oldu." +msgstr "Kullanıcıyı gruptan kaldırma başarısız oldu." -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." -msgstr "Kullanıcının gruba eklenmesi başarısız oldu." +msgstr "Kullanıcıyı gruba ekleme başarısız oldu." -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." -msgstr "SSH anahtarları ayarlanamadı." +msgstr "SSH anahtarları ayarlanamıyor." -#: plinth/modules/users/forms.py:281 -#, fuzzy -#| msgid "Failed to add user to group." +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." -msgstr "Kullanıcının gruba eklenmesi başarısız oldu." +msgstr "Kullanıcı durumunu değiştirme başarısız oldu." -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." -msgstr "" +msgstr "Sistemdeki tek yönetici silinemez." -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "LDAP kullanıcı parolasının değiştirilmesi başarısız oldu." -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." -msgstr "Yeni kullanıcının admin (yönetici) grubuna eklenmesi başarısız oldu." +msgstr "Admin grubuna yeni kullanıcı ekleme başarısız oldu." -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." -msgstr "Konsol erişiminin kısıtlanması başarısız oldu." +msgstr "Konsol erişimini kısıtlama başarısız oldu." -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" -msgstr "Kullanıcı hesabı oluşturuldu, artık giriş yaptınız" +msgstr "Kullanıcı hesabı oluşturuldu, şu an oturum açtınız" #: plinth/modules/users/templates/users_change_password.html:11 #, python-format msgid "Change Password for %(username)s" -msgstr "%(username)s için Parola Değiştir" +msgstr "%(username)s için Parola Değiştirin" #: plinth/modules/users/templates/users_change_password.html:21 msgid "Save Password" @@ -6747,7 +6874,7 @@ msgstr "Kullanıcıyı Sil" #: plinth/modules/users/templates/users_delete.html:14 #, python-format msgid "Delete user %(username)s permanently?" -msgstr "%(username)s kullanıcısı daimi olarak silinsin mi?" +msgstr "%(username)s kullanıcısı kalıcı olarak silinsin mi?" #: plinth/modules/users/templates/users_delete.html:23 #, python-format @@ -6764,9 +6891,9 @@ msgid "" "can be changed later. This user will be granted administrative privileges. " "Other users can be added later." msgstr "" -"Bu ağ arayüzüne erişmek için bir kullanıcı ismi ve parola seçin. Parola daha " -"sonra değiştirilebilir. Kullanıcıya yönetici yetkileri verilecektir. Başka " -"kullanıcılar daha sonra ilave edilebilir." +"Bu web arayüzüne erişmek için bir kullanıcı adı ve parola seçin. Parola daha " +"sonra değiştirilebilir. Bu kullanıcıya yönetici yetkileri verilecektir. " +"Diğer kullanıcılar daha sonra eklenebilir." #: plinth/modules/users/templates/users_firstboot.html:27 msgid "Create Account" @@ -6794,7 +6921,7 @@ msgid "" "change the password." msgstr "" "Parolayı değiştirmek için parola " -"değiştirme formunu kullanın." +"değiştirme formunu kullanın." #: plinth/modules/users/templates/users_update.html:27 #: plinth/templates/language-selection.html:17 @@ -6830,11 +6957,11 @@ msgstr "Parolayı Değiştir" #: plinth/modules/users/views.py:147 msgid "Password changed successfully." -msgstr "Parola başarılı bir şekilde değiştirildi." +msgstr "Parola başarılı olarak değiştirildi." #: plinth/modules/wireguard/__init__.py:24 msgid "WireGuard is a fast, modern, secure VPN tunnel." -msgstr "" +msgstr "WireGuard hızlı, modern ve güvenli bir VPN tünelidir." #: plinth/modules/wireguard/__init__.py:26 #, python-brace-format @@ -6842,6 +6969,9 @@ msgid "" "It can be used to connect to a VPN provider which supports WireGuard, and to " "route all outgoing traffic from {box_name} through the VPN." msgstr "" +"WireGuard'ı destekleyen bir VPN sağlayıcısına bağlanmak ve {box_name} " +"cihazından gelen tüm giden trafiği VPN aracılığıyla yönlendirmek için " +"kullanılabilir." #: plinth/modules/wireguard/__init__.py:30 #, python-brace-format @@ -6850,60 +6980,60 @@ msgid "" "travelling. While connected to a public Wi-Fi network, all traffic can be " "securely relayed through {box_name}." msgstr "" +"İkinci kullanım durumu, seyahat sırasında bir mobil cihazı {box_name} " +"cihazına bağlamaktır. Halka açık bir Kablosuz (Wi-Fi) ağına bağlıyken, tüm " +"trafik {box_name} aracılığıyla güvenli bir şekilde aktarılabilir." -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" -msgstr "" +msgstr "WireGuard" #: plinth/modules/wireguard/forms.py:32 -#, fuzzy -#| msgid "Invalid kite name" msgid "Invalid key." -msgstr "Geçersiz kite ismi" +msgstr "Geçersiz anahtar." #: plinth/modules/wireguard/forms.py:61 #: plinth/modules/wireguard/templates/wireguard.html:17 #: plinth/modules/wireguard/templates/wireguard.html:74 #: plinth/modules/wireguard/templates/wireguard_delete_server.html:23 -#, fuzzy -#| msgid "Publish Key" msgid "Public Key" -msgstr "Anahtarı Yayınla" +msgstr "Ortak Anahtar" #: plinth/modules/wireguard/forms.py:62 msgid "" "Public key of the peer. Example: " "MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." msgstr "" +"Kişinin ortak anahtarı. Örnek: MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." #: plinth/modules/wireguard/forms.py:70 msgid "Endpoint of the server" -msgstr "" +msgstr "Sunucunun uç noktası" #: plinth/modules/wireguard/forms.py:71 msgid "" "Domain name and port in the form \"ip:port\". Example: demo.wireguard." "com:12912 ." msgstr "" +"\"ip:b.noktası\" biçiminde etki alanı adı ve bağlantı noktası. Örnek: demo." +"wireguard.com:12912." #: plinth/modules/wireguard/forms.py:76 -#, fuzzy -#| msgid "Published key to keyserver." msgid "Public key of the server" -msgstr "Anahtar, anahtar sunucusuna yayınlandı." +msgstr "Sunucunun ortak anahtarı" #: plinth/modules/wireguard/forms.py:77 msgid "" "Provided by the server operator, a long string of characters. Example: " "MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." msgstr "" +"Sunucu işleticisi tarafından sağlanan uzun bir karakter dizgisi. Örnek: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." #: plinth/modules/wireguard/forms.py:82 -#, fuzzy -#| msgid "A list of IP addresses, separated by space" msgid "Client IP address provided by server" -msgstr "Boşluklarla ayrılmış IP adresleri listesi" +msgstr "Sunucu tarafından sağlanan istemci IP adresi" #: plinth/modules/wireguard/forms.py:83 msgid "" @@ -6911,10 +7041,12 @@ msgid "" "endpoint. This value is usually provided by the server operator. Example: " "192.168.0.10." msgstr "" +"Uç noktaya bağlandıktan sonra VPN'de bu makineye atanan IP adresi. Bu değer " +"genellikle sunucu işleticisi tarafından verilir. Örnek: 192.168.0.10." #: plinth/modules/wireguard/forms.py:89 msgid "Private key of this machine" -msgstr "" +msgstr "Bu makinenin özel anahtarı" #: plinth/modules/wireguard/forms.py:90 msgid "" @@ -6923,10 +7055,14 @@ msgid "" "some server operators insist on providing this. Example: " "MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." msgstr "" +"İsteğe bağlı. Boş bırakılırsa yeni ortak/özel anahtarlar oluşturulur. Ortak " +"anahtar daha sonra sunucuya girilebilir. Bu önerilen yoldur. Ancak, bazı " +"sunucu işleticileri bunu vermekte ısrar eder. Örnek: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs= ." #: plinth/modules/wireguard/forms.py:98 msgid "Pre-shared key" -msgstr "" +msgstr "Ön paylaşımlı anahtar" #: plinth/modules/wireguard/forms.py:99 msgid "" @@ -6934,123 +7070,105 @@ msgid "" "layer of security. Fill in only if provided. Example: " "MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." msgstr "" +"İsteğe bağlı. Ek bir güvenlik katmanı eklemek için sunucu tarafından " +"sağlanan paylaşılan bir gizli anahtar. Sadece verildiyse doldurun. Örnek: " +"MConEJFIg6+DFHg2J1nn9SNLOSE9KR0ysdPgmPjibEs=." #: plinth/modules/wireguard/forms.py:105 msgid "Use this connection to send all outgoing traffic" -msgstr "" +msgstr "Tüm giden trafiği göndermek için bu bağlantıyı kullan" #: plinth/modules/wireguard/forms.py:107 msgid "Typically checked for a VPN service though which all traffic is sent." -msgstr "" +msgstr "Genellikle tüm trafiğin gönderildiği bir VPN hizmeti için denetlenir." #: plinth/modules/wireguard/templates/wireguard.html:10 -#, fuzzy -#| msgid "Chat Server" msgid "As a Server" -msgstr "Sohbet Sunucusu" +msgstr "Bir Sunucu olarak" #: plinth/modules/wireguard/templates/wireguard.html:12 msgid "Peers allowed to connect to this server:" -msgstr "" +msgstr "Bu sunucuya bağlanmasına izin verilen kişiler:" #: plinth/modules/wireguard/templates/wireguard.html:18 msgid "Allowed IPs" -msgstr "" +msgstr "İzin verilen IP'ler" #: plinth/modules/wireguard/templates/wireguard.html:19 #: plinth/modules/wireguard/templates/wireguard.html:75 -#, fuzzy -#| msgid "Create Connection" msgid "Last Connected Time" -msgstr "Bağlantı Oluştur" +msgstr "Son Bağlanma Zamanı" #: plinth/modules/wireguard/templates/wireguard.html:38 #, python-format msgid "No peers configured to connect to this %(box_name)s yet." msgstr "" +"Henüz bu %(box_name)s cihazına bağlanmak için yapılandırılmış kişiler yok." #: plinth/modules/wireguard/templates/wireguard.html:47 #, python-format msgid "Public key for this %(box_name)s:" -msgstr "" +msgstr "Bu %(box_name)s için ortak anahtar:" #: plinth/modules/wireguard/templates/wireguard.html:53 msgid "Not configured yet." -msgstr "" +msgstr "Henüz yapılandırılmadı." #: plinth/modules/wireguard/templates/wireguard.html:57 -#, fuzzy -#| msgid "Add new introducer" msgid "Add a new peer" -msgstr "Yeni tanıtıcı ekle" +msgstr "Yeni bir kişi ekle" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" -msgstr "" +msgstr "İzin Verilen İstemci Ekle" #: plinth/modules/wireguard/templates/wireguard.html:64 -#, fuzzy -#| msgid "Chat Client" msgid "As a Client" -msgstr "Sohbet İstemcisi" +msgstr "Bir İstemci olarak" #: plinth/modules/wireguard/templates/wireguard.html:66 #, python-format msgid "Servers that %(box_name)s will connect to:" -msgstr "" +msgstr "%(box_name)s cihazının bağlanacağı sunucular:" #: plinth/modules/wireguard/templates/wireguard.html:73 #: plinth/modules/wireguard/templates/wireguard_delete_server.html:19 msgid "Endpoint" -msgstr "" +msgstr "Uç nokta" #: plinth/modules/wireguard/templates/wireguard.html:96 msgid "No connections to remote servers are configured yet." -msgstr "" +msgstr "Henüz uzak sunuculara yapılandırılan bağlantılar yok." #: plinth/modules/wireguard/templates/wireguard.html:104 -#, fuzzy -#| msgid "Add new introducer" msgid "Add a new server" -msgstr "Yeni tanıtıcı ekle" +msgstr "Yeni bir sunucu ekleyin" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 -#, fuzzy -#| msgid "Add Connection" +#: plinth/modules/wireguard/views.py:157 msgid "Add Connection to Server" -msgstr "Bağlantı Ekle" +msgstr "Sunucuya Bağlantı Ekle" #: plinth/modules/wireguard/templates/wireguard_add_client.html:19 -#, fuzzy -#| msgid "IRC Client" msgid "Add Client" -msgstr "IRC İstemcisi" +msgstr "İstemci Ekle" #: plinth/modules/wireguard/templates/wireguard_delete_client.html:14 -#, fuzzy -#| msgid "Are you sure that you want to remove this repository?" msgid "Are you sure that you want to delete this client?" -msgstr "Bu depoyu kaldırmak istediğinizden emin misiniz?" +msgstr "Bu istemciyi silmek istediğinize emin misiniz?" #: plinth/modules/wireguard/templates/wireguard_delete_server.html:14 -#, fuzzy -#| msgid "Are you sure that you want to remove this repository?" msgid "Are you sure that you want to delete this server?" -msgstr "Bu depoyu kaldırmak istediğinizden emin misiniz?" +msgstr "Bu sunucuyu silmek istediğinize emin misiniz?" #: plinth/modules/wireguard/templates/wireguard_edit_client.html:19 -#, fuzzy -#| msgid "Chat Client" msgid "Update Client" -msgstr "Sohbet İstemcisi" +msgstr "İstemciyi Güncelle" #: plinth/modules/wireguard/templates/wireguard_edit_server.html:19 -#, fuzzy -#| msgid "Create Connection" msgid "Update Connection" -msgstr "Bağlantı Oluştur" +msgstr "Bağlantıyı Güncelle" #: plinth/modules/wireguard/templates/wireguard_show_client.html:12 #, python-format @@ -7058,47 +7176,45 @@ msgid "" "%(box_name)s will allow this client to connect to it. Ensure that the client " "is configured with the following information." msgstr "" +"%(box_name)s, bu istemcinin ona bağlanmasına izin verecek. İstemcinin " +"aşağıdaki bilgilerle yapılandırıldığından emin olun." #: plinth/modules/wireguard/templates/wireguard_show_client.html:20 msgid "Client public key:" -msgstr "" +msgstr "İstemci ortak anahtarı:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:24 msgid "IP address to use for client:" -msgstr "" +msgstr "İstemci için kullanılacak IP adresi:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:28 #: plinth/modules/wireguard/templates/wireguard_show_server.html:31 msgid "Pre-shared key:" -msgstr "" +msgstr "Ön paylaşımlı anahtar:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:32 -#, fuzzy -#| msgid "Server domain" msgid "Server endpoints:" -msgstr "Sunucu alanı" +msgstr "Sunucu uç noktaları:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:40 #: plinth/modules/wireguard/templates/wireguard_show_server.html:27 -#, fuzzy -#| msgid "Server port number" msgid "Server public key:" -msgstr "Sunucu port numarası" +msgstr "Sunucu ortak anahtarı:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:50 #: plinth/modules/wireguard/templates/wireguard_show_server.html:49 msgid "Data transmitted:" -msgstr "" +msgstr "Aktarılan veriler:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:54 #: plinth/modules/wireguard/templates/wireguard_show_server.html:53 msgid "Data received:" -msgstr "" +msgstr "Alınan veriler:" #: plinth/modules/wireguard/templates/wireguard_show_client.html:58 #: plinth/modules/wireguard/templates/wireguard_show_server.html:57 msgid "Latest handshake:" -msgstr "" +msgstr "En son görüşme:" #: plinth/modules/wireguard/templates/wireguard_show_server.html:14 #, python-format @@ -7107,104 +7223,77 @@ msgid "" "information. Ensure that the server is configured to allow %(box_name)s's " "public key and IP address." msgstr "" +"%(box_name)s aşağıdaki bilgilerle bir WireGuard sunucusuna ulaşmaya " +"çalışacak. Sunucunun, %(box_name)s cihazının ortak anahtarına ve IP adresine " +"erişmeye izin vermek için yapılandırıldığından emin olun." #: plinth/modules/wireguard/templates/wireguard_show_server.html:23 -#, fuzzy -#| msgid "Server domain" msgid "Server endpoint:" -msgstr "Sunucu alanı" +msgstr "Sunucu uç noktası:" #: plinth/modules/wireguard/templates/wireguard_show_server.html:35 msgid "Public key of this machine:" -msgstr "" +msgstr "Bu makinenin ortak anahtarı:" #: plinth/modules/wireguard/templates/wireguard_show_server.html:39 msgid "IP address of this machine:" -msgstr "" +msgstr "Bu makinenin IP adresi:" -#: plinth/modules/wireguard/views.py:45 -#, fuzzy -#| msgid "Add new introducer" +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." -msgstr "Yeni tanıtıcı ekle" +msgstr "Yeni istemci eklendi." -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 -#, fuzzy -#| msgid "This service already exists" +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" -msgstr "Bu servis zaten mevcuttur" +msgstr "Ortak anahtara sahip istemci zaten var" -#: plinth/modules/wireguard/views.py:73 -#, fuzzy -#| msgid "Email Client" +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" -msgstr "E-posta İstemcisi" +msgstr "İzin Verilen İstemci" -#: plinth/modules/wireguard/views.py:95 -#, fuzzy -#| msgid "Update setup" +#: plinth/modules/wireguard/views.py:93 msgid "Updated client." -msgstr "Kurulumu güncelle" +msgstr "İstemci güncellendi." -#: plinth/modules/wireguard/views.py:100 -#, fuzzy -#| msgid "Email Client" +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" -msgstr "E-posta İstemcisi" +msgstr "İstemciyi Değiştir" -#: plinth/modules/wireguard/views.py:133 -#, fuzzy -#| msgid "Delete All" +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" -msgstr "Tümünü Sil" +msgstr "İzin Verilen İstemciyi Sil" + +#: plinth/modules/wireguard/views.py:140 +msgid "Client deleted." +msgstr "İstemci silindi." #: plinth/modules/wireguard/views.py:142 -#, fuzzy -#| msgid "Archive deleted." -msgid "Client deleted." -msgstr "Arşiv silindi." - -#: plinth/modules/wireguard/views.py:144 -#, fuzzy -#| msgid "Repository not found" msgid "Client not found" -msgstr "Havuz bulunamadı" +msgstr "İstemci bulunamadı" -#: plinth/modules/wireguard/views.py:154 -#, fuzzy -#| msgid "Added custom service" +#: plinth/modules/wireguard/views.py:152 msgid "Added new server." -msgstr "Özel servis eklendi" +msgstr "Yeni sunucu eklendi." -#: plinth/modules/wireguard/views.py:175 -#, fuzzy -#| msgid "Connection Type" +#: plinth/modules/wireguard/views.py:173 msgid "Connection to Server" -msgstr "Bağlantı Türü" +msgstr "Sunucuya Bağlantı" -#: plinth/modules/wireguard/views.py:193 -#, fuzzy -#| msgid "Update setup" +#: plinth/modules/wireguard/views.py:191 msgid "Updated server." -msgstr "Kurulumu güncelle" +msgstr "Sunucu güncellendi." -#: plinth/modules/wireguard/views.py:198 -#, fuzzy -#| msgid "Edit Connection" +#: plinth/modules/wireguard/views.py:196 msgid "Modify Connection to Server" -msgstr "Bağlantıyı Düzenle" +msgstr "Sunucuya Bağlantıyı Değiştir" -#: plinth/modules/wireguard/views.py:235 -#, fuzzy -#| msgid "Delete Connection" +#: plinth/modules/wireguard/views.py:233 msgid "Delete Connection to Server" -msgstr "Bağlantıyı Sil" +msgstr "Sunucuya Bağlantıyı Sil" -#: plinth/modules/wireguard/views.py:255 -#, fuzzy -#| msgid "{name} deleted." +#: plinth/modules/wireguard/views.py:253 msgid "Server deleted." -msgstr "{name} silindi." +msgstr "Sunucu silindi." #: plinth/network.py:27 msgid "PPPoE" @@ -7212,37 +7301,37 @@ msgstr "PPPoE" #: plinth/network.py:28 msgid "Generic" -msgstr "Jenerik" +msgstr "Genel" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" -msgstr "Kurulum sırasında hata" +msgstr "Kurulum sırasında hata oldu" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" -msgstr "kuruluyor" +msgstr "yükleniyor" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "indiriliyor" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "ortam değiştirme" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" -msgstr "Yapılandırma dosyası: {file}" +msgstr "yapılandırma dosyası: {file}" #: plinth/templates/403.html:10 msgid "403 Forbidden" -msgstr "403 Yasaklanmış" +msgstr "403 Yasak" #: plinth/templates/403.html:14 #, python-format msgid "You don't have permission to access %(request_path)s on this server." -msgstr "Bu sunucuda %(request_path)s erişimi izniniz yoktur." +msgstr "Bu sunucuda %(request_path)s erişimine izniniz yok." #: plinth/templates/404.html:10 msgid "404" @@ -7251,44 +7340,36 @@ msgstr "404" #: plinth/templates/404.html:13 #, python-format msgid "Requested page %(request_path)s was not found." -msgstr "Talep edilen sayfa %(request_path)s bulunamadı." +msgstr "İstenen sayfa %(request_path)s bulunamadı." #: plinth/templates/404.html:19 -#, fuzzy -#| msgid "" -#| "If you believe this missing page should exist, please file a bug at the " -#| "Plinth project issue tracker." msgid "" "If you believe this missing page should exist, please file a bug at the " "FreedomBox Service (Plinth) project issue tracker." msgstr "" -"Eğer bu eksik sayfanın varolması gerektiğine inanıyorsanız, lütfen Plinth " -"projesinin hata " -"izleyicisine bir hata raporu bırakın." +"Eğer bu eksik sayfanın var olması gerektiğine inanıyorsanız, lütfen " +"FreedomBox Hizmeti (Plinth) projesi sorun izleyicisinde bir hata " +"bildirin." #: plinth/templates/500.html:10 msgid "500" msgstr "500" #: plinth/templates/500.html:14 -#, fuzzy, python-format -#| msgid "" -#| "This is an internal error and not something you caused or can fix. " -#| "Please report the error on the bug tracker so we can fix it. Also, please attach the " -#| "status log to the bug report." +#, python-format msgid "" "This is an internal error and not something you caused or can fix. Please " "report the error on the bug tracker so we can fix it. Also, please attach " "the status log to the bug report." msgstr "" -"Bu dahili bir hatadır ve sizin yaptığınız ya da giderebileceğiniz bir hata " -"değildir. Lütfen hatayı hata izleyicisinde rapor edin ki sorunu giderebilelim. Hata raporuna " -"durum kütüğünü eklemeyi unutmayınız." +"Bu bir iç hatadır ve sizin neden olduğunuz veya düzeltebileceğiniz bir şey " +"değildir. Lütfen düzeltebilmemiz için hata izleyicide hatayı bildirin. " +"Ayrıca, lütfen hata raporuna durum günlüğünü ekleyin." #: plinth/templates/app-header.html:22 msgid "Installation" @@ -7297,21 +7378,20 @@ msgstr "Kurulum" #: plinth/templates/app.html:29 #, python-format msgid "Service %(service_name)s is not running." -msgstr "%(service_name)s servisi çalışmamaktadır." +msgstr "%(service_name)s hizmeti çalışmıyor." #: plinth/templates/base.html:34 -#, fuzzy, python-format -#| msgid "Plinth administrative interface for the %(box_name)s" +#, python-format msgid "Core functionality and web interface for %(box_name)s" -msgstr "%(box_name)s için Plinth yönetim arayüzü" +msgstr "%(box_name)s için temel işlevsellik ve web arayüzü" #: plinth/templates/base.html:89 msgid "Toggle navigation" -msgstr "Tarama Geçişi" +msgstr "Gezinmeyi değiştir" #: plinth/templates/base.html:113 plinth/templates/base.html:116 msgid "Home" -msgstr "Ev" +msgstr "Giriş" #: plinth/templates/base.html:121 plinth/templates/base.html:125 msgid "Apps" @@ -7327,7 +7407,7 @@ msgstr "Parolayı değiştir" #: plinth/templates/base.html:174 plinth/templates/base.html:175 msgid "Restart" -msgstr "Tekrar Başlat" +msgstr "Yeniden başlat" #: plinth/templates/base.html:180 plinth/templates/base.html:181 msgid "Shut down" @@ -7336,25 +7416,23 @@ msgstr "Kapat" #: plinth/templates/base.html:188 plinth/templates/base.html:189 #: plinth/templates/base.html:213 plinth/templates/base.html:215 msgid "Log out" -msgstr "Çıkış yap" +msgstr "Oturumu kapat" #: plinth/templates/base.html:197 plinth/templates/base.html:200 -#, fuzzy -#| msgid "Language" msgid "Select language" -msgstr "Lisan" +msgstr "Dil seçin" #: plinth/templates/base.html:205 plinth/templates/base.html:207 msgid "Log in" -msgstr "Giriş yap" +msgstr "Oturum aç" #: plinth/templates/clients-button.html:16 msgid "Launch web client" -msgstr "Ağ istemcisini başlat" +msgstr "Web istemcisini başlat" #: plinth/templates/clients-button.html:25 msgid "Client Apps" -msgstr "İstemci Uygulamalar" +msgstr "İstemci Uygulamaları" #: plinth/templates/clients.html:17 msgid "Web" @@ -7366,7 +7444,7 @@ msgstr "Masaüstü" #: plinth/templates/clients.html:53 msgid "GNU/Linux" -msgstr "" +msgstr "GNU/Linux" #: plinth/templates/clients.html:55 msgid "Windows" @@ -7414,8 +7492,8 @@ msgid "" "Please wait for %(box_name)s to finish installation. You can start using " "your %(box_name)s once it is done." msgstr "" -"Lütfen %(box_name)s kutusunun kurulumu bitirmesini bekleyin. Kurulum sona " -"erdiğinde %(box_name)s kutusunu kullanabileceksiniz." +"Kurulumu tamamlaması için lütfen %(box_name)s cihazını bekleyin. Bittikten " +"sonra %(box_name)s cihazınızı kullanmaya başlayabilirsiniz." #: plinth/templates/index.html:22 #, python-format @@ -7423,8 +7501,8 @@ msgid "" "Enable some applications to add shortcuts to " "this page." msgstr "" -"Bu sayfaya kısayol eklemek için uygulama " -"etkinleştiriniz." +"Bu sayfaya kısayollar eklemek için bazı uygulamaları etkinleştirin." #: plinth/templates/index.html:46 msgid "Configure »" @@ -7437,33 +7515,29 @@ msgid "" "server to deploy social applications on small machines. It provides online " "communication tools respecting your privacy and data ownership." msgstr "" -"%(box_name)s, arı bir Debian sürümüdür ve sosyal uygulamaları küçük " -"makinelere kurmak için %%100 özgür yazılım olan kendi kendini barındıran web " -"sunucusudur. Veri sahipliğinize ve gizliliğinize saygı gösteren çevrimiçi " -"iletişim araçları sunar." +"Debian'ın saf bir karışımı olan %(box_name)s, sosyal uygulamaları küçük " +"makinelere dağıtmak için %%100 ücretsiz, kendi kendini barındıran bir web " +"sunucusudur. Gizliliğinize ve veri sahipliğinize saygı duyan çevrimiçi " +"iletişim araçları sağlar." #: plinth/templates/index.html:117 -#, fuzzy, python-format -#| msgid "" -#| "This portal is a part of Plinth, the %(box_name)s web interface. Plinth " -#| "is free software, distributed under the GNU Affero General Public " -#| "License, Version 3 or later." +#, python-format msgid "" "This portal is a part of the %(box_name)s web interface. %(box_name)s is " "free software, distributed under the GNU Affero General Public License, " "Version 3 or later." msgstr "" -"Bu portal %(box_name)s kutusunun ağ arayüzü olan Plinth'in bir parçasıdır. " -"Plinth özgür yazılımdır ve GNU Affero Genel Kamu Lisansının 3. ya da daha " -"sonraki sürümleri kapsamında yayınlanmıştır." +"Bu portal, %(box_name)s web arayüzünün bir parçasıdır. %(box_name)s, GNU " +"Affero Genel Kamu Lisansı, Sürüm 3 veya üzeri altında dağıtılan özgür bir " +"yazılımdır." #: plinth/templates/index.html:137 msgid "Homepage" -msgstr "Ana sayfa" +msgstr "Ana Sayfa" #: plinth/templates/index.html:140 msgid "Source Code" -msgstr "Kaynak kod" +msgstr "Kaynak Kodu" #: plinth/templates/index.html:143 msgid "Donate" @@ -7475,23 +7549,24 @@ msgstr "FreedomBox Vakfı" #: plinth/templates/index.html:154 msgid "IRC Chatroom" -msgstr "IRC sohbet odası" +msgstr "IRC Sohbet Odası" #: plinth/templates/index.html:159 msgid "Mailing list" -msgstr "E-posta listesi" +msgstr "Posta listesi" #: plinth/templates/internal-zone.html:11 -#, fuzzy, python-format -#| msgid "Service %(service_name)s is not running." +#, python-format msgid "" "%(service_name)s is available only on internal networks or when the " "client is connected to %(box_name)s through VPN." -msgstr "%(service_name)s servisi çalışmamaktadır." +msgstr "" +" %(service_name)s sadece dahili ağlarda veya istemci VPN " +"aracılığıyla %(box_name)s cihazına bağlandığında kullanılabilir." #: plinth/templates/internal-zone.html:17 msgid "Currently there are no network interfaces configured as internal." -msgstr "" +msgstr "Şu anda dahili olarak yapılandırılmış ağ arayüzleri yok." #: plinth/templates/internal-zone.html:19 #, python-format @@ -7499,72 +7574,188 @@ msgid "" "Currently the following network interfaces are configured as internal: " "%(interface_list)s" msgstr "" +"Şu anda şu ağ arayüzleri dahili olarak yapılandırıldı: %(interface_list)s" #: plinth/templates/notifications-dropdown.html:11 -#, fuzzy -#| msgid "No certificate" msgid "Notifications" -msgstr "Sertifika yok" +msgstr "Bildirimler" #: plinth/templates/port-forwarding-info.html:8 -#, fuzzy -#| msgid "Enable forwarding" msgid "Port Forwarding" -msgstr "İletmeyi etkinleştir" +msgstr "Bağlantı Noktası Yönlendirme" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 +#, fuzzy, python-format +#| msgid "" +#| "You may want to check the network setup " +#| "and modify it if necessary." +msgid "" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" +"Ağ ayarlamasını gözden geçirmek ve " +"gerekirse değiştirmek isteyebilirsiniz." + +#: plinth/templates/port-forwarding-info.html:19 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." msgstr "" +#: plinth/templates/port-forwarding-info.html:26 +#, fuzzy, python-format +#| msgid "" +#| "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 " +#| "%(service_name)s:" +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" +"Eğer FreedomBox'ınız bir yönlendiricinin arkasındaysa, yönlendiricinizde " +"bağlantı noktası yönlendirmeyi ayarlamanız gerekecektir. %(service_name)s " +"için aşağıdaki bağlantı noktalarını yönlendirmelisiniz:" + +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "protokol" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "%(box_name)s Ayarlaması" + #: plinth/templates/setup.html:24 msgid "Install this application?" -msgstr "Bu uygulama kurulsun mu?" +msgstr "Bu uygulama yüklensin mi?" #: plinth/templates/setup.html:28 msgid "This application needs an update. Update now?" -msgstr "Bu uygulamanın güncellemeye ihtiyacı var. Şimdi güncellensin mi?" +msgstr "Bu uygulamanın güncellenmesi gerekiyor. Şimdi güncellensin mi?" #: plinth/templates/setup.html:39 msgid "" "Another installation or upgrade is already running. Please wait for a few " "moments before trying again." msgstr "" -"Başka bir kurulum ya da güncelleme zaten çalışmaktadır. Lütfen tekrar " -"denemeden önce biraz bekleyin." +"Başka bir kurulum veya yükseltme zaten çalışıyor. Lütfen tekrar denemeden " +"önce biraz bekleyin." #: plinth/templates/setup.html:46 msgid "This application is currently not available in your distribution." -msgstr "" +msgstr "Bu uygulama şu anda dağıtımınızda mevcut değil." #: plinth/templates/setup.html:60 msgid "Install" -msgstr "Kur" +msgstr "Yükle" #: plinth/templates/setup.html:71 msgid "Performing pre-install operation" -msgstr "Kurulum öncesi işlemleri yapılıyor" +msgstr "Yükleme öncesi işlemi gerçekleştiriliyor" #: plinth/templates/setup.html:75 msgid "Performing post-install operation" -msgstr "Kurulum sonrası işlemleri yapılıyor" +msgstr "Yükleme sonrası işlemi gerçekleştiriliyor" #: plinth/templates/setup.html:80 #, python-format msgid "Installing %(package_names)s: %(status)s" -msgstr "%(package_names)s kuruluyor: %(status)s" +msgstr "Yüklenen %(package_names)s: %(status)s" #: plinth/templates/setup.html:90 #, python-format msgid "%(percentage)s%% complete" -msgstr "%(percentage)s%% tamamlandı" +msgstr "%%%(percentage)s tamamlandı" #: plinth/web_framework.py:113 msgid "Gujarati" -msgstr "" +msgstr "Gujarati" + +#~ msgid "Backports activated." +#~ msgstr "Arka bağlantı noktaları etkinleştirildi." + +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot, kullanıcıların gizliliğini korumaya odaklanan \"tek tıklamayla" +#~ "\" dosya paylaşım web uygulamasıdır. En iyi, tek bir dosyayı hızlı bir " +#~ "şekilde paylaşmak için kullanılır. " + +#~ msgid "" +#~ "This Coquelicot instance is exposed to the public but requires an upload " +#~ "password to prevent unauthorized access. You can set a new upload " +#~ "password in the form that will appear below after installation. The " +#~ "default upload password is \"test\"." +#~ msgstr "" +#~ "Bu Coquelicot örneği herkese açıktır ancak yetkisiz erişimi önlemek için " +#~ "bir yükleme parolası gerektirir. Kurulumdan sonra aşağıda görünecek olan " +#~ "formda yeni bir yükleme parolası belirleyebilirsiniz. Varsayılan yükleme " +#~ "parolası \"test\"tir." + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "Yükleme Parolası" + +#~ msgid "" +#~ "Set a new upload password for Coquelicot. Leave this field blank to keep " +#~ "the current password." +#~ msgstr "" +#~ "Coquelicot için yeni bir yükleme parolası ayarlayın. Şu anki parolayı " +#~ "korumak için bu alanı boş bırakın." + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "En Fazla Dosya Boyutu (MiB olarak)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "Coquelicot'a yüklenebilecek dosyaların en fazla boyutunu ayarlayın." + +#~ msgid "coquelicot" +#~ msgstr "coquelicot" + +#~ msgid "Upload password updated" +#~ msgstr "Yükleme parolası güncellendi" + +#~ msgid "Failed to update upload password" +#~ msgstr "Yükleme parolasını güncelleme başarısız oldu" + +#~ msgid "Maximum file size updated" +#~ msgstr "En fazla dosya boyutu güncellendi" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "En fazla dosya boyutu güncelleme başarısız oldu" + +#~ msgid "Riot" +#~ msgstr "Riot" + +#, fuzzy +#~| msgid "Security" +#~ msgid "Security Notice" +#~ msgstr "Güvenlik" + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Yedeklemeler" + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "Etkinleştir" #~ msgid "Restoring" #~ msgstr "Geri yükleniyor" @@ -7869,9 +8060,6 @@ msgstr "" #~ msgid "Manage" #~ msgstr "Yönet" -#~ msgid "Create" -#~ msgstr "Oluştur" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "{box_name} kutunuzun Danube sürümü ile aldığınız fiş" @@ -8275,11 +8463,6 @@ msgstr "" #~ msgid "Restore apps" #~ msgstr "reStore" -#, fuzzy -#~| msgid "Create User" -#~ msgid "Backup archives" -#~ msgstr "Kullanıcı Oluştur" - #~ msgid "Software Upgrades" #~ msgstr "Yazılım Güncellemeleri" @@ -8427,9 +8610,6 @@ msgstr "" #~ msgid "BitTorrent" #~ msgstr "BitTorrent" -#~ msgid "admin" -#~ msgstr "admin (yönetici)" - #~ msgid "wiki" #~ msgstr "wiki" diff --git a/plinth/locale/uk/LC_MESSAGES/django.po b/plinth/locale/uk/LC_MESSAGES/django.po index 4ad99d9ae..0669a17f7 100644 --- a/plinth/locale/uk/LC_MESSAGES/django.po +++ b/plinth/locale/uk/LC_MESSAGES/django.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" "PO-Revision-Date: 2019-01-04 17:06+0000\n" "Last-Translator: prolinux ukraine \n" "Language-Team: Ukrainian user with a {box_name} login." msgstr "" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 msgid "Chat Server" msgstr "" @@ -1441,11 +1583,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1457,11 +1599,11 @@ msgid "" "Configure page." msgstr "" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1511,12 +1653,14 @@ msgstr "" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "" @@ -1624,60 +1768,68 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Repository not found" msgid "Invalid repository URL." msgstr "Сховище не знайдено" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 #, fuzzy #| msgid "Repository not found" msgid "Invalid repository name." msgstr "Сховище не знайдено" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 msgid "Name of a new repository or URL to import an existing repository." msgstr "" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 msgid "Description of the repository" msgstr "" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository not found" msgid "Repository's owner name" msgstr "Сховище не знайдено" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 #, fuzzy #| msgid "Remove Repository" msgid "Private repository" msgstr "Видалити сховище" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 msgid "A repository with this name already exists." msgstr "" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 #, fuzzy #| msgid "Remove Repository" msgid "Name of the repository" msgstr "Видалити сховище" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +msgid "Default branch" +msgstr "" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1753,11 +1905,6 @@ msgstr "Сховище не знайдено" msgid "Edit repository" msgstr "Видалити сховище" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1768,33 +1915,33 @@ msgstr "" msgid "Could not delete {name}: {error}" msgstr "" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +msgctxt "User guide" msgid "Manual" msgstr "" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" msgstr "" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" msgstr "" @@ -1855,18 +2002,6 @@ msgstr "" msgid "%(box_name)s is up to date." msgstr "" -#: plinth/modules/help/templates/help_about.html:79 -msgid "Security Notice" -msgstr "" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2011,16 +2146,16 @@ msgid "" "before submitting the bug report." msgstr "" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "" @@ -2045,21 +2180,21 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "Влючити застосунок" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 msgid "Anonymity Network" msgstr "" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 msgid "I2P Proxy" msgstr "" @@ -2210,11 +2345,11 @@ msgid "" "enter your {box_name}'s domain name." msgstr "" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 msgid "Gobby Server" msgstr "" @@ -2326,16 +2461,6 @@ msgstr "" msgid "Re-obtain" msgstr "" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "" @@ -2385,7 +2510,7 @@ msgstr "" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2395,14 +2520,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 msgid "Matrix Synapse" msgstr "" @@ -2418,7 +2543,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2471,11 +2596,11 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 msgid "Public registration enabled" msgstr "" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 msgid "Public registration disabled" msgstr "" @@ -2584,12 +2709,12 @@ msgid "" "downloads/\">Minetest client is needed." msgstr "" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 msgid "Block Sandbox" msgstr "" @@ -2630,7 +2755,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "" @@ -2639,19 +2764,19 @@ msgstr "" msgid "Port" msgstr "" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "" @@ -2918,11 +3043,11 @@ msgid "" "desktop and Android devices are available." msgstr "" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 msgid "Voice Chat" msgstr "" @@ -2950,7 +3075,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 msgid "SuperUser password successfully updated." msgstr "" @@ -2975,6 +3100,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service Discovery" +msgid "Services" +msgstr "Виявлення служб" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -2987,56 +3118,56 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 msgid "Network Interface" msgstr "" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3044,185 +3175,190 @@ msgid "" "router, configure clients on this network and share its Internet connection." msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +msgctxt "Not automatically" +msgid "Manual" +msgstr "" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." msgstr "" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " "one provided. Example: 00:11:22:aa:bb:cc." msgstr "" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, python-brace-format msgid "Specify how your {box_name} is connected to your network" msgstr "" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3230,7 +3366,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3239,7 +3375,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3247,11 +3383,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3262,7 +3398,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3286,19 +3422,19 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "General Configuration" msgid "Preferred router configuration" msgstr "Загальні налаштування" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3506,7 +3642,7 @@ msgid "Create Connection" msgstr "" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "" @@ -3551,7 +3687,7 @@ msgid "Computer" msgstr "" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "" @@ -3563,13 +3699,13 @@ msgstr "З’єднання відхилено" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "" @@ -3610,6 +3746,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -3746,71 +3883,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "" @@ -3825,16 +3962,16 @@ msgid "" "security and anonymity." msgstr "" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 msgid "OpenVPN" msgstr "" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 msgid "Virtual Private Network" msgstr "" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -3890,11 +4027,11 @@ msgstr "" msgid "Download my profile" msgstr "" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "" @@ -4089,6 +4226,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 #, fuzzy #| msgid "System Configuration" @@ -4176,7 +4326,7 @@ msgstr "" msgid "Web Proxy" msgstr "" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "" @@ -4200,11 +4350,11 @@ msgid "" "\">mobile devices are available." msgstr "" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 msgid "IRC Client" msgstr "" @@ -4212,7 +4362,7 @@ msgstr "" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, python-brace-format msgid "" "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4222,19 +4372,19 @@ msgid "" "{box_name} login." msgstr "" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 msgid "Calendar and Addressbook" msgstr "" @@ -4256,6 +4406,10 @@ msgid "" "addressbook." msgstr "" +#: plinth/modules/radicale/forms.py:30 +msgid "Access rights" +msgstr "" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4460,33 +4614,33 @@ msgstr "" msgid "Action" msgstr "Шифрування" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 msgid "Open Share" msgstr "" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 msgid "Group Share" msgstr "" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 msgid "Home Share" msgstr "" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 msgid "Share enabled." msgstr "" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "Помилка при встановлені застосунку: {error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 msgid "Share disabled." msgstr "" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -4524,10 +4678,6 @@ msgstr "" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 msgid "Moderate" msgstr "" @@ -4544,11 +4694,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "" @@ -4576,8 +4721,33 @@ msgstr "" msgid "Show security report" msgstr "" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 msgid "Security Report" msgstr "" @@ -4646,12 +4816,12 @@ msgstr "" msgid "Not running" msgstr "" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "" @@ -4920,8 +5090,8 @@ msgstr "" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5036,7 +5206,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "" @@ -5077,7 +5247,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -5093,103 +5263,103 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 msgid "Storage" msgstr "" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, python-brace-format msgid "{disk_size:.1f} bytes" msgstr "" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, python-brace-format msgid "{disk_size:.1f} KiB" msgstr "" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, python-brace-format msgid "{disk_size:.1f} MiB" msgstr "" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, python-brace-format msgid "{disk_size:.1f} GiB" msgstr "" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, python-brace-format msgid "{disk_size:.1f} TiB" msgstr "" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 msgid "The device is already unmounting." msgstr "" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 msgid "The device is already mounted." msgstr "" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 msgid "The device is not mounted." msgstr "" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5350,11 +5520,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -5393,7 +5563,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -5402,40 +5572,40 @@ msgid "" "\">Tor Browser." msgstr "" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 msgid "Tor Onion Service" msgstr "" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "" @@ -5561,7 +5731,7 @@ msgstr "" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "" @@ -5612,11 +5782,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -5624,11 +5794,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -5642,6 +5812,23 @@ msgstr "" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, python-format msgid "%(box_name)s Updated" @@ -5659,50 +5846,73 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 -msgid "Manual update" +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 +msgid "Manual Update" +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 msgid "Update now" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 msgid "" "This may take a long time to complete. During an update, " "you cannot install apps. Also, this web interface may be temporarily " "unavailable and show an error. In that case, refresh the page to continue." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -5726,7 +5936,7 @@ msgstr "" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "" @@ -5741,16 +5951,12 @@ msgstr "" msgid "Enter a valid username." msgstr "Сховище не знайдено" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -msgid "Permissions" -msgstr "" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 msgid "" "Select which services should be available to the new user. The user will be " "able to log in to services that support single sign-on through LDAP, if they " @@ -5759,63 +5965,63 @@ msgid "" "SSH and have administrative privileges (sudo)." msgstr "" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " "line. Blank lines and lines starting with # will be ignored." msgstr "" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 msgid "Failed to change user status." msgstr "" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "" @@ -5942,7 +6148,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6066,7 +6272,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6093,7 +6299,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Connection refused" msgid "Add Connection to Server" @@ -6191,75 +6397,75 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 msgid "Client with public key already exists" msgstr "" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 msgid "Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "Оновити налаштування" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 msgid "Modify Client" msgstr "" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 msgid "Delete Allowed Client" msgstr "" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "Archive deleted." msgid "Client deleted." msgstr "Архів видалено." -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 #, fuzzy #| msgid "Repository not found" msgid "Client not found" msgstr "Сховище не знайдено" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added new repository." msgid "Added new server." msgstr "Додано нове сховище." -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection refused" msgid "Connection to Server" msgstr "З’єднання відхилено" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "Оновити налаштування" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Error installing application: {error}" msgid "Modify Connection to Server" msgstr "Помилка при встановлені застосунку: {error}" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Error installing application: {error}" msgid "Delete Connection to Server" msgstr "Помилка при встановлені застосунку: {error}" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "Archive deleted." msgid "Server deleted." @@ -6273,23 +6479,23 @@ msgstr "" msgid "Generic" msgstr "" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "" @@ -6531,12 +6737,40 @@ msgstr "" msgid "Port Forwarding" msgstr "" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +msgid "Protocol" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, python-format +msgid "To %(box_name)s Ports" msgstr "" #: plinth/templates/setup.html:24 @@ -6583,6 +6817,26 @@ msgstr "" msgid "Gujarati" msgstr "" +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "Максимальний розмір файлу (в Мб)" + +#~ msgid "" +#~ "Set the maximum size of the files that can be uploaded to Coquelicot." +#~ msgstr "" +#~ "Встановити максимальний розмір файлів, які можуть бути завантажені до " +#~ "Coquelicot." + +#~ msgid "Maximum file size updated" +#~ msgstr "Максимальний розмір файлу оновлено" + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "Резервні копії" + #, fuzzy #~| msgid "Restore" #~ msgid "Restoring" @@ -6612,8 +6866,5 @@ msgstr "" #~ msgid "Module: %(module_name)s" #~ msgstr "Модуль: %(module_name)s" -#~ msgid "Create" -#~ msgstr "Створити" - #~ msgid "Currently only limited functionality is available." #~ msgstr "На даний час доступний лише обмежений функціонал." diff --git a/plinth/locale/zh_Hans/LC_MESSAGES/django.po b/plinth/locale/zh_Hans/LC_MESSAGES/django.po index f0aa38e34..715fc4bda 100644 --- a/plinth/locale/zh_Hans/LC_MESSAGES/django.po +++ b/plinth/locale/zh_Hans/LC_MESSAGES/django.po @@ -7,23 +7,23 @@ msgid "" msgstr "" "Project-Id-Version: Plinth\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2020-06-29 15:43-0700\n" -"PO-Revision-Date: 2019-09-13 05:23+0000\n" -"Last-Translator: Anxin YI <2732146152@qq.com>\n" +"POT-Creation-Date: 2020-09-15 16:55-0400\n" +"PO-Revision-Date: 2020-07-13 22:29+0000\n" +"Last-Translator: Tang Zongxun \n" "Language-Team: Chinese (Simplified) \n" +"freedombox/freedombox/zh_Hans/>\n" "Language: zh_Hans\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 3.9-dev\n" +"X-Generator: Weblate 4.2-dev\n" #: doc/dev/_templates/layout.html:11 msgid "Page source" msgstr "" -#: plinth/context_processors.py:23 plinth/views.py:77 +#: plinth/context_processors.py:23 plinth/views.py:78 msgid "FreedomBox" msgstr "FreedomBox" @@ -133,11 +133,11 @@ msgstr "服务发现" msgid "Local Network Domain" msgstr "本地网络领域" -#: plinth/modules/backups/__init__.py:28 +#: plinth/modules/backups/__init__.py:30 msgid "Backups allows creating and managing backup archives." msgstr "备份允许创建和管理备份存档。" -#: plinth/modules/backups/__init__.py:47 +#: plinth/modules/backups/__init__.py:49 msgid "Backups" msgstr "备份" @@ -146,6 +146,12 @@ msgstr "备份" msgid "{app} (No data to backup)" msgstr "{app} (没有要备份的数据)" +#: plinth/modules/backups/forms.py:50 +#, fuzzy +#| msgid "Create User" +msgid "Repository" +msgstr "创建用户" + #: plinth/modules/backups/forms.py:52 #: plinth/modules/backups/templates/backups_delete.html:18 #: plinth/modules/ikiwiki/forms.py:15 @@ -213,7 +219,17 @@ msgid "" "backup." msgstr "\"存储库中的密钥\"表示受密码保护的密钥与备份一起存储。" -#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:264 +#: plinth/modules/backups/forms.py:122 +#, fuzzy +#| msgid "Create User" +msgid "Key in Repository" +msgstr "创建用户" + +#: plinth/modules/backups/forms.py:122 plinth/modules/searx/forms.py:15 +msgid "None" +msgstr "" + +#: plinth/modules/backups/forms.py:124 plinth/modules/networks/forms.py:267 msgid "Passphrase" msgstr "密码" @@ -386,6 +402,7 @@ msgid "Delete Archive %(name)s" msgstr "删除名为 %(name)s 的存档" #: plinth/modules/backups/templates/backups_form.html:20 +#: plinth/modules/bepasty/templates/bepasty_add.html:20 #: plinth/modules/gitweb/templates/gitweb_create_edit.html:20 #: plinth/modules/networks/templates/internet_connectivity_type.html:18 #: plinth/modules/networks/templates/network_topology_update.html:18 @@ -418,10 +435,8 @@ msgid "Remove Backup Location. This will not delete the remote backup." msgstr "" #: plinth/modules/backups/templates/backups_repository.html:77 -#, fuzzy -#| msgid "downloading" msgid "Download" -msgstr "下载中" +msgstr "下载" #: plinth/modules/backups/templates/backups_repository.html:81 #: plinth/modules/backups/templates/backups_restore.html:27 @@ -628,6 +643,184 @@ msgstr "卸载失败!" msgid "Mounting failed" msgstr "安装失败" +#: plinth/modules/bepasty/__init__.py:25 +msgid "" +"bepasty is a web application that allows large files to be uploaded and " +"shared. Text and code snippets can also be pasted and shared. Text, image, " +"audio, video and PDF documents can be previewed in the browser. Shared files " +"can be set to expire after a time period." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:29 +msgid "" +"bepasty does not use usernames for login. It only uses passwords. For each " +"password, a set of permissions can be selected. Once you have created a " +"password, you can share it with the users who should have the associated " +"permissions." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:33 +msgid "" +"You can also create multiple passwords with the same set of privileges, and " +"distribute them to different people or groups. This will allow you to later " +"revoke access for a single person or group, by removing their password from " +"the list." +msgstr "" + +#: plinth/modules/bepasty/__init__.py:42 plinth/modules/bepasty/__init__.py:51 +msgid "Read a file, if a web link to the file is available" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:43 +#, fuzzy +#| msgid "Restore from uploaded file" +msgid "Create or upload files" +msgstr "从已上传的文件中恢复" + +#: plinth/modules/bepasty/__init__.py:44 +msgid "List all files and their web links" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:45 +#, fuzzy +#| msgid "Delete User" +msgid "Delete files" +msgstr "删除用户" + +#: plinth/modules/bepasty/__init__.py:46 +msgid "Administer files: lock/unlock files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:50 +msgid "None, password is always required" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:52 +msgid "List and read all files" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:65 plinth/modules/bepasty/manifest.py:9 +msgid "bepasty" +msgstr "" + +#: plinth/modules/bepasty/__init__.py:67 +#, fuzzy +#| msgid "File Sharing" +msgid "File & Snippet Sharing" +msgstr "文件分享" + +#: plinth/modules/bepasty/forms.py:17 +msgid "Public Access (default permissions)" +msgstr "" + +#: plinth/modules/bepasty/forms.py:18 +msgid "Permissions for anonymous users, who have not provided a password." +msgstr "" + +#: plinth/modules/bepasty/forms.py:27 +#: plinth/modules/bepasty/templates/bepasty.html:30 +#: plinth/modules/users/forms.py:84 plinth/modules/users/forms.py:198 +#, fuzzy +#| msgid "Transmission BitTorrent" +msgid "Permissions" +msgstr "Transmission BitTorrent" + +#: plinth/modules/bepasty/forms.py:29 +msgid "" +"Users that log in with this password will have the selected permissions." +msgstr "" + +#: plinth/modules/bepasty/forms.py:33 +#: plinth/modules/bepasty/templates/bepasty.html:31 +msgid "Comment" +msgstr "" + +#: plinth/modules/bepasty/forms.py:34 +msgid "Any comment to help you remember the purpose of this password." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:12 +#, fuzzy +#| msgid "Change Password" +msgid "Manage Passwords" +msgstr "更改密码" + +#: plinth/modules/bepasty/templates/bepasty.html:16 +#: plinth/modules/bepasty/templates/bepasty.html:18 +#, fuzzy +#| msgid "Show password" +msgid "Add password" +msgstr "显示密码" + +#: plinth/modules/bepasty/templates/bepasty.html:23 +msgid "No passwords currently configured." +msgstr "" + +#: plinth/modules/bepasty/templates/bepasty.html:29 +#: plinth/modules/dynamicdns/forms.py:106 plinth/modules/networks/forms.py:205 +#: plinth/modules/shadowsocks/forms.py:44 +msgid "Password" +msgstr "密码" + +#: plinth/modules/bepasty/views.py:42 +msgid "Read" +msgstr "" + +#: plinth/modules/bepasty/views.py:43 +msgid "Create" +msgstr "创建" + +#: plinth/modules/bepasty/views.py:44 +msgid "List" +msgstr "" + +#: plinth/modules/bepasty/views.py:45 +#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 +#: plinth/modules/networks/templates/connection_show.html:48 +#: plinth/modules/samba/templates/samba.html:127 +#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 +#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 +#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 +#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 +msgid "Delete" +msgstr "删除" + +#: plinth/modules/bepasty/views.py:46 +#, fuzzy +#| msgid "admin" +msgid "Admin" +msgstr "管理员" + +#: plinth/modules/bepasty/views.py:83 plinth/modules/searx/views.py:38 +#: plinth/modules/searx/views.py:49 plinth/modules/tor/views.py:130 +#: plinth/modules/tor/views.py:157 +msgid "Configuration updated." +msgstr "配置已更新。" + +#: plinth/modules/bepasty/views.py:86 plinth/modules/gitweb/views.py:117 +#: plinth/modules/searx/views.py:41 plinth/modules/searx/views.py:52 +#: plinth/modules/tor/views.py:159 +msgid "An error occurred during configuration." +msgstr "在配置过程中出错。" + +#: plinth/modules/bepasty/views.py:97 +#, fuzzy +#| msgid "Password" +msgid "Password added." +msgstr "密码" + +#: plinth/modules/bepasty/views.py:102 +#, fuzzy +#| msgid "Password" +msgid "Add Password" +msgstr "密码" + +#: plinth/modules/bepasty/views.py:119 +#, fuzzy +#| msgid "Password" +msgid "Password deleted." +msgstr "密码" + #: plinth/modules/bind/__init__.py:29 msgid "" "BIND enables you to publish your Domain Name System (DNS) information on the " @@ -646,11 +839,11 @@ msgstr "" "目前,在 {box_name} 上,BIND 只用于解决本地网络其它机器的 DNS 查询。它也不适" "用于从 {box_name} 分享来的互联网连接。" -#: plinth/modules/bind/__init__.py:82 +#: plinth/modules/bind/__init__.py:77 msgid "BIND" msgstr "结合" -#: plinth/modules/bind/__init__.py:83 +#: plinth/modules/bind/__init__.py:78 msgid "Domain Name Server" msgstr "域名服务器" @@ -679,6 +872,7 @@ msgstr "服务器域" #: plinth/modules/bind/templates/bind.html:16 #: plinth/modules/ikiwiki/forms.py:12 +#: plinth/modules/names/templates/names.html:14 #: plinth/modules/networks/templates/connection_show.html:83 #: plinth/modules/storage/templates/storage.html:28 msgid "Type" @@ -707,9 +901,9 @@ msgstr "IP 地址" msgid "Refresh IP address and domains" msgstr "" -#: plinth/modules/bind/views.py:72 plinth/modules/coturn/views.py:40 +#: plinth/modules/bind/views.py:71 plinth/modules/coturn/views.py:39 #: plinth/modules/deluge/views.py:42 plinth/modules/dynamicdns/views.py:150 -#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:30 +#: plinth/modules/pagekite/forms.py:90 plinth/modules/quassel/views.py:29 #: plinth/modules/shadowsocks/views.py:59 #: plinth/modules/transmission/views.py:47 msgid "Configuration updated" @@ -793,12 +987,13 @@ msgid "Configure" msgstr "配置" #: plinth/modules/config/__init__.py:61 plinth/modules/config/forms.py:61 -#: plinth/modules/dynamicdns/forms.py:95 +#: plinth/modules/dynamicdns/forms.py:97 +#: plinth/modules/names/templates/names.html:15 msgid "Domain Name" msgstr "域名" #: plinth/modules/config/forms.py:27 plinth/modules/config/forms.py:73 -#: plinth/modules/dynamicdns/forms.py:98 +#: plinth/modules/dynamicdns/forms.py:100 msgid "Invalid domain name" msgstr "无效的域名" @@ -867,7 +1062,7 @@ msgstr "" msgid "Show advanced apps and features" msgstr "展示先进的应用和特点" -#: plinth/modules/config/forms.py:92 +#: plinth/modules/config/forms.py:93 msgid "Show apps and features that require more technical knowledge." msgstr "展示需要更多专业知识的应用和特点。" @@ -911,74 +1106,6 @@ msgstr "展现先进的应用和特征" msgid "Hiding advanced apps and features" msgstr "隐藏先进的应用和特征" -#: plinth/modules/coquelicot/__init__.py:24 -#, fuzzy -#| msgid "" -#| "Coquelicot is a “one-click” file sharing web application with a focus on " -#| "protecting users’ privacy. It is best used for quickly sharing a single " -#| "file. " -msgid "" -"Coquelicot is a \"one-click\" file sharing web application with a focus on " -"protecting users' privacy. It is best used for quickly sharing a single " -"file. " -msgstr "" -"Coquelicot 是一个“即点即用”的文件分享应用,注重保护用户隐私。适宜快速分享单个" -"文件。 " - -#: plinth/modules/coquelicot/__init__.py:27 -msgid "" -"This Coquelicot instance is exposed to the public but requires an upload " -"password to prevent unauthorized access. You can set a new upload password " -"in the form that will appear below after installation. The default upload " -"password is \"test\"." -msgstr "" - -#: plinth/modules/coquelicot/__init__.py:45 -msgid "Coquelicot" -msgstr "Coquelicot" - -#: plinth/modules/coquelicot/__init__.py:47 -msgid "File Sharing" -msgstr "文件分享" - -#: plinth/modules/coquelicot/forms.py:13 -msgid "Upload Password" -msgstr "保存密码" - -#: plinth/modules/coquelicot/forms.py:14 -msgid "" -"Set a new upload password for Coquelicot. Leave this field blank to keep the " -"current password." -msgstr "" - -#: plinth/modules/coquelicot/forms.py:18 -msgid "Maximum File Size (in MiB)" -msgstr "最大的文件容量(以MiB计算)" - -#: plinth/modules/coquelicot/forms.py:19 -msgid "Set the maximum size of the files that can be uploaded to Coquelicot." -msgstr "" - -#: plinth/modules/coquelicot/manifest.py:9 -msgid "coquelicot" -msgstr "" - -#: plinth/modules/coquelicot/views.py:36 -msgid "Upload password updated" -msgstr "上传密码已更新" - -#: plinth/modules/coquelicot/views.py:39 -msgid "Failed to update upload password" -msgstr "更新上传的密码失败" - -#: plinth/modules/coquelicot/views.py:47 -msgid "Maximum file size updated" -msgstr "最大玩家配置已更新" - -#: plinth/modules/coquelicot/views.py:50 -msgid "Failed to update maximum file size" -msgstr "更新最大文件容量失败" - #: plinth/modules/coturn/__init__.py:31 msgid "" "Coturn is a server to facilitate audio/video calls and conferences by " @@ -993,11 +1120,11 @@ msgid "" "need to be configured with the details provided here." msgstr "" -#: plinth/modules/coturn/__init__.py:64 +#: plinth/modules/coturn/__init__.py:52 msgid "Coturn" msgstr "" -#: plinth/modules/coturn/__init__.py:65 +#: plinth/modules/coturn/__init__.py:53 msgid "VoIP Helper" msgstr "" @@ -1033,7 +1160,7 @@ msgstr "网络时间服务是与 Internet 上的服务器同步系统时间的 msgid "Date & Time" msgstr "日期与时间" -#: plinth/modules/datetime/__init__.py:120 +#: plinth/modules/datetime/__init__.py:111 msgid "Time synchronized to NTP server" msgstr "" @@ -1102,17 +1229,31 @@ msgstr "下载目录" msgid "Bittorrent client written in Python/PyGTK" msgstr "" -#: plinth/modules/diagnostics/__init__.py:24 +#: plinth/modules/diagnostics/__init__.py:25 msgid "" "The system diagnostic test will run a number of checks on your system to " "confirm that applications and services are working as expected." msgstr "" "系统诊断将运行测试程序检查您的系统以确认应用程序和服务正在按预期方式运行。" -#: plinth/modules/diagnostics/__init__.py:48 +#: plinth/modules/diagnostics/__init__.py:49 msgid "Diagnostics" msgstr "诊断程序" +#: plinth/modules/diagnostics/__init__.py:102 +msgid "passed" +msgstr "" + +#: plinth/modules/diagnostics/__init__.py:103 +#, fuzzy +#| msgid "Setup failed." +msgid "failed" +msgstr "安装失败。" + +#: plinth/modules/diagnostics/__init__.py:104 +msgid "error" +msgstr "" + #: plinth/modules/diagnostics/templates/diagnostics.html:17 #: plinth/modules/diagnostics/templates/diagnostics_button.html:13 #: plinth/modules/diagnostics/templates/diagnostics_button.html:16 @@ -1252,7 +1393,7 @@ msgstr "动态 DNS 客户端" msgid "Dynamic Domain Name" msgstr "域名" -#: plinth/modules/dynamicdns/forms.py:27 +#: plinth/modules/dynamicdns/forms.py:29 msgid "" "The Variables <User>, <Pass>, <Ip>, <Domain> may be " "used within the URL. For details see the update URL templates of the example " @@ -1261,7 +1402,7 @@ msgstr "" "变量 < 用户 > < 传递 > < Ip > < 域 > 可能在 URL 内使" "用。详细信息请参见更新 URL 模板的示例提供程序。" -#: plinth/modules/dynamicdns/forms.py:31 +#: plinth/modules/dynamicdns/forms.py:33 msgid "" "Please choose an update protocol according to your provider. If your " "provider does not support the GnuDIP protocol or your provider is not listed " @@ -1270,7 +1411,7 @@ msgstr "" "请选择您的提供商更新协议。如果您的提供商不支持 GnuDIP 协议或未列出您的提供商" "可能会使用您的提供商的更新 URL。" -#: plinth/modules/dynamicdns/forms.py:36 +#: plinth/modules/dynamicdns/forms.py:38 msgid "" "Please do not enter a URL here (like \"https://example.com/\") but only the " "hostname of the GnuDIP server (like \"example.com\")." @@ -1278,26 +1419,26 @@ msgstr "" "请不要在此输入 URL(如\"https://example.com/\"),只输入 GnuDIP 服务器的主机" "名(例如“example.com”)。" -#: plinth/modules/dynamicdns/forms.py:40 +#: plinth/modules/dynamicdns/forms.py:42 #, python-brace-format msgid "The public domain name you want to use to reach your {box_name}." msgstr "你访问你的 {box_name} 时想使用的公开域名。" -#: plinth/modules/dynamicdns/forms.py:43 +#: plinth/modules/dynamicdns/forms.py:45 msgid "Use this option if your provider uses self signed certificates." msgstr "如果您的提供商使用自签名的证书,请使用此选项。" -#: plinth/modules/dynamicdns/forms.py:46 +#: plinth/modules/dynamicdns/forms.py:48 msgid "" "If this option is selected, your username and password will be used for HTTP " "basic authentication." msgstr "如果选择了此选项,您的用户名和密码将用于 HTTP 基本身份验证。" -#: plinth/modules/dynamicdns/forms.py:49 +#: plinth/modules/dynamicdns/forms.py:51 msgid "Leave this field empty if you want to keep your current password." msgstr "如果你想保持你的当前密码,请将此字段留空。" -#: plinth/modules/dynamicdns/forms.py:52 +#: plinth/modules/dynamicdns/forms.py:54 #, python-brace-format msgid "" "Optional Value. If your {box_name} is not connected directly to the Internet " @@ -1309,68 +1450,74 @@ msgstr "" "此 URL 用于确定真实的IP地址。URL应该简单地返回客户端来自的 IP (例如:http://" "myip.datasystems24.de)。" -#: plinth/modules/dynamicdns/forms.py:60 +#: plinth/modules/dynamicdns/forms.py:62 msgid "The username that was used when the account was created." msgstr "账户创建时使用的用户名" +#: plinth/modules/dynamicdns/forms.py:65 +msgid "GnuDIP" +msgstr "" + #: plinth/modules/dynamicdns/forms.py:68 +#, fuzzy +#| msgid "Update URL" +msgid "other update URL" +msgstr "更新 URL" + +#: plinth/modules/dynamicdns/forms.py:70 msgid "Enable Dynamic DNS" msgstr "启用动态 DNS" -#: plinth/modules/dynamicdns/forms.py:71 +#: plinth/modules/dynamicdns/forms.py:73 msgid "Service Type" msgstr "服务类型" -#: plinth/modules/dynamicdns/forms.py:76 +#: plinth/modules/dynamicdns/forms.py:78 msgid "GnuDIP Server Address" msgstr "GnuDIP 服务器地址" -#: plinth/modules/dynamicdns/forms.py:79 +#: plinth/modules/dynamicdns/forms.py:81 msgid "Invalid server name" msgstr "服务器名称无效" -#: plinth/modules/dynamicdns/forms.py:82 +#: plinth/modules/dynamicdns/forms.py:84 msgid "Update URL" msgstr "更新 URL" -#: plinth/modules/dynamicdns/forms.py:87 +#: plinth/modules/dynamicdns/forms.py:89 msgid "Accept all SSL certificates" msgstr "接受所有 SSL 证书" -#: plinth/modules/dynamicdns/forms.py:91 +#: plinth/modules/dynamicdns/forms.py:93 msgid "Use HTTP basic authentication" msgstr "使用 HTTP 基本身份验证" -#: plinth/modules/dynamicdns/forms.py:101 plinth/modules/networks/forms.py:201 +#: plinth/modules/dynamicdns/forms.py:103 plinth/modules/networks/forms.py:204 +#: plinth/modules/users/forms.py:68 msgid "Username" msgstr "用户名" -#: plinth/modules/dynamicdns/forms.py:104 plinth/modules/networks/forms.py:202 -#: plinth/modules/shadowsocks/forms.py:44 -msgid "Password" -msgstr "密码" - -#: plinth/modules/dynamicdns/forms.py:108 plinth/modules/networks/forms.py:204 +#: plinth/modules/dynamicdns/forms.py:110 plinth/modules/networks/forms.py:207 msgid "Show password" msgstr "显示密码" -#: plinth/modules/dynamicdns/forms.py:112 +#: plinth/modules/dynamicdns/forms.py:114 msgid "URL to look up public IP" msgstr "查寻公开 IP 的 URL" -#: plinth/modules/dynamicdns/forms.py:136 +#: plinth/modules/dynamicdns/forms.py:138 msgid "Please provide an update URL or a GnuDIP server address" msgstr "请提供一个更新 URL 或者 GnuDIP 服务器地址" -#: plinth/modules/dynamicdns/forms.py:141 +#: plinth/modules/dynamicdns/forms.py:143 msgid "Please provide a GnuDIP username" msgstr "请提供一个 GnuDIP 用户名" -#: plinth/modules/dynamicdns/forms.py:145 +#: plinth/modules/dynamicdns/forms.py:147 msgid "Please provide a GnuDIP domain name" msgstr "请提供一个 GnuDIP 域名" -#: plinth/modules/dynamicdns/forms.py:150 +#: plinth/modules/dynamicdns/forms.py:152 msgid "Please provide a password" msgstr "请提供一个密码" @@ -1435,7 +1582,7 @@ msgstr "" msgid "Last update" msgstr "最后一次更新" -#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:51 +#: plinth/modules/dynamicdns/views.py:26 plinth/modules/help/__init__.py:53 #: plinth/templates/help-menu.html:46 plinth/templates/help-menu.html:47 msgid "About" msgstr "关于" @@ -1485,12 +1632,12 @@ msgstr "" "要实际沟通,您可以使用 web 客户端或任何其他 XMPP 客户端。" -#: plinth/modules/ejabberd/__init__.py:69 +#: plinth/modules/ejabberd/__init__.py:63 msgid "ejabberd" msgstr "" -#: plinth/modules/ejabberd/__init__.py:70 -#: plinth/modules/matrixsynapse/__init__.py:68 +#: plinth/modules/ejabberd/__init__.py:64 +#: plinth/modules/matrixsynapse/__init__.py:69 #, fuzzy #| msgid "Web Server" msgid "Chat Server" @@ -1543,11 +1690,11 @@ msgid "" "your own server for extra security." msgstr "" -#: plinth/modules/ejabberd/manifest.py:74 +#: plinth/modules/ejabberd/manifest.py:73 msgid "Dino" msgstr "" -#: plinth/modules/ejabberd/manifest.py:86 +#: plinth/modules/ejabberd/manifest.py:85 msgid "Gajim" msgstr "" @@ -1562,11 +1709,11 @@ msgstr "" "%(domainname)s。你可以在系统的配置中设置你" "的域名。" -#: plinth/modules/ejabberd/views.py:45 +#: plinth/modules/ejabberd/views.py:44 msgid "Message Archive Management enabled" msgstr "" -#: plinth/modules/ejabberd/views.py:49 +#: plinth/modules/ejabberd/views.py:48 msgid "Message Archive Management disabled" msgstr "" @@ -1623,12 +1770,14 @@ msgstr "服务/端口" #: plinth/modules/firewall/templates/firewall.html:48 #: plinth/modules/letsencrypt/templates/letsencrypt.html:74 +#: plinth/modules/snapshot/forms.py:23 plinth/modules/snapshot/forms.py:28 msgid "Enabled" msgstr "启用" #: plinth/modules/firewall/templates/firewall.html:51 #: plinth/modules/letsencrypt/templates/letsencrypt.html:76 -#: plinth/modules/networks/forms.py:47 plinth/templates/cards.html:34 +#: plinth/modules/networks/forms.py:49 plinth/modules/snapshot/forms.py:23 +#: plinth/modules/snapshot/forms.py:29 plinth/templates/cards.html:34 msgid "Disabled" msgstr "已禁用" @@ -1740,67 +1889,77 @@ msgstr "" msgid "Simple Git Hosting" msgstr "" -#: plinth/modules/gitweb/forms.py:44 +#: plinth/modules/gitweb/forms.py:59 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository URL." msgstr "无效的主机名" -#: plinth/modules/gitweb/forms.py:54 +#: plinth/modules/gitweb/forms.py:69 #, fuzzy #| msgid "Invalid hostname" msgid "Invalid repository name." msgstr "无效的主机名" -#: plinth/modules/gitweb/forms.py:62 +#: plinth/modules/gitweb/forms.py:77 #, fuzzy #| msgid "" #| "Repository path is neither empty nor is an existing backups repository." msgid "Name of a new repository or URL to import an existing repository." msgstr "存储库的路径为空或已有备份。" -#: plinth/modules/gitweb/forms.py:68 +#: plinth/modules/gitweb/forms.py:83 #, fuzzy #| msgid "Create new repository" msgid "Description of the repository" msgstr "创建新存储库" -#: plinth/modules/gitweb/forms.py:69 plinth/modules/gitweb/forms.py:73 +#: plinth/modules/gitweb/forms.py:84 plinth/modules/gitweb/forms.py:88 msgid "Optional, for displaying on Gitweb." msgstr "" -#: plinth/modules/gitweb/forms.py:71 +#: plinth/modules/gitweb/forms.py:86 #, fuzzy #| msgid "Repository removed." msgid "Repository's owner name" msgstr "储存库被移除。" -#: plinth/modules/gitweb/forms.py:76 +#: plinth/modules/gitweb/forms.py:91 #, fuzzy #| msgid "Create User" msgid "Private repository" msgstr "创建用户" -#: plinth/modules/gitweb/forms.py:77 +#: plinth/modules/gitweb/forms.py:92 msgid "Allow only authorized users to access this repository." msgstr "" -#: plinth/modules/gitweb/forms.py:98 plinth/modules/gitweb/forms.py:130 +#: plinth/modules/gitweb/forms.py:113 plinth/modules/gitweb/forms.py:155 #, fuzzy #| msgid "This service already exists" msgid "A repository with this name already exists." msgstr "此服务已存在" -#: plinth/modules/gitweb/forms.py:111 +#: plinth/modules/gitweb/forms.py:126 #, fuzzy #| msgid "Create new repository" msgid "Name of the repository" msgstr "创建新存储库" -#: plinth/modules/gitweb/forms.py:115 +#: plinth/modules/gitweb/forms.py:130 msgid "An alpha-numeric string that uniquely identifies a repository." msgstr "" +#: plinth/modules/gitweb/forms.py:134 +#, fuzzy +#| msgid "Default" +msgid "Default branch" +msgstr "默认" + +#: plinth/modules/gitweb/forms.py:135 +msgid "Gitweb displays this as a default branch." +msgstr "" + #: plinth/modules/gitweb/manifest.py:21 msgid "Git" msgstr "" @@ -1882,11 +2041,6 @@ msgstr "储存库被移除。" msgid "Edit repository" msgstr "创建用户" -#: plinth/modules/gitweb/views.py:117 plinth/modules/searx/views.py:41 -#: plinth/modules/searx/views.py:52 plinth/modules/tor/views.py:159 -msgid "An error occurred during configuration." -msgstr "在配置过程中出错。" - #: plinth/modules/gitweb/views.py:138 #, python-brace-format msgid "{name} deleted." @@ -1897,36 +2051,38 @@ msgstr "{name} 已删除。" msgid "Could not delete {name}: {error}" msgstr "不能删除 {name}:{error}" -#: plinth/modules/help/__init__.py:32 +#: plinth/modules/help/__init__.py:33 msgid "Documentation" msgstr "文档" -#: plinth/modules/help/__init__.py:35 plinth/modules/networks/forms.py:47 -#: plinth/modules/networks/forms.py:77 plinth/templates/help-menu.html:20 +#: plinth/modules/help/__init__.py:37 plinth/templates/help-menu.html:20 #: plinth/templates/help-menu.html:21 plinth/templates/index.html:128 +#, fuzzy +#| msgid "Manual" +msgctxt "User guide" msgid "Manual" msgstr "手册" -#: plinth/modules/help/__init__.py:39 +#: plinth/modules/help/__init__.py:41 #: plinth/modules/help/templates/help_support.html:9 -#: plinth/modules/help/views.py:43 plinth/templates/help-menu.html:27 +#: plinth/modules/help/views.py:42 plinth/templates/help-menu.html:27 #: plinth/templates/help-menu.html:28 msgid "Get Support" -msgstr "" +msgstr "获取帮助" -#: plinth/modules/help/__init__.py:43 +#: plinth/modules/help/__init__.py:45 #: plinth/modules/help/templates/help_feedback.html:9 -#: plinth/modules/help/views.py:37 plinth/templates/help-menu.html:33 +#: plinth/modules/help/views.py:36 plinth/templates/help-menu.html:33 #: plinth/templates/help-menu.html:34 msgid "Submit Feedback" msgstr "" -#: plinth/modules/help/__init__.py:47 +#: plinth/modules/help/__init__.py:49 #: plinth/modules/help/templates/help_contribute.html:9 -#: plinth/modules/help/views.py:31 plinth/templates/help-menu.html:39 +#: plinth/modules/help/views.py:30 plinth/templates/help-menu.html:39 #: plinth/templates/help-menu.html:40 msgid "Contribute" -msgstr "" +msgstr "贡献" #: plinth/modules/help/templates/help_about.html:17 #, python-format @@ -2000,20 +2156,6 @@ msgstr "有新版本可用" msgid "%(box_name)s is up to date." msgstr "%(box_name)s 安装程序" -#: plinth/modules/help/templates/help_about.html:79 -#, fuzzy -#| msgid "Security" -msgid "Security Notice" -msgstr "安全" - -#: plinth/modules/help/templates/help_about.html:81 -msgid "" -"You are using packages from Debian backports. Please note that these " -"packages do not have security support from Debian. However, they are " -"maintained on a best-effort basis by contributors in Debian and FreedomBox " -"community." -msgstr "" - #: plinth/modules/help/templates/help_base.html:21 #: plinth/modules/help/templates/help_index.html:61 #, python-format @@ -2179,16 +2321,16 @@ msgid "" "before submitting the bug report." msgstr "提交日志报告前,请从日志中删除任何密码和其他个人信息。" -#: plinth/modules/help/views.py:25 +#: plinth/modules/help/views.py:24 msgid "Documentation and FAQ" msgstr "文档和 FAQ" -#: plinth/modules/help/views.py:51 +#: plinth/modules/help/views.py:50 #, python-brace-format msgid "About {box_name}" msgstr "关于 {box_name}" -#: plinth/modules/help/views.py:86 +#: plinth/modules/help/views.py:84 #, python-brace-format msgid "{box_name} Manual" msgstr "{box_name} 手册" @@ -2219,23 +2361,23 @@ msgid "" "configuration process." msgstr "" -#: plinth/modules/i2p/__init__.py:62 +#: plinth/modules/i2p/__init__.py:56 #, fuzzy #| msgid "Enable application" msgid "Manage I2P application" msgstr "启用应用程序" -#: plinth/modules/i2p/__init__.py:65 plinth/modules/i2p/manifest.py:16 +#: plinth/modules/i2p/__init__.py:59 plinth/modules/i2p/manifest.py:16 msgid "I2P" msgstr "" -#: plinth/modules/i2p/__init__.py:66 plinth/modules/tor/__init__.py:55 +#: plinth/modules/i2p/__init__.py:60 plinth/modules/tor/__init__.py:56 #, fuzzy #| msgid "Tor Anonymity Network" msgid "Anonymity Network" msgstr "Tor 匿名网络" -#: plinth/modules/i2p/__init__.py:88 +#: plinth/modules/i2p/__init__.py:82 #, fuzzy #| msgid "Privoxy Web Proxy" msgid "I2P Proxy" @@ -2405,11 +2547,11 @@ msgstr "" "要使用它, 下载 Gobby 的桌面客户端并" "安装。然后启动 Gobby 并选择“连接到服务器”并书入你的 {box_name} 域名即可。" -#: plinth/modules/infinoted/__init__.py:47 +#: plinth/modules/infinoted/__init__.py:45 msgid "infinoted" msgstr "" -#: plinth/modules/infinoted/__init__.py:48 +#: plinth/modules/infinoted/__init__.py:46 #, fuzzy #| msgid "Web Server" msgid "Gobby Server" @@ -2553,16 +2695,6 @@ msgstr "没有证书" msgid "Re-obtain" msgstr "重新获取" -#: plinth/modules/letsencrypt/templates/letsencrypt.html:91 -#: plinth/modules/networks/templates/connection_show.html:48 -#: plinth/modules/samba/templates/samba.html:127 -#: plinth/modules/wireguard/templates/wireguard_delete_client.html:24 -#: plinth/modules/wireguard/templates/wireguard_delete_server.html:33 -#: plinth/modules/wireguard/templates/wireguard_show_client.html:73 -#: plinth/modules/wireguard/templates/wireguard_show_server.html:74 -msgid "Delete" -msgstr "删除" - #: plinth/modules/letsencrypt/templates/letsencrypt.html:98 msgid "Revoke" msgstr "撤销" @@ -2618,7 +2750,7 @@ msgstr "成功为域名 {domain} 吊销证书" msgid "Failed to delete certificate for domain {domain}: {error}" msgstr "无法为 {domain} 撤销证书:{error}" -#: plinth/modules/matrixsynapse/__init__.py:34 +#: plinth/modules/matrixsynapse/__init__.py:33 msgid "" "Matrix is an new " "ecosystem for open, federated instant messaging and VoIP. Synapse is a " @@ -2628,14 +2760,14 @@ msgid "" "converse with users on all other Matrix servers via federation." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:41 +#: plinth/modules/matrixsynapse/__init__.py:40 msgid "" "To communicate, you can use the available clients for mobile, desktop and the web. Riot client is recommended." +"element.io/\">Element client is recommended." msgstr "" -#: plinth/modules/matrixsynapse/__init__.py:66 +#: plinth/modules/matrixsynapse/__init__.py:67 #, fuzzy #| msgid "" #| "Chat Server \n" @@ -2659,7 +2791,7 @@ msgid "" msgstr "" #: plinth/modules/matrixsynapse/manifest.py:13 -msgid "Riot" +msgid "Element" msgstr "" #: plinth/modules/matrixsynapse/templates/matrix-synapse-pre-setup.html:15 @@ -2719,13 +2851,13 @@ msgid "" "go to Let's Encrypt to obtain one." msgstr "" -#: plinth/modules/matrixsynapse/views.py:86 +#: plinth/modules/matrixsynapse/views.py:85 #, fuzzy #| msgid "Application enabled" msgid "Public registration enabled" msgstr "应用程序已启用" -#: plinth/modules/matrixsynapse/views.py:91 +#: plinth/modules/matrixsynapse/views.py:90 #, fuzzy #| msgid "Application disabled" msgid "Public registration disabled" @@ -2761,7 +2893,7 @@ msgstr "" #: plinth/modules/mediawiki/__init__.py:55 plinth/templates/index.html:132 msgid "Wiki" -msgstr "" +msgstr "共笔文档" #: plinth/modules/mediawiki/forms.py:25 #, fuzzy @@ -2859,12 +2991,12 @@ msgstr "" "(30000)上运行 Minetest 服务器。要连接到服务器,需要 Minetest 客户端。" -#: plinth/modules/minetest/__init__.py:62 +#: plinth/modules/minetest/__init__.py:60 #: plinth/modules/minetest/manifest.py:10 msgid "Minetest" msgstr "" -#: plinth/modules/minetest/__init__.py:63 +#: plinth/modules/minetest/__init__.py:61 #, fuzzy #| msgid "" #| "Block Sandbox \n" @@ -2928,7 +3060,7 @@ msgid "When disabled, players cannot die or receive damage of any kind." msgstr "禁用时,玩家间不能互相伤害也不能死" #: plinth/modules/minetest/templates/minetest.html:18 -#: plinth/modules/networks/forms.py:49 plinth/modules/networks/forms.py:79 +#: plinth/modules/networks/forms.py:51 plinth/modules/networks/forms.py:82 msgid "Address" msgstr "地址" @@ -2937,19 +3069,19 @@ msgstr "地址" msgid "Port" msgstr "端口" -#: plinth/modules/minetest/views.py:49 +#: plinth/modules/minetest/views.py:48 msgid "Maximum players configuration updated" msgstr "最大玩家配置已更新" -#: plinth/modules/minetest/views.py:56 +#: plinth/modules/minetest/views.py:55 msgid "Creative mode configuration updated" msgstr "创意模式配置已更新" -#: plinth/modules/minetest/views.py:62 +#: plinth/modules/minetest/views.py:61 msgid "PVP configuration updated" msgstr "玩家对战(PVP)配置已更新" -#: plinth/modules/minetest/views.py:68 +#: plinth/modules/minetest/views.py:67 msgid "Damage configuration updated" msgstr "伤害配置已更新" @@ -3241,11 +3373,11 @@ msgstr "" "您可以使用常规端口 64738 连接到您的 Mumble 服务器。您可以从桌面和 Android 设" "备连接 Mumble 客户端。" -#: plinth/modules/mumble/__init__.py:48 plinth/modules/mumble/manifest.py:12 +#: plinth/modules/mumble/__init__.py:43 plinth/modules/mumble/manifest.py:12 msgid "Mumble" msgstr "" -#: plinth/modules/mumble/__init__.py:49 +#: plinth/modules/mumble/__init__.py:44 #, fuzzy #| msgid "" #| "Voice Chat \n" @@ -3279,7 +3411,7 @@ msgstr "" msgid "Mumla" msgstr "" -#: plinth/modules/mumble/views.py:29 +#: plinth/modules/mumble/views.py:27 #, fuzzy #| msgid "Password changed successfully." msgid "SuperUser password successfully updated." @@ -3306,6 +3438,12 @@ msgstr "" msgid "All web apps" msgstr "" +#: plinth/modules/names/templates/names.html:16 +#, fuzzy +#| msgid "Service" +msgid "Services" +msgstr "服务" + #: plinth/modules/networks/__init__.py:40 msgid "" "Configure network devices. Connect to the Internet via Ethernet, Wi-Fi or " @@ -3318,58 +3456,58 @@ msgid "" "configuration here." msgstr "" -#: plinth/modules/networks/__init__.py:64 +#: plinth/modules/networks/__init__.py:60 msgid "Networks" msgstr "网络" -#: plinth/modules/networks/__init__.py:157 +#: plinth/modules/networks/__init__.py:178 #, python-brace-format msgid "Using DNSSEC on IPv{kind}" msgstr "在 IPv{kind} 上使用 DNSSEC" -#: plinth/modules/networks/forms.py:16 +#: plinth/modules/networks/forms.py:17 msgid "Connection Type" msgstr "连接类型" -#: plinth/modules/networks/forms.py:28 +#: plinth/modules/networks/forms.py:29 msgid "Connection Name" msgstr "连接名称" -#: plinth/modules/networks/forms.py:30 +#: plinth/modules/networks/forms.py:31 #, fuzzy #| msgid "Interface" msgid "Network Interface" msgstr "接口" -#: plinth/modules/networks/forms.py:31 +#: plinth/modules/networks/forms.py:32 msgid "The network device that this connection should be bound to." msgstr "连接应绑定到的网络设备。" -#: plinth/modules/networks/forms.py:34 +#: plinth/modules/networks/forms.py:35 msgid "Firewall Zone" msgstr "防火墙区域" -#: plinth/modules/networks/forms.py:35 +#: plinth/modules/networks/forms.py:36 msgid "" "The firewall zone will control which services are available over this " "interfaces. Select Internal only for trusted networks." msgstr "防火墙区域将控制哪些服务可用在此接口。选择内部只有受信任的网络。" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:63 msgid "External" msgstr "外网" -#: plinth/modules/networks/forms.py:38 +#: plinth/modules/networks/forms.py:39 #: plinth/modules/networks/templates/connections_diagram.html:92 msgid "Internal" msgstr "内网" -#: plinth/modules/networks/forms.py:40 +#: plinth/modules/networks/forms.py:41 msgid "IPv4 Addressing Method" msgstr "IPv4 寻址方式" -#: plinth/modules/networks/forms.py:41 +#: plinth/modules/networks/forms.py:42 #, python-brace-format msgid "" "\"Automatic\" method will make {box_name} acquire configuration from this " @@ -3379,39 +3517,46 @@ msgstr "" "“自动”方式可以让 {box_name} 从此网络请求一个配置使其成为一个客户端。“共享”方" "式会让 {box_name} 作为一个路由器,配置此网络上的客户端并共享互联网连接。" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Automatic (DHCP)" msgstr "自动 (DHCP)" -#: plinth/modules/networks/forms.py:46 +#: plinth/modules/networks/forms.py:47 msgid "Shared" msgstr "共享" -#: plinth/modules/networks/forms.py:52 +#: plinth/modules/networks/forms.py:48 plinth/modules/networks/forms.py:79 +#, fuzzy +#| msgid "Manual" +msgctxt "Not automatically" +msgid "Manual" +msgstr "手册" + +#: plinth/modules/networks/forms.py:54 msgid "Netmask" msgstr "子网掩码" -#: plinth/modules/networks/forms.py:53 +#: plinth/modules/networks/forms.py:55 msgid "" "Optional value. If left blank, a default netmask based on the address will " "be used." msgstr "可选的值。如果为空,则将使用基于地址的默认子网掩码。" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 #: plinth/modules/networks/templates/connection_show.html:187 #: plinth/modules/networks/templates/connection_show.html:226 msgid "Gateway" msgstr "网关" -#: plinth/modules/networks/forms.py:57 plinth/modules/networks/forms.py:86 +#: plinth/modules/networks/forms.py:59 plinth/modules/networks/forms.py:89 msgid "Optional value." msgstr "可选的值。" -#: plinth/modules/networks/forms.py:60 plinth/modules/networks/forms.py:89 +#: plinth/modules/networks/forms.py:62 plinth/modules/networks/forms.py:92 msgid "DNS Server" msgstr "DNS 服务器" -#: plinth/modules/networks/forms.py:61 +#: plinth/modules/networks/forms.py:63 msgid "" "Optional value. If this value is given and IPv4 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3419,11 +3564,11 @@ msgstr "" "可选的值。如果给出了此值和 IPv4 寻址方法是\"自动\",将忽略由 DHCP 服务器提供" "的 DNS 服务器。" -#: plinth/modules/networks/forms.py:66 plinth/modules/networks/forms.py:95 +#: plinth/modules/networks/forms.py:68 plinth/modules/networks/forms.py:98 msgid "Second DNS Server" msgstr "备选 DNS 服务器" -#: plinth/modules/networks/forms.py:67 +#: plinth/modules/networks/forms.py:69 msgid "" "Optional value. If this value is given and IPv4 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3431,38 +3576,38 @@ msgstr "" "可选的值。如果给出了此值和 IPv4 寻址方式是\"自动\",将忽略由 DHCP 服务器提供" "的 DNS 服务器。" -#: plinth/modules/networks/forms.py:72 +#: plinth/modules/networks/forms.py:74 msgid "IPv6 Addressing Method" msgstr "IPv6 寻址方式" -#: plinth/modules/networks/forms.py:73 +#: plinth/modules/networks/forms.py:75 #, python-brace-format msgid "" "\"Automatic\" methods will make {box_name} acquire configuration from this " "network making it a client." msgstr "“自动”方式可以让 {box_name} 从此网络请求一个配置使其成为一个客户端。" -#: plinth/modules/networks/forms.py:76 plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:78 plinth/modules/networks/forms.py:246 msgid "Automatic" msgstr "自动" -#: plinth/modules/networks/forms.py:76 +#: plinth/modules/networks/forms.py:78 msgid "Automatic, DHCP only" msgstr "自动,只使用 DHCP" -#: plinth/modules/networks/forms.py:77 +#: plinth/modules/networks/forms.py:80 msgid "Ignore" msgstr "忽略" -#: plinth/modules/networks/forms.py:81 +#: plinth/modules/networks/forms.py:84 msgid "Prefix" msgstr "前缀" -#: plinth/modules/networks/forms.py:82 +#: plinth/modules/networks/forms.py:85 msgid "Value between 1 and 128." msgstr "在 1 到 128 之间取值。" -#: plinth/modules/networks/forms.py:90 +#: plinth/modules/networks/forms.py:93 msgid "" "Optional value. If this value is given and IPv6 addressing method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3470,7 +3615,7 @@ msgstr "" "可选的值。如果给出了此值和 IPv6 寻址方法是\"自动\",将忽略由 DHCP 服务器提供" "的 DNS 服务器。" -#: plinth/modules/networks/forms.py:96 +#: plinth/modules/networks/forms.py:99 msgid "" "Optional value. If this value is given and IPv6 Addressing Method is " "\"Automatic\", the DNS Servers provided by a DHCP server will be ignored." @@ -3478,64 +3623,64 @@ msgstr "" "可选的值。如果给出了此值和 IPv6 寻址方式是\"自动\",将忽略由 DHCP 服务器提供" "的 DNS 服务器。" -#: plinth/modules/networks/forms.py:109 +#: plinth/modules/networks/forms.py:112 msgid "-- select --" msgstr "-- 选择 --" -#: plinth/modules/networks/forms.py:236 +#: plinth/modules/networks/forms.py:239 #: plinth/modules/networks/templates/connection_show.html:129 msgid "SSID" msgstr "SSID" -#: plinth/modules/networks/forms.py:237 +#: plinth/modules/networks/forms.py:240 msgid "The visible name of the network." msgstr "可见网络的名称。" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 #: plinth/modules/networks/templates/connection_show.html:142 msgid "Mode" msgstr "模式" -#: plinth/modules/networks/forms.py:239 +#: plinth/modules/networks/forms.py:242 msgid "Infrastructure" msgstr "基础架构" -#: plinth/modules/networks/forms.py:240 +#: plinth/modules/networks/forms.py:243 msgid "Access Point" msgstr "访问点" -#: plinth/modules/networks/forms.py:241 +#: plinth/modules/networks/forms.py:244 msgid "Ad-hoc" msgstr "Ad-hoc" -#: plinth/modules/networks/forms.py:243 +#: plinth/modules/networks/forms.py:246 msgid "Frequency Band" msgstr "频带" -#: plinth/modules/networks/forms.py:244 +#: plinth/modules/networks/forms.py:247 msgid "A (5 GHz)" msgstr "A (5 GHz)" -#: plinth/modules/networks/forms.py:245 +#: plinth/modules/networks/forms.py:248 msgid "B/G (2.4 GHz)" msgstr "B/G (2.4 GHz)" -#: plinth/modules/networks/forms.py:247 +#: plinth/modules/networks/forms.py:250 #: plinth/modules/networks/templates/connection_show.html:158 msgid "Channel" msgstr "信道" -#: plinth/modules/networks/forms.py:248 +#: plinth/modules/networks/forms.py:251 msgid "" "Optional value. Wireless channel in the selected frequency band to restrict " "to. Blank or 0 value means automatic selection." msgstr "可选值。可通过指定频宽限制无线信道。为空或者填 0 表示自动选择。" -#: plinth/modules/networks/forms.py:253 +#: plinth/modules/networks/forms.py:256 msgid "BSSID" msgstr "BSSID" -#: plinth/modules/networks/forms.py:254 +#: plinth/modules/networks/forms.py:257 msgid "" "Optional value. Unique identifier for the access point. When connecting to " "an access point, connect only if the BSSID of the access point matches the " @@ -3544,31 +3689,31 @@ msgstr "" "可选的值。指定接入点的标识。当要连接到一个接入点时,只会连接到符合给出值的提" "供者。例如:00:11:22:aa:bb:cc。" -#: plinth/modules/networks/forms.py:260 +#: plinth/modules/networks/forms.py:263 msgid "Authentication Mode" msgstr "身份验证模式" -#: plinth/modules/networks/forms.py:261 +#: plinth/modules/networks/forms.py:264 msgid "" "Select WPA if the wireless network is secured and requires clients to have " "the password to connect." msgstr "如果无线网络安全的和要求客户端具有密码才能连接,请选择 WPA。" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "WPA" msgstr "WPA" -#: plinth/modules/networks/forms.py:263 +#: plinth/modules/networks/forms.py:266 msgid "Open" msgstr "打开" -#: plinth/modules/networks/forms.py:299 +#: plinth/modules/networks/forms.py:302 #, fuzzy, python-brace-format #| msgid "Direct connection to the Internet." msgid "Specify how your {box_name} is connected to your network" msgstr "直接连接到互联网。" -#: plinth/modules/networks/forms.py:306 +#: plinth/modules/networks/forms.py:309 #, python-brace-format msgid "" "Connected to a router

    Your {box_name} gets its " @@ -3576,7 +3721,7 @@ msgid "" "typical home setup.

    " msgstr "" -#: plinth/modules/networks/forms.py:313 +#: plinth/modules/networks/forms.py:316 #, python-brace-format msgid "" "{box_name} is your router

    Your {box_name} has " @@ -3585,7 +3730,7 @@ msgid "" "devices connect to {box_name} for their Internet connectivity.

    " msgstr "" -#: plinth/modules/networks/forms.py:322 +#: plinth/modules/networks/forms.py:325 #, python-brace-format msgid "" "Directly connected to the Internet

    Your Internet " @@ -3593,11 +3738,11 @@ msgid "" "devices on the network. This can happen on community or cloud setups.

    " msgstr "" -#: plinth/modules/networks/forms.py:341 +#: plinth/modules/networks/forms.py:344 msgid "Choose your internet connection type" msgstr "" -#: plinth/modules/networks/forms.py:345 +#: plinth/modules/networks/forms.py:348 msgid "" "I have a public IP address that may change over time

    This means that devices on the Internet can reach you when you are " @@ -3608,7 +3753,7 @@ msgid "" "over time or not, it is safer to choose this option.

    " msgstr "" -#: plinth/modules/networks/forms.py:357 +#: plinth/modules/networks/forms.py:360 #, python-brace-format msgid "" "I have a public IP address that does not change over time (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:370 +#: plinth/modules/networks/forms.py:373 #, python-brace-format msgid "" "I dont have a public IP address

    This means that " @@ -3632,19 +3777,19 @@ msgid "" "workaround solutions but each solution has some limitations.

    " msgstr "" -#: plinth/modules/networks/forms.py:383 +#: plinth/modules/networks/forms.py:386 msgid "" "I do not know the type of connection my ISP provides

    You will be suggested the most conservative actions.

    " msgstr "" -#: plinth/modules/networks/forms.py:400 +#: plinth/modules/networks/forms.py:403 #, fuzzy #| msgid "Current Network Configuration" msgid "Preferred router configuration" msgstr "当前的网络配置" -#: plinth/modules/networks/forms.py:405 +#: plinth/modules/networks/forms.py:408 #, python-brace-format msgid "" "Use DMZ feature to forward all traffic (recommended)

    " msgstr "" -#: plinth/modules/networks/forms.py:417 +#: plinth/modules/networks/forms.py:420 #, python-brace-format msgid "" "Forward specific traffic as needed by each application

    " msgstr "" -#: plinth/modules/networks/forms.py:431 +#: plinth/modules/networks/forms.py:434 msgid "" "Router is currently unconfigured

    Choose this if you " "have not configured or are unable to configure the router currently and wish " @@ -3856,7 +4001,7 @@ msgid "Create Connection" msgstr "创建连接" #: plinth/modules/networks/templates/connections_delete.html:11 -#: plinth/modules/networks/views.py:408 +#: plinth/modules/networks/views.py:406 msgid "Delete Connection" msgstr "删除连接" @@ -3901,7 +4046,7 @@ msgid "Computer" msgstr "计算机" #: plinth/modules/networks/templates/connections_edit.html:20 -#: plinth/modules/networks/views.py:128 plinth/modules/networks/views.py:212 +#: plinth/modules/networks/views.py:126 plinth/modules/networks/views.py:210 msgid "Edit Connection" msgstr "编辑连接" @@ -3913,13 +4058,13 @@ msgstr "连接" #: plinth/modules/networks/templates/connections_list.html:12 #: plinth/modules/networks/templates/connections_list.html:14 -#: plinth/modules/networks/views.py:261 +#: plinth/modules/networks/views.py:259 msgid "Nearby Wi-Fi Networks" msgstr "附近的无线网络" #: plinth/modules/networks/templates/connections_list.html:17 #: plinth/modules/networks/templates/connections_list.html:19 -#: plinth/modules/networks/views.py:285 +#: plinth/modules/networks/views.py:283 #: plinth/modules/wireguard/templates/wireguard_add_server.html:19 msgid "Add Connection" msgstr "添加连接" @@ -3960,6 +4105,7 @@ msgstr "" #: plinth/modules/networks/templates/internet_connectivity_firstboot.html:21 #: plinth/modules/networks/templates/network_topology_firstboot.html:21 #: plinth/modules/networks/templates/router_configuration_firstboot.html:21 +#: plinth/modules/upgrades/templates/backports-firstboot.html:45 msgid "Next" msgstr "" @@ -4102,71 +4248,71 @@ msgid "" "full instructions on how to perform this task." msgstr "" -#: plinth/modules/networks/views.py:36 +#: plinth/modules/networks/views.py:34 msgid "Network Connections" msgstr "网络连接" -#: plinth/modules/networks/views.py:51 +#: plinth/modules/networks/views.py:49 msgid "Cannot show connection: Connection not found." msgstr "不能显示连接: 找不到连接。" -#: plinth/modules/networks/views.py:86 +#: plinth/modules/networks/views.py:84 msgid "Connection Information" msgstr "连接信息" -#: plinth/modules/networks/views.py:100 +#: plinth/modules/networks/views.py:98 msgid "Cannot edit connection: Connection not found." msgstr "不能编辑连接: 找不到连接。" -#: plinth/modules/networks/views.py:106 +#: plinth/modules/networks/views.py:104 msgid "This type of connection is not yet understood." msgstr "这种类型的连接尚没有引入。" -#: plinth/modules/networks/views.py:224 +#: plinth/modules/networks/views.py:222 #, python-brace-format msgid "Activated connection {name}." msgstr "激活的连接 {name}。" -#: plinth/modules/networks/views.py:228 +#: plinth/modules/networks/views.py:226 msgid "Failed to activate connection: Connection not found." msgstr "未能激活连接: 找不到连接。" -#: plinth/modules/networks/views.py:234 +#: plinth/modules/networks/views.py:232 #, python-brace-format msgid "Failed to activate connection {name}: No suitable device is available." msgstr "未能激活连接 {name}: 没有合适的设备是可用。" -#: plinth/modules/networks/views.py:247 +#: plinth/modules/networks/views.py:245 #, python-brace-format msgid "Deactivated connection {name}." msgstr "停用的连接 {name}。" -#: plinth/modules/networks/views.py:251 +#: plinth/modules/networks/views.py:249 msgid "Failed to de-activate connection: Connection not found." msgstr "无法取消激活连接: 找不到连接。" -#: plinth/modules/networks/views.py:303 +#: plinth/modules/networks/views.py:301 msgid "Adding New Generic Connection" msgstr "添加新的常规连接" -#: plinth/modules/networks/views.py:321 +#: plinth/modules/networks/views.py:319 msgid "Adding New Ethernet Connection" msgstr "添加新的以太网连接" -#: plinth/modules/networks/views.py:339 +#: plinth/modules/networks/views.py:337 msgid "Adding New PPPoE Connection" msgstr "添加新的 PPPoE 连接" -#: plinth/modules/networks/views.py:374 +#: plinth/modules/networks/views.py:372 msgid "Adding New Wi-Fi Connection" msgstr "添加新的 Wi-Fi 连接" -#: plinth/modules/networks/views.py:389 +#: plinth/modules/networks/views.py:387 #, python-brace-format msgid "Connection {name} deleted." msgstr "连接 {name} 已删除。" -#: plinth/modules/networks/views.py:393 plinth/modules/networks/views.py:403 +#: plinth/modules/networks/views.py:391 plinth/modules/networks/views.py:401 msgid "Failed to delete connection: Connection not found." msgstr "删除连接失败: 找不到连接。" @@ -4185,20 +4331,20 @@ msgstr "" "供的私人/内部服务。您还可以通过 {box_name} 访问互联网的其他部分,以增加安全性" "和匿名性。" -#: plinth/modules/openvpn/__init__.py:56 plinth/modules/openvpn/manifest.py:18 +#: plinth/modules/openvpn/__init__.py:54 plinth/modules/openvpn/manifest.py:18 #, fuzzy #| msgid "Open" msgid "OpenVPN" msgstr "打开" -#: plinth/modules/openvpn/__init__.py:57 -#: plinth/modules/wireguard/__init__.py:53 +#: plinth/modules/openvpn/__init__.py:55 +#: plinth/modules/wireguard/__init__.py:51 #, fuzzy #| msgid "Virtual Private Network (OpenVPN)" msgid "Virtual Private Network" msgstr "虚拟专用网络(OpenVPN)" -#: plinth/modules/openvpn/__init__.py:68 +#: plinth/modules/openvpn/__init__.py:66 #, python-brace-format msgid "" "Download Profile" @@ -4269,11 +4415,11 @@ msgstr "配置文件是特定于每个 %(box_name)s 用户的。请保持其私 msgid "Download my profile" msgstr "下载我的配置文件" -#: plinth/modules/openvpn/views.py:89 +#: plinth/modules/openvpn/views.py:88 msgid "Setup completed." msgstr "安装已完成。" -#: plinth/modules/openvpn/views.py:91 +#: plinth/modules/openvpn/views.py:90 msgid "Setup failed." msgstr "安装失败。" @@ -4504,6 +4650,19 @@ msgstr "" msgid "Performance" msgstr "" +#: plinth/modules/performance/__init__.py:25 +msgid "" +"Performance app allows you to collect, store and view information about " +"utilization of the hardware. This can give you basic insights into usage " +"patterns and whether the hardware is overloaded by users and services." +msgstr "" + +#: plinth/modules/performance/__init__.py:29 +msgid "" +"Performance metrics are collected by Performance Co-Pilot and can be viewed " +"using the Cockpit app." +msgstr "" + #: plinth/modules/performance/__init__.py:46 #, fuzzy #| msgid "System Configuration" @@ -4602,7 +4761,7 @@ msgstr "启用 Privoxy" msgid "Web Proxy" msgstr "Privoxy 网页代理" -#: plinth/modules/privoxy/__init__.py:119 +#: plinth/modules/privoxy/__init__.py:109 #, python-brace-format msgid "Access {url} with proxy {proxy} on tcp{kind}" msgstr "在 tcp{kind} 上通过 {proxy} 访问 {url}" @@ -4633,11 +4792,11 @@ msgstr "" "quassel-irc.org/downloads\">桌面和移动设备客户端连接到 Quassel 的核心。" -#: plinth/modules/quassel/__init__.py:61 plinth/modules/quassel/manifest.py:10 +#: plinth/modules/quassel/__init__.py:59 plinth/modules/quassel/manifest.py:10 msgid "Quassel" msgstr "" -#: plinth/modules/quassel/__init__.py:62 +#: plinth/modules/quassel/__init__.py:60 #, fuzzy #| msgid "Quassel IRC Client" msgid "IRC Client" @@ -4647,7 +4806,7 @@ msgstr "Quassel IRC 客户端" msgid "Quasseldroid" msgstr "" -#: plinth/modules/radicale/__init__.py:33 +#: plinth/modules/radicale/__init__.py:29 #, fuzzy, python-brace-format #| msgid "" #| "Radicale is a CalDAV and CardDAV server. It allows synchronization and " @@ -4667,19 +4826,19 @@ msgstr "" "user_documentation/#idcaldav-and-carddav-client\">支持的客户端应用程序。" "任何拥有 {box_name} 登录名的用户都可以访问 Radicale。" -#: plinth/modules/radicale/__init__.py:39 +#: plinth/modules/radicale/__init__.py:35 msgid "" "Radicale provides a basic web interface, which only supports creating new " "calendars and addressbooks. It does not support adding events or contacts, " "which must be done using a separate client." msgstr "" -#: plinth/modules/radicale/__init__.py:62 +#: plinth/modules/radicale/__init__.py:56 #: plinth/modules/radicale/manifest.py:75 msgid "Radicale" msgstr "" -#: plinth/modules/radicale/__init__.py:63 +#: plinth/modules/radicale/__init__.py:57 #, fuzzy #| msgid "" #| "Calendar and Addressbook \n" @@ -4711,6 +4870,12 @@ msgid "" "addressbook." msgstr "任何用户都可以查看和修改任何日历/通训录。" +#: plinth/modules/radicale/forms.py:30 +#, fuzzy +#| msgid "Access Point" +msgid "Access rights" +msgstr "访问点" + #: plinth/modules/radicale/manifest.py:10 msgid "DAVx5" msgstr "" @@ -4951,43 +5116,43 @@ msgstr "共享" msgid "Action" msgstr "行动" -#: plinth/modules/samba/views.py:43 plinth/modules/storage/forms.py:147 +#: plinth/modules/samba/views.py:51 plinth/modules/storage/forms.py:147 #, fuzzy #| msgid "Add Service" msgid "Open Share" msgstr "添加服务" -#: plinth/modules/samba/views.py:44 plinth/modules/storage/forms.py:145 +#: plinth/modules/samba/views.py:52 plinth/modules/storage/forms.py:145 #, fuzzy #| msgid "Add Service" msgid "Group Share" msgstr "添加服务" -#: plinth/modules/samba/views.py:45 +#: plinth/modules/samba/views.py:53 #, fuzzy #| msgid "Homepage" msgid "Home Share" msgstr "主页" -#: plinth/modules/samba/views.py:78 +#: plinth/modules/samba/views.py:86 #, fuzzy #| msgid "{name} deleted." msgid "Share enabled." msgstr "{name} 已删除。" -#: plinth/modules/samba/views.py:83 +#: plinth/modules/samba/views.py:91 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error enabling share: {error_message}" msgstr "安装应用程序出错:{error}" -#: plinth/modules/samba/views.py:88 +#: plinth/modules/samba/views.py:96 #, fuzzy #| msgid "Shared" msgid "Share disabled." msgstr "共享" -#: plinth/modules/samba/views.py:93 +#: plinth/modules/samba/views.py:101 #, fuzzy, python-brace-format #| msgid "Error installing application: {error}" msgid "Error disabling share: {error_message}" @@ -5029,10 +5194,6 @@ msgstr "保存服务" msgid "Select the default family filter to apply to your search results." msgstr "" -#: plinth/modules/searx/forms.py:15 -msgid "None" -msgstr "" - #: plinth/modules/searx/forms.py:15 #, fuzzy #| msgid "Mode" @@ -5051,11 +5212,6 @@ msgstr "" msgid "Allow this application to be used by anyone who can reach it." msgstr "" -#: plinth/modules/searx/views.py:38 plinth/modules/searx/views.py:49 -#: plinth/modules/tor/views.py:130 plinth/modules/tor/views.py:157 -msgid "Configuration updated." -msgstr "配置已更新。" - #: plinth/modules/security/forms.py:13 msgid "Restrict console logins (recommended)" msgstr "限制控制台访问(建议)" @@ -5087,8 +5243,33 @@ msgstr "" msgid "Show security report" msgstr "安全" +#: plinth/modules/security/templates/security.html:17 +#: plinth/modules/upgrades/templates/backports-firstboot.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +msgid "Frequent Feature Updates" +msgstr "" + +#: plinth/modules/security/templates/security.html:19 +#: plinth/modules/upgrades/templates/upgrades_configure.html:19 +msgid "Frequent feature updates are activated." +msgstr "" + +#: plinth/modules/security/templates/security.html:24 +#: plinth/modules/upgrades/templates/backports-firstboot.html:14 +#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#, python-format +msgid "" +"Frequent feature updates allow the %(box_name)s Service, plus a very limited " +"set of software, to receive new features more frequently (from the backports " +"repository). This results in receiving some new features within weeks, " +"instead of only once every 2 years or so. Note that software with frequent " +"feature updates does not have support from the Debian Security Team. " +"Instead, they are maintained by contributors to Debian and the %(box_name)s " +"community." +msgstr "" + #: plinth/modules/security/templates/security_report.html:10 -#: plinth/modules/security/views.py:71 +#: plinth/modules/security/views.py:74 #, fuzzy #| msgid "Security" msgid "Security Report" @@ -5175,12 +5356,12 @@ msgstr "" msgid "Not running" msgstr " 未运行" -#: plinth/modules/security/views.py:53 +#: plinth/modules/security/views.py:56 #, python-brace-format msgid "Error setting restricted access: {exception}" msgstr "设置限制访问错误:{exception}" -#: plinth/modules/security/views.py:56 +#: plinth/modules/security/views.py:59 msgid "Updated security configuration" msgstr "安全配置已更新" @@ -5507,8 +5688,8 @@ msgstr "删除快照" #: plinth/modules/snapshot/forms.py:49 msgid "" -"Keep a maximum of this many yearly snapshots. The default value is 0 " -"(disabled)." +"Keep a maximum of this many yearly snapshots. The default value is 0 (keep " +"no yearly snapshot)." msgstr "" #: plinth/modules/snapshot/templates/snapshot_delete_selected.html:12 @@ -5635,7 +5816,7 @@ msgid "" "connections." msgstr "" -#: plinth/modules/ssh/__init__.py:50 +#: plinth/modules/ssh/__init__.py:48 msgid "Secure Shell (SSH) Server" msgstr "安全 Shell(SSH)服务器" @@ -5684,7 +5865,7 @@ msgstr "" msgid "SSH authentication with password enabled." msgstr "远程服务器认证失败。" -#: plinth/modules/sso/__init__.py:33 +#: plinth/modules/sso/__init__.py:34 msgid "Single Sign On" msgstr "" @@ -5700,116 +5881,116 @@ msgid "" "media, expand the root partition etc." msgstr "" -#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:319 +#: plinth/modules/storage/__init__.py:53 plinth/modules/storage/__init__.py:312 #, fuzzy #| msgid "reStore" msgid "Storage" msgstr "reStore" -#: plinth/modules/storage/__init__.py:213 +#: plinth/modules/storage/__init__.py:206 #, fuzzy, python-brace-format #| msgid "{disk_size} bytes" msgid "{disk_size:.1f} bytes" msgstr "{disk_size} bytes" -#: plinth/modules/storage/__init__.py:217 +#: plinth/modules/storage/__init__.py:210 #, fuzzy, python-brace-format #| msgid "{disk_size} KiB" msgid "{disk_size:.1f} KiB" msgstr "{disk_size} KiB" -#: plinth/modules/storage/__init__.py:221 +#: plinth/modules/storage/__init__.py:214 #, fuzzy, python-brace-format #| msgid "{disk_size} MiB" msgid "{disk_size:.1f} MiB" msgstr "{disk_size} MiB" -#: plinth/modules/storage/__init__.py:225 +#: plinth/modules/storage/__init__.py:218 #, fuzzy, python-brace-format #| msgid "{disk_size} GiB" msgid "{disk_size:.1f} GiB" msgstr "{disk_size} GiB" -#: plinth/modules/storage/__init__.py:228 +#: plinth/modules/storage/__init__.py:221 #, fuzzy, python-brace-format #| msgid "{disk_size} TiB" msgid "{disk_size:.1f} TiB" msgstr "{disk_size} TiB" -#: plinth/modules/storage/__init__.py:240 +#: plinth/modules/storage/__init__.py:233 msgid "The operation failed." msgstr "" -#: plinth/modules/storage/__init__.py:242 +#: plinth/modules/storage/__init__.py:235 msgid "The operation was cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:244 +#: plinth/modules/storage/__init__.py:237 #, fuzzy #| msgid "repro service is running" msgid "The device is already unmounting." msgstr "repro 服务正在运行" -#: plinth/modules/storage/__init__.py:246 +#: plinth/modules/storage/__init__.py:239 msgid "The operation is not supported due to missing driver/tool support." msgstr "" -#: plinth/modules/storage/__init__.py:249 +#: plinth/modules/storage/__init__.py:242 msgid "The operation timed out." msgstr "" -#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:244 msgid "The operation would wake up a disk that is in a deep-sleep state." msgstr "" -#: plinth/modules/storage/__init__.py:254 +#: plinth/modules/storage/__init__.py:247 msgid "Attempting to unmount a device that is busy." msgstr "" -#: plinth/modules/storage/__init__.py:256 +#: plinth/modules/storage/__init__.py:249 msgid "The operation has already been cancelled." msgstr "" -#: plinth/modules/storage/__init__.py:258 -#: plinth/modules/storage/__init__.py:260 -#: plinth/modules/storage/__init__.py:262 +#: plinth/modules/storage/__init__.py:251 +#: plinth/modules/storage/__init__.py:253 +#: plinth/modules/storage/__init__.py:255 msgid "Not authorized to perform the requested operation." msgstr "" -#: plinth/modules/storage/__init__.py:264 +#: plinth/modules/storage/__init__.py:257 #, fuzzy #| msgid "This service already exists" msgid "The device is already mounted." msgstr "此服务已存在" -#: plinth/modules/storage/__init__.py:266 +#: plinth/modules/storage/__init__.py:259 #, fuzzy #| msgid "repro service is not running" msgid "The device is not mounted." msgstr "repro 服务未运行" -#: plinth/modules/storage/__init__.py:268 +#: plinth/modules/storage/__init__.py:261 msgid "Not permitted to use the requested option." msgstr "" -#: plinth/modules/storage/__init__.py:270 +#: plinth/modules/storage/__init__.py:263 msgid "The device is mounted by another user." msgstr "" -#: plinth/modules/storage/__init__.py:314 +#: plinth/modules/storage/__init__.py:307 #, no-python-format, python-brace-format msgid "Low space on system partition: {percent_used}% used, {free_space} free." msgstr "" -#: plinth/modules/storage/__init__.py:316 +#: plinth/modules/storage/__init__.py:309 msgid "Low disk space" msgstr "" -#: plinth/modules/storage/__init__.py:344 +#: plinth/modules/storage/__init__.py:337 msgid "Disk failure imminent" msgstr "" -#: plinth/modules/storage/__init__.py:346 +#: plinth/modules/storage/__init__.py:339 #, python-brace-format msgid "" "Disk {id} is reporting that it is likely to fail in the near future. Copy " @@ -5984,11 +6165,11 @@ msgid "" "other storage nodes." msgstr "" -#: plinth/modules/tahoe/__init__.py:66 +#: plinth/modules/tahoe/__init__.py:61 msgid "Tahoe-LAFS" msgstr "" -#: plinth/modules/tahoe/__init__.py:68 +#: plinth/modules/tahoe/__init__.py:63 msgid "Distributed File Storage" msgstr "" @@ -6031,7 +6212,7 @@ msgstr "" msgid "Remove" msgstr "" -#: plinth/modules/tor/__init__.py:34 +#: plinth/modules/tor/__init__.py:35 msgid "" "Tor is an anonymous communication system. You can learn more about it from " "the Tor Project website. For " @@ -6044,42 +6225,42 @@ msgstr "" "href=\"https://www.torproject.org/download/download-easy.html.en\">Tor浏览器" "。" -#: plinth/modules/tor/__init__.py:54 +#: plinth/modules/tor/__init__.py:55 msgid "Tor" msgstr "" -#: plinth/modules/tor/__init__.py:65 +#: plinth/modules/tor/__init__.py:66 #, fuzzy #| msgid "Tor Hidden Service" msgid "Tor Onion Service" msgstr "隐藏的 Tor 服务" -#: plinth/modules/tor/__init__.py:69 +#: plinth/modules/tor/__init__.py:70 msgid "Tor Socks Proxy" msgstr "" -#: plinth/modules/tor/__init__.py:73 +#: plinth/modules/tor/__init__.py:74 msgid "Tor Bridge Relay" msgstr "Tor 网桥中继" -#: plinth/modules/tor/__init__.py:98 +#: plinth/modules/tor/__init__.py:110 msgid "Tor relay port available" msgstr "Tor 中继端口可用" -#: plinth/modules/tor/__init__.py:108 +#: plinth/modules/tor/__init__.py:120 msgid "Obfs3 transport registered" msgstr "已注册 Obfs3 传输" -#: plinth/modules/tor/__init__.py:118 +#: plinth/modules/tor/__init__.py:130 msgid "Obfs4 transport registered" msgstr "已注册 Obfs4 传输" -#: plinth/modules/tor/__init__.py:211 +#: plinth/modules/tor/__init__.py:199 #, python-brace-format msgid "Access URL {url} on tcp{kind} via Tor" msgstr "在 tcp{kind} 上通过 Tor 访问 {url}" -#: plinth/modules/tor/__init__.py:222 +#: plinth/modules/tor/__init__.py:210 #, python-brace-format msgid "Confirm Tor usage at {url} on tcp{kind}" msgstr "确认使用 Tor 通过 tcp{kind} 访问 {url}" @@ -6223,7 +6404,7 @@ msgstr "SOCKS" msgid "A Tor SOCKS port is available on your %(box_name)s on TCP port 9050." msgstr "Tor SOCKS 端口是你 %(box_name)s 上的 TCP 端口 9050 。" -#: plinth/modules/tor/views.py:137 plinth/views.py:220 +#: plinth/modules/tor/views.py:137 plinth/views.py:216 msgid "Setting unchanged" msgstr "设置未改变" @@ -6291,11 +6472,11 @@ msgstr "" msgid "Tiny Tiny RSS (Fork)" msgstr "" -#: plinth/modules/upgrades/__init__.py:23 +#: plinth/modules/upgrades/__init__.py:36 msgid "Check for and apply the latest software and security updates." msgstr "" -#: plinth/modules/upgrades/__init__.py:24 +#: plinth/modules/upgrades/__init__.py:37 msgid "" "Updates are run at 06:00 everyday according to local time zone. Set your " "time zone in Date & Time app. Apps are restarted after update causing them " @@ -6303,11 +6484,11 @@ msgid "" "automatically at 02:00 causing all apps to be unavailable briefly." msgstr "" -#: plinth/modules/upgrades/__init__.py:45 plinth/templates/setup.html:62 +#: plinth/modules/upgrades/__init__.py:64 plinth/templates/setup.html:62 msgid "Update" msgstr "更新" -#: plinth/modules/upgrades/__init__.py:83 +#: plinth/modules/upgrades/__init__.py:102 #, fuzzy #| msgid "FreedomBox" msgid "FreedomBox Updated" @@ -6323,6 +6504,23 @@ msgstr "启用自动升级" msgid "When enabled, FreedomBox automatically updates once a day." msgstr "" +#: plinth/modules/upgrades/forms.py:20 +#: plinth/modules/upgrades/templates/upgrades_configure.html:56 +msgid "Activate frequent feature updates (recommended)" +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:26 +msgid "" +"It is strongly recommended to activate frequent feature updates. If not " +"activated now, they can be activated later." +msgstr "" + +#: plinth/modules/upgrades/templates/backports-firstboot.html:33 +msgid "" +"Note: Once frequent feature updates are activated, they " +"cannot be deactivated." +msgstr "" + #: plinth/modules/upgrades/templates/upgrades-new-release.html:9 #, fuzzy, python-format #| msgid "%(box_name)s Setup" @@ -6341,23 +6539,42 @@ msgstr "" msgid "Dismiss" msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:11 +#: plinth/modules/upgrades/templates/upgrades_configure.html:14 +msgid "" +"Frequent feature updates can be activated. Activating them is recommended." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:23 +msgid "" +"Frequent feature updates cannot be activated. They may not be necessary on " +"your distribution." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#, python-format +msgid "" +"Warning! Once frequent feature updates are activated, they " +"cannot be deactivated. You may wish to take a snapshot using Storage Snapshots before continuing." +msgstr "" + +#: plinth/modules/upgrades/templates/upgrades_configure.html:61 #, fuzzy #| msgid "Last update" -msgid "Manual update" +msgid "Manual Update" msgstr "最后一次更新" -#: plinth/modules/upgrades/templates/upgrades_configure.html:17 +#: plinth/modules/upgrades/templates/upgrades_configure.html:67 msgid "Updating..." msgstr "" -#: plinth/modules/upgrades/templates/upgrades_configure.html:25 +#: plinth/modules/upgrades/templates/upgrades_configure.html:75 #, fuzzy #| msgid "Update" msgid "Update now" msgstr "更新" -#: plinth/modules/upgrades/templates/upgrades_configure.html:31 +#: plinth/modules/upgrades/templates/upgrades_configure.html:81 #, fuzzy #| msgid "" #| "Depending on the number of packages to install, this may take a long time " @@ -6373,31 +6590,35 @@ msgstr "" "装其它软件包。升级期间,此 web 界面可能暂时不可用并显示错误消息。刷新页面后," "可以继续。" -#: plinth/modules/upgrades/templates/upgrades_configure.html:45 +#: plinth/modules/upgrades/templates/upgrades_configure.html:95 msgid "Show recent update logs" msgstr "" -#: plinth/modules/upgrades/views.py:53 +#: plinth/modules/upgrades/views.py:57 #, python-brace-format msgid "Error when configuring unattended-upgrades: {error}" msgstr "配置无人参与升级时错误:{error}" -#: plinth/modules/upgrades/views.py:57 +#: plinth/modules/upgrades/views.py:61 msgid "Automatic upgrades enabled" msgstr "已启用自动升级" -#: plinth/modules/upgrades/views.py:60 +#: plinth/modules/upgrades/views.py:64 msgid "Automatic upgrades disabled" msgstr "已禁用自动升级" -#: plinth/modules/upgrades/views.py:75 +#: plinth/modules/upgrades/views.py:79 msgid "Upgrade process started." msgstr "升级过程开始。" -#: plinth/modules/upgrades/views.py:77 +#: plinth/modules/upgrades/views.py:81 msgid "Starting upgrade failed." msgstr "开始升级失败。" +#: plinth/modules/upgrades/views.py:91 +msgid "Frequent feature updates activated." +msgstr "" + #: plinth/modules/users/__init__.py:39 msgid "" "Create and managed user accounts. These accounts serve as centralized " @@ -6421,7 +6642,7 @@ msgstr "用户和组" msgid "Access to all services and system settings" msgstr "" -#: plinth/modules/users/__init__.py:122 +#: plinth/modules/users/__init__.py:115 #, python-brace-format msgid "Check LDAP entry \"{search_item}\"" msgstr "请检查 LDAP 条目“{search_item}”" @@ -6436,18 +6657,12 @@ msgstr "用户名已经占用或保留。" msgid "Enter a valid username." msgstr "服务器名称无效" -#: plinth/modules/users/forms.py:69 +#: plinth/modules/users/forms.py:70 msgid "" "Required. 150 characters or fewer. English letters, digits and @/./-/_ only." msgstr "" -#: plinth/modules/users/forms.py:83 plinth/modules/users/forms.py:197 -#, fuzzy -#| msgid "Transmission BitTorrent" -msgid "Permissions" -msgstr "Transmission BitTorrent" - -#: plinth/modules/users/forms.py:85 +#: plinth/modules/users/forms.py:86 #, fuzzy #| msgid "" #| "Select which services should be available to the new user. The user will " @@ -6466,20 +6681,20 @@ msgstr "" "支持单一登录的服务。

    管理员(admin)组中的用户将能够登录所有服务。他" "们还可以通过 SSH 登录到系统并具有管理权限(sudo)。" -#: plinth/modules/users/forms.py:123 plinth/modules/users/forms.py:346 +#: plinth/modules/users/forms.py:124 plinth/modules/users/forms.py:347 msgid "Creating LDAP user failed." msgstr "创建 LDAP 用户失败。" -#: plinth/modules/users/forms.py:134 +#: plinth/modules/users/forms.py:135 #, python-brace-format msgid "Failed to add new user to {group} group." msgstr "未能将新用户添加到 {group}。" -#: plinth/modules/users/forms.py:148 +#: plinth/modules/users/forms.py:149 msgid "Authorized SSH Keys" msgstr "" -#: plinth/modules/users/forms.py:150 +#: plinth/modules/users/forms.py:151 msgid "" "Setting an SSH public key will allow this user to securely log in to the " "system without using a password. You may enter multiple keys, one on each " @@ -6488,45 +6703,45 @@ msgstr "" "设置 SSH 公钥将允许此用户安全地登录到系统不使用密码。您可以输入多个密钥,每行" "一个。将忽略空行和以 # 开头的行。" -#: plinth/modules/users/forms.py:234 +#: plinth/modules/users/forms.py:235 msgid "Renaming LDAP user failed." msgstr "重命名 LDAP 用户失败。" -#: plinth/modules/users/forms.py:246 +#: plinth/modules/users/forms.py:247 msgid "Failed to remove user from group." msgstr "无法从组中删除用户。" -#: plinth/modules/users/forms.py:257 +#: plinth/modules/users/forms.py:258 msgid "Failed to add user to group." msgstr "无法将用户添加到组。" -#: plinth/modules/users/forms.py:266 +#: plinth/modules/users/forms.py:267 msgid "Unable to set SSH keys." msgstr "不能设置 SSH 密钥。" -#: plinth/modules/users/forms.py:281 +#: plinth/modules/users/forms.py:282 #, fuzzy #| msgid "Failed to add user to group." msgid "Failed to change user status." msgstr "无法将用户添加到组。" -#: plinth/modules/users/forms.py:289 +#: plinth/modules/users/forms.py:290 msgid "Cannot delete the only administrator in the system." msgstr "" -#: plinth/modules/users/forms.py:320 +#: plinth/modules/users/forms.py:321 msgid "Changing LDAP user password failed." msgstr "更改 LDAP 用户密码失败。" -#: plinth/modules/users/forms.py:355 +#: plinth/modules/users/forms.py:356 msgid "Failed to add new user to admin group." msgstr "未能将新用户添加到管理员组。" -#: plinth/modules/users/forms.py:372 +#: plinth/modules/users/forms.py:373 msgid "Failed to restrict console access." msgstr "限制命令行访问失败。" -#: plinth/modules/users/forms.py:384 +#: plinth/modules/users/forms.py:385 msgid "User account created, you are now logged in" msgstr "用户帐户已创建,您现在可以登录" @@ -6655,7 +6870,7 @@ msgid "" "securely relayed through {box_name}." msgstr "" -#: plinth/modules/wireguard/__init__.py:52 +#: plinth/modules/wireguard/__init__.py:50 #: plinth/modules/wireguard/manifest.py:14 msgid "WireGuard" msgstr "" @@ -6787,7 +7002,7 @@ msgid "Add a new peer" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:61 -#: plinth/modules/wireguard/views.py:50 +#: plinth/modules/wireguard/views.py:48 msgid "Add Allowed Client" msgstr "" @@ -6822,7 +7037,7 @@ msgid "Add a new server" msgstr "" #: plinth/modules/wireguard/templates/wireguard.html:108 -#: plinth/modules/wireguard/views.py:159 +#: plinth/modules/wireguard/views.py:157 #, fuzzy #| msgid "Add Connection" msgid "Add Connection to Server" @@ -6932,17 +7147,17 @@ msgstr "" msgid "IP address of this machine:" msgstr "" -#: plinth/modules/wireguard/views.py:45 +#: plinth/modules/wireguard/views.py:43 msgid "Added new client." msgstr "" -#: plinth/modules/wireguard/views.py:60 plinth/modules/wireguard/views.py:119 +#: plinth/modules/wireguard/views.py:58 plinth/modules/wireguard/views.py:117 #, fuzzy #| msgid "This service already exists" msgid "Client with public key already exists" msgstr "此服务已存在" -#: plinth/modules/wireguard/views.py:73 +#: plinth/modules/wireguard/views.py:71 #, fuzzy #| msgid "" #| "Email Client \n" @@ -6952,13 +7167,13 @@ msgstr "" "邮件客户端\n" "(Roundcube)" -#: plinth/modules/wireguard/views.py:95 +#: plinth/modules/wireguard/views.py:93 #, fuzzy #| msgid "Update setup" msgid "Updated client." msgstr "更新安装程序" -#: plinth/modules/wireguard/views.py:100 +#: plinth/modules/wireguard/views.py:98 #, fuzzy #| msgid "" #| "Email Client \n" @@ -6968,55 +7183,55 @@ msgstr "" "邮件客户端\n" "(Roundcube)" -#: plinth/modules/wireguard/views.py:133 +#: plinth/modules/wireguard/views.py:131 #, fuzzy #| msgid "Delete" msgid "Delete Allowed Client" msgstr "删除" -#: plinth/modules/wireguard/views.py:142 +#: plinth/modules/wireguard/views.py:140 #, fuzzy #| msgid "Archive deleted." msgid "Client deleted." msgstr "归档已删除。" -#: plinth/modules/wireguard/views.py:144 +#: plinth/modules/wireguard/views.py:142 #, fuzzy #| msgid "Repository not found" msgid "Client not found" msgstr "找不到存储库" -#: plinth/modules/wireguard/views.py:154 +#: plinth/modules/wireguard/views.py:152 #, fuzzy #| msgid "Added custom service" msgid "Added new server." msgstr "已添加的自定义服务" -#: plinth/modules/wireguard/views.py:175 +#: plinth/modules/wireguard/views.py:173 #, fuzzy #| msgid "Connection Type" msgid "Connection to Server" msgstr "连接类型" -#: plinth/modules/wireguard/views.py:193 +#: plinth/modules/wireguard/views.py:191 #, fuzzy #| msgid "Update setup" msgid "Updated server." msgstr "更新安装程序" -#: plinth/modules/wireguard/views.py:198 +#: plinth/modules/wireguard/views.py:196 #, fuzzy #| msgid "Edit Connection" msgid "Modify Connection to Server" msgstr "编辑连接" -#: plinth/modules/wireguard/views.py:235 +#: plinth/modules/wireguard/views.py:233 #, fuzzy #| msgid "Delete Connection" msgid "Delete Connection to Server" msgstr "删除连接" -#: plinth/modules/wireguard/views.py:255 +#: plinth/modules/wireguard/views.py:253 #, fuzzy #| msgid "{name} deleted." msgid "Server deleted." @@ -7030,23 +7245,23 @@ msgstr "PPPoE" msgid "Generic" msgstr "通用" -#: plinth/package.py:122 +#: plinth/package.py:134 msgid "Error during installation" msgstr "安装时错误" -#: plinth/package.py:144 +#: plinth/package.py:156 msgid "installing" msgstr "安装" -#: plinth/package.py:146 +#: plinth/package.py:158 msgid "downloading" msgstr "下载中" -#: plinth/package.py:148 +#: plinth/package.py:160 msgid "media change" msgstr "媒体改变" -#: plinth/package.py:150 +#: plinth/package.py:162 #, python-brace-format msgid "configuration file: {file}" msgstr "配置文件:{file}" @@ -7343,14 +7558,45 @@ msgstr "没有证书" msgid "Port Forwarding" msgstr "启用转发" -#: plinth/templates/port-forwarding-info.html:11 +#: plinth/templates/port-forwarding-info.html:13 #, python-format msgid "" -"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 " -"%(service_name)s:" +"Your FreedomBox is not behind a router. No " +"action is necessary." msgstr "" +#: plinth/templates/port-forwarding-info.html:19 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are using the DMZ feature to forward all ports. No further router " +"configuration is necessary." +msgstr "" + +#: plinth/templates/port-forwarding-info.html:26 +#, python-format +msgid "" +"Your FreedomBox is behind a router and you " +"are not using the DMZ feature. You will need to set up port forwarding on " +"your router. You should forward the following ports for %(service_name)s:" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:36 +#, fuzzy +#| msgid "protocol" +msgid "Protocol" +msgstr "协议" + +#: plinth/templates/port-forwarding-info.html:37 +msgid "From Router/WAN Ports" +msgstr "" + +#: plinth/templates/port-forwarding-info.html:38 +#, fuzzy, python-format +#| msgid "%(box_name)s Setup" +msgid "To %(box_name)s Ports" +msgstr "%(box_name)s 安装程序" + #: plinth/templates/setup.html:24 msgid "Install this application?" msgstr "安装此应用程序?" @@ -7395,6 +7641,60 @@ msgstr "已完成 %(percentage)s%%" msgid "Gujarati" msgstr "古吉拉特语" +#, fuzzy +#~| msgid "Create User" +#~ msgid "Backports activated." +#~ msgstr "创建用户" + +#, fuzzy +#~| msgid "" +#~| "Coquelicot is a “one-click” file sharing web application with a focus on " +#~| "protecting users’ privacy. It is best used for quickly sharing a single " +#~| "file. " +#~ msgid "" +#~ "Coquelicot is a \"one-click\" file sharing web application with a focus " +#~ "on protecting users' privacy. It is best used for quickly sharing a " +#~ "single file. " +#~ msgstr "" +#~ "Coquelicot 是一个“即点即用”的文件分享应用,注重保护用户隐私。适宜快速分享" +#~ "单个文件。 " + +#~ msgid "Coquelicot" +#~ msgstr "Coquelicot" + +#~ msgid "Upload Password" +#~ msgstr "保存密码" + +#~ msgid "Maximum File Size (in MiB)" +#~ msgstr "最大的文件容量(以MiB计算)" + +#~ msgid "Upload password updated" +#~ msgstr "上传密码已更新" + +#~ msgid "Failed to update upload password" +#~ msgstr "更新上传的密码失败" + +#~ msgid "Maximum file size updated" +#~ msgstr "最大玩家配置已更新" + +#~ msgid "Failed to update maximum file size" +#~ msgstr "更新最大文件容量失败" + +#, fuzzy +#~| msgid "Security" +#~ msgid "Security Notice" +#~ msgstr "安全" + +#, fuzzy +#~| msgid "Backups" +#~ msgid "Backports" +#~ msgstr "备份" + +#, fuzzy +#~| msgid "Activate" +#~ msgid "Activate backports" +#~ msgstr "激活" + #~ msgid "Restoring" #~ msgstr "恢复中" @@ -7655,9 +7955,6 @@ msgstr "古吉拉特语" #~ msgid "Manage" #~ msgstr "管理" -#~ msgid "Create" -#~ msgstr "创建" - #~ msgid "The voucher you received with your {box_name} Danube Edition" #~ msgstr "您收到的您的 {box_name} Danube 版本优惠卷" @@ -7883,11 +8180,6 @@ msgstr "古吉拉特语" #~ msgid "Restore apps" #~ msgstr "reStore" -#, fuzzy -#~| msgid "Create User" -#~ msgid "Backup archives" -#~ msgstr "创建用户" - #~ msgid "Software Upgrades" #~ msgstr "软件升级" @@ -8018,9 +8310,6 @@ msgstr "古吉拉特语" #~ msgid "BitTorrent" #~ msgstr "Deluge BitTorrent 客户端" -#~ msgid "admin" -#~ msgstr "管理员" - #~ msgid "wiki" #~ msgstr "维基" diff --git a/plinth/menu.py b/plinth/menu.py index ea7d31387..97c811c7e 100644 --- a/plinth/menu.py +++ b/plinth/menu.py @@ -19,8 +19,15 @@ class Menu(app.FollowerComponent): short_description is an optional description shown on the menu item. - icon is the icon to be displayed for the menu item. Choose from the - Fork Awesome set: https://forkawesome.github.io/Fork-Awesome/icons/ + icon is the icon to be displayed for the menu item. Icon can be the + name of a glyphicon from the Fork Awesome font's icon set: + https://forkawesome.github.io/Fork-Awesome/icons/. In this case, the + icon name starts with the string 'fa-'. Alternatively, the icon can + also be a file under the directory static/theme/icons/, provided + without an extension. SVG icons are preferred. Currently, both PNG and + SVG icons with the same name are used. For example, if the value of + icon is 'myapp', then two icons files static/theme/icons/myapp.svg and + static/theme/icons/myapp.png are used in the interface. url_name is the name of url location that will be activated when the menu item is selected. This is not optional. url_args and url_kwargs diff --git a/plinth/module_loader.py b/plinth/module_loader.py index 8d019eec2..dd4edaff4 100644 --- a/plinth/module_loader.py +++ b/plinth/module_loader.py @@ -5,13 +5,14 @@ Discover, load and manage FreedomBox applications. import collections import importlib +import inspect import logging import pathlib import re import django -from plinth import cfg, setup +from plinth import app, cfg, setup from plinth.signals import post_module_loading, pre_module_loading logger = logging.getLogger(__name__) @@ -109,18 +110,24 @@ def _include_module_urls(module_import_path, module_name): def _initialize_module(module_name, module): - """Call initialization method in the module if it exists""" + """Perform module initialization""" + # Perform setup related initialization on the module setup.init(module_name, module) try: - init = module.init - except AttributeError: - logger.debug('No init() for module - %s', module.__name__) - return + module_classes = inspect.getmembers(module, inspect.isclass) + app_class = [ + cls for cls in module_classes if issubclass(cls[1], app.App) + ] + if module_classes and app_class: + module.app = app_class[0][1]() - try: - init() + if module.setup_helper.get_state( + ) != 'needs-setup' and module.app.is_enabled(): + module.app.set_enabled(True) + + logger.debug("Initialized %s", module.__name__) except Exception as exception: logger.exception('Exception while running init for %s: %s', module, exception) diff --git a/plinth/modules/apache/__init__.py b/plinth/modules/apache/__init__.py index c598a6930..21567731c 100644 --- a/plinth/modules/apache/__init__.py +++ b/plinth/modules/apache/__init__.py @@ -13,7 +13,7 @@ from plinth.modules.firewall.components import Firewall from plinth.modules.letsencrypt.components import LetsEncrypt from plinth.utils import format_lazy -version = 7 +version = 8 is_essential = True @@ -56,13 +56,6 @@ class ApacheApp(app_module.App): self.add(daemon) -def init(): - """Initailze firewall module""" - global app - app = ApacheApp() - app.set_enabled(True) - - def setup(helper, old_version=None): """Configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/avahi/__init__.py b/plinth/modules/avahi/__init__.py index 7c44b2e75..ab16e2f95 100644 --- a/plinth/modules/avahi/__init__.py +++ b/plinth/modules/avahi/__init__.py @@ -76,19 +76,13 @@ class AvahiApp(app_module.App): daemon = Daemon('daemon-avahi', managed_services[0]) self.add(daemon) + if self.is_enabled(): + domain_added.send_robust(sender='avahi', + domain_type='domain-type-local', + name=get_hostname() + '.local', + services='__all__') -def init(): - """Initialize the service discovery module.""" - global app - app = AvahiApp() - if app.is_enabled(): - domain_added.send_robust(sender='avahi', - domain_type='domain-type-local', - name=get_hostname() + '.local', - services='__all__') - app.set_enabled(True) - - post_hostname_change.connect(on_post_hostname_change) + post_hostname_change.connect(on_post_hostname_change) def setup(helper, old_version=None): diff --git a/plinth/modules/backups/__init__.py b/plinth/modules/backups/__init__.py index 3e81ebab7..ed7991451 100644 --- a/plinth/modules/backups/__init__.py +++ b/plinth/modules/backups/__init__.py @@ -20,6 +20,8 @@ from . import api version = 2 +is_essential = True + managed_packages = ['borgbackup', 'sshfs'] depends = ['storage'] @@ -54,16 +56,6 @@ class BackupsApp(app_module.App): self.add(menu_item) -def init(): - """Initialize the module.""" - global app - app = BackupsApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/backups/forms.py b/plinth/modules/backups/forms.py index 60178e54f..08e813097 100644 --- a/plinth/modules/backups/forms.py +++ b/plinth/modules/backups/forms.py @@ -47,7 +47,7 @@ def _get_repository_choices(): class CreateArchiveForm(forms.Form): - repository = forms.ChoiceField() + repository = forms.ChoiceField(label=_('Repository')) name = forms.RegexField( label=_('Name'), help_text=_('(Optional) Set a name for this backup archive'), @@ -95,7 +95,7 @@ def repository_validator(path): hostname = hostname.split('%')[0] # Validate username using Unix username regex - if not re.match(r'[a-z_][a-z0-9_-]*$', username): + if not re.match(r'[a-z0-9_][a-z0-9_-]*$', username): raise ValidationError(_(f'Invalid username: {username}')) # The hostname should either be a valid IP address or hostname @@ -119,7 +119,7 @@ class EncryptedBackupsMixin(forms.Form): label=_('Encryption'), help_text=format_lazy( _('"Key in Repository" means that a ' 'password-protected key is stored with the backup.')), - choices=[('repokey', 'Key in Repository'), ('none', 'None')]) + choices=[('repokey', _('Key in Repository')), ('none', _('None'))]) encryption_passphrase = forms.CharField( label=_('Passphrase'), help_text=_('Passphrase; Only needed when using encryption.'), diff --git a/plinth/modules/backups/tests/test_validators.py b/plinth/modules/backups/tests/test_validators.py index 7d3a1f859..394a6d2ae 100644 --- a/plinth/modules/backups/tests/test_validators.py +++ b/plinth/modules/backups/tests/test_validators.py @@ -34,8 +34,10 @@ def test_repository_paths_validation(): def test_repository_username_validation(): """Test that usernames in repository string are validated properly.""" - valid_usernames = ['sshuser', 'cypher_punk-2077', '_user', '_-_'] - invalid_usernames = ['1two', 'somebody else'] + valid_usernames = [ + 'sshuser', 'cypher_punk-2077', '_user', '_-_', '1two', '1234' + ] + invalid_usernames = ['somebody else'] path_string = '{}@example.org:~/backups' _validate_repository(valid_usernames, invalid_usernames, path_string) diff --git a/plinth/modules/bepasty/__init__.py b/plinth/modules/bepasty/__init__.py new file mode 100644 index 000000000..597d87513 --- /dev/null +++ b/plinth/modules/bepasty/__init__.py @@ -0,0 +1,127 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +FreedomBox app for bepasty. +""" + +import json + +from django.utils.translation import ugettext_lazy as _ + +from plinth import actions +from plinth import app as app_module +from plinth import frontpage, menu +from plinth.modules.apache.components import Uwsgi, Webserver +from plinth.modules.firewall.components import Firewall + +from .manifest import backup, clients # noqa, pylint: disable=unused-import + +version = 1 + +managed_packages = ['bepasty', 'uwsgi', 'uwsgi-plugin-python3'] + +managed_services = ['uwsgi'] + +_description = [ + _('bepasty is a web application that allows large files to be uploaded ' + 'and shared. Text and code snippets can also be pasted and shared. ' + 'Text, image, audio, video and PDF documents can be previewed in the ' + 'browser. Shared files can be set to expire after a time period.'), + _('bepasty does not use usernames for login. It only uses passwords. For ' + 'each password, a set of permissions can be selected. Once you have ' + 'created a password, you can share it with the users who should have the' + ' associated permissions.'), + _('You can also create multiple passwords with the same set of privileges,' + ' and distribute them to different people or groups. This will allow ' + 'you to later revoke access for a single person or group, by removing ' + 'their password from the list.'), +] + +app = None + +PERMISSIONS = { + 'read': _('Read a file, if a web link to the file is available'), + 'create': _('Create or upload files'), + 'list': _('List all files and their web links'), + 'delete': _('Delete files'), + 'admin': _('Administer files: lock/unlock files'), +} + +DEFAULT_PERMISSIONS = { + '': _('None, password is always required'), + 'read': _('Read a file, if a web link to the file is available'), + 'read list': _('List and read all files'), +} + + +class BepastyApp(app_module.App): + """FreedomBox app for bepasty.""" + + app_id = 'bepasty' + + def __init__(self): + """Create components for the app.""" + super().__init__() + + info = app_module.Info(self.app_id, version, name=_('bepasty'), + icon_filename='bepasty', + short_description=_('File & Snippet Sharing'), + description=_description, manual_page='bepasty', + clients=clients) + self.add(info) + + menu_item = menu.Menu('menu-bepasty', info.name, + info.short_description, info.icon_filename, + 'bepasty:index', parent_url_name='apps') + self.add(menu_item) + + shortcut = frontpage.Shortcut('shortcut-bepasty', info.name, + info.short_description, + info.icon_filename, '/bepasty', + clients=clients) + self.add(shortcut) + + firewall = Firewall('firewall-bepasty', info.name, + ports=['http', 'https'], is_external=True) + self.add(firewall) + + uwsgi = Uwsgi('uwsgi-bepasty', 'bepasty-freedombox') + self.add(uwsgi) + + webserver = Webserver('webserver-bepasty', 'bepasty-freedombox', + urls=['https://{host}/bepasty/']) + self.add(webserver) + + +def setup(helper, old_version=None): + """Install and configure the module.""" + helper.install(managed_packages) + helper.call('post', actions.superuser_run, 'bepasty', + ['setup', '--domain-name', 'freedombox.local']) + helper.call('post', app.enable) + + +def get_configuration(): + """Get a full configuration including passwords and defaults.""" + output = actions.superuser_run('bepasty', ['get-configuration']) + return json.loads(output) + + +def add_password(permissions, comment=None): + """Generate a password with given permissions.""" + command = ['add-password', '--permissions'] + permissions + if comment: + command += ['--comment', comment] + + actions.superuser_run('bepasty', command) + + +def remove_password(password): + """Remove a password and its permissions.""" + actions.superuser_run('bepasty', ['remove-password'], + input=password.encode()) + + +def set_default_permissions(permissions): + """Set default permissions.""" + perm = permissions.split() + actions.superuser_run('bepasty', ['set-default', '--permissions'] + perm) diff --git a/plinth/modules/bepasty/data/etc/apache2/conf-available/bepasty-freedombox.conf b/plinth/modules/bepasty/data/etc/apache2/conf-available/bepasty-freedombox.conf new file mode 100644 index 000000000..7ca23e624 --- /dev/null +++ b/plinth/modules/bepasty/data/etc/apache2/conf-available/bepasty-freedombox.conf @@ -0,0 +1,16 @@ +## +## On all sites, provide bepasty on a path: /bepasty +## + +# Redirect /bepasty to /bepasty/ + + + RewriteEngine On + RewriteCond %{REQUEST_URI} ^/bepasty$ + RewriteRule .* /bepasty/ [R=301,L] + + + + + ProxyPass unix:/run/uwsgi/app/bepasty-freedombox/socket|uwsgi://bepasty/ + diff --git a/plinth/modules/bepasty/data/etc/plinth/modules-enabled/bepasty b/plinth/modules/bepasty/data/etc/plinth/modules-enabled/bepasty new file mode 100644 index 000000000..3e53798b2 --- /dev/null +++ b/plinth/modules/bepasty/data/etc/plinth/modules-enabled/bepasty @@ -0,0 +1 @@ +plinth.modules.bepasty diff --git a/plinth/modules/bepasty/data/etc/uwsgi/apps-available/bepasty-freedombox.ini b/plinth/modules/bepasty/data/etc/uwsgi/apps-available/bepasty-freedombox.ini new file mode 100644 index 000000000..8fada8377 --- /dev/null +++ b/plinth/modules/bepasty/data/etc/uwsgi/apps-available/bepasty-freedombox.ini @@ -0,0 +1,31 @@ +# Use packaged file after #966314 is done. + +[uwsgi] +# Who will run the code +uid = bepasty +gid = bepasty + +# disable logging for privacy +#disable-logging = true + +autoload = false + +# Number of workers (usually CPU count) +workers = 2 + +# The right granted on the created socket +chmod-socket = 660 + +# Plugin to use and interpretor config +single-interpreter = true +master = true +plugin = python3 +enable-threads = true +lazy-apps = true + +# Module to import +module = bepasty.wsgi +env = BEPASTY_CONFIG=/etc/bepasty-freedombox.conf + +pythonpath = /usr/lib/python3/dist-packages/ +buffer-size = 32768 diff --git a/plinth/modules/bepasty/forms.py b/plinth/modules/bepasty/forms.py new file mode 100644 index 000000000..9d5e1740e --- /dev/null +++ b/plinth/modules/bepasty/forms.py @@ -0,0 +1,34 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Django forms for bepasty app. +""" + +from django import forms +from django.utils.translation import ugettext_lazy as _ + +from plinth.modules import bepasty + + +class SetDefaultPermissionsForm(forms.Form): + """Form to set default permissions""" + default_permissions = forms.ChoiceField( + choices=bepasty.DEFAULT_PERMISSIONS.items(), required=False, + widget=forms.RadioSelect(), + label=_('Public Access (default permissions)'), + help_text=_('Permissions for anonymous users, who have not provided a ' + 'password.')) + + +class AddPasswordForm(forms.Form): + """Form to add a new password.""" + + permissions = forms.MultipleChoiceField( + choices=bepasty.PERMISSIONS.items(), + widget=forms.CheckboxSelectMultiple, label=_('Permissions'), + help_text=_( + 'Users that log in with this password will have the selected ' + 'permissions.')) + + comment = forms.CharField( + label=_('Comment'), required=False, strip=True, help_text=_( + 'Any comment to help you remember the purpose of this password.')) diff --git a/plinth/modules/coquelicot/manifest.py b/plinth/modules/bepasty/manifest.py similarity index 57% rename from plinth/modules/coquelicot/manifest.py rename to plinth/modules/bepasty/manifest.py index c128a3fbf..1f267e1c6 100644 --- a/plinth/modules/coquelicot/manifest.py +++ b/plinth/modules/bepasty/manifest.py @@ -3,22 +3,22 @@ from django.utils.translation import ugettext_lazy as _ from plinth.clients import validate -from plinth.modules.backups.api import validate as validate_backups +from plinth.modules.backups.api import validate as validate_backup clients = validate([{ - 'name': _('coquelicot'), + 'name': _('bepasty'), 'platforms': [{ 'type': 'web', - 'url': '/coquelicot' + 'url': '/bepasty' }] }]) -backup = validate_backups({ +backup = validate_backup({ + 'config': { + 'files': ['/etc/bepasty-freedombox.conf'] + }, 'data': { - 'directories': ['/var/lib/coquelicot'] + 'directories': ['/var/lib/bepasty'] }, - 'secrets': { - 'files': ['/etc/coquelicot/settings.yml'] - }, - 'services': ['coquelicot'] + 'services': ['uwsgi'], }) diff --git a/plinth/modules/bepasty/templates/bepasty.html b/plinth/modules/bepasty/templates/bepasty.html new file mode 100644 index 000000000..28cab6fff --- /dev/null +++ b/plinth/modules/bepasty/templates/bepasty.html @@ -0,0 +1,56 @@ +{% extends "app.html" %} +{% comment %} +# SPDX-License-Identifier: AGPL-3.0-or-later +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} + +{% block configuration %} + {{ block.super }} + +

    {% trans "Manage Passwords" %}

    + + + + {% if not passwords %} +

    {% trans 'No passwords currently configured.' %}

    + {% else %} + + + + + + + + + + + + {% for password in passwords %} + + + + + + + {% endfor %} + +
    {% trans "Password" %}{% trans "Permissions" %}{% trans "Comment" %}
    {{ password.password }}{{ password.permissions }}{{ password.comment }} +
    + {% csrf_token %} + +
    +
    + {% endif %} + +{% endblock %} diff --git a/plinth/modules/bepasty/templates/bepasty_add.html b/plinth/modules/bepasty/templates/bepasty_add.html new file mode 100644 index 000000000..3b9f384c8 --- /dev/null +++ b/plinth/modules/bepasty/templates/bepasty_add.html @@ -0,0 +1,23 @@ +{% extends "base.html" %} +{% comment %} +# SPDX-License-Identifier: AGPL-3.0-or-later +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} +{% load static %} + +{% block content %} + +

    {{ title }}

    + +
    + {% csrf_token %} + + {{ form|bootstrap }} + + +
    + +{% endblock %} diff --git a/plinth/modules/coquelicot/tests/__init__.py b/plinth/modules/bepasty/tests/__init__.py similarity index 100% rename from plinth/modules/coquelicot/tests/__init__.py rename to plinth/modules/bepasty/tests/__init__.py diff --git a/plinth/modules/bepasty/tests/bepasty.feature b/plinth/modules/bepasty/tests/bepasty.feature new file mode 100644 index 000000000..13c3166ee --- /dev/null +++ b/plinth/modules/bepasty/tests/bepasty.feature @@ -0,0 +1,52 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later + +@apps @bepasty +Feature: bepasty File Sharing + Run bepasty file upload and sharing app. + +Background: + Given I'm a logged in user + Given the bepasty application is installed + +Scenario: Enable bepasty application + Given the bepasty application is disabled + When I enable the bepasty application + Then the bepasty site should be available + +Scenario: Set default permissions to List and read all files + Given the bepasty application is enabled + And I am not logged in to bepasty + When I set the default permissions to List and read all files + Then I should be able to List all Items in bepasty + +Scenario: Set default permissions to Read files + Given the bepasty application is enabled + And I am not logged in to bepasty + When I set the default permissions to Read files + Then I should not be able to List all Items in bepasty + +Scenario: Add password + Given the bepasty application is enabled + When I add a bepasty password + Then I should be able to login to bepasty with that password + +Scenario: Remove password + Given the bepasty application is enabled + When I add a bepasty password + When I remove all bepasty passwords + Then I should not be able to login to bepasty with that password + +@backups +Scenario: Backup and restore bepasty + Given the bepasty application is enabled + When I add a bepasty password + And I create a backup of the bepasty app data with name test_bepasty + And I remove all bepasty passwords + And I restore the bepasty app data backup with name test_bepasty + Then the bepasty site should be available + And I should be able to login to bepasty with that password + +Scenario: Disable bepasty application + Given the bepasty application is enabled + When I disable the bepasty application + Then the bepasty site should not be available diff --git a/plinth/modules/bepasty/tests/test_functional.py b/plinth/modules/bepasty/tests/test_functional.py new file mode 100644 index 000000000..36449227d --- /dev/null +++ b/plinth/modules/bepasty/tests/test_functional.py @@ -0,0 +1,117 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Functional, browser based tests for bepasty app. +""" + +from pytest_bdd import given, scenarios, then, when + +from plinth.tests import functional + +scenarios('bepasty.feature') + +last_password_added = None + + +@given('I am not logged in to bepasty') +def not_logged_in(session_browser): + _logout(session_browser) + + +@when('I set the default permissions to Read files') +def set_default_permissions_read(session_browser): + _set_default_permissions(session_browser, 'read') + + +@when('I set the default permissions to List and read all files') +def set_default_permissions_list_read(session_browser): + _set_default_permissions(session_browser, 'read list') + + +@when('I add a bepasty password') +def add_password(session_browser): + global last_password_added + _remove_all_passwords(session_browser) + _add_password(session_browser) + last_password_added = _get_password(session_browser) + + +@when('I remove all bepasty passwords') +def remove_all_passwords(session_browser): + _remove_all_passwords(session_browser) + + +@then('I should be able to login to bepasty with that password') +def should_login(session_browser): + assert _can_login(session_browser, last_password_added) + + +@then('I should not be able to login to bepasty with that password') +def should_not_login(session_browser): + assert not _can_login(session_browser, last_password_added) + + +@then('I should be able to List all Items in bepasty') +def should_list_all(session_browser): + assert _can_list_all(session_browser) + + +@then('I should not be able to List all Items in bepasty') +def should_not_list_all(session_browser): + assert _cannot_list_all(session_browser) + + +def _set_default_permissions(browser, permissions=''): + functional.nav_to_module(browser, 'bepasty') + browser.choose('default_permissions', permissions) + functional.submit(browser, form_class='form-configuration') + + +def _add_password(browser): + functional.visit(browser, '/plinth/apps/bepasty/add') + for permission in ['read', 'create', 'list', 'delete', 'admin']: + browser.find_by_css('#id_bepasty-permissions input[value="{}"]'.format( + permission)).check() + browser.fill('bepasty-comment', 'bepasty functional test') + functional.submit(browser, form_class='form-add') + + +def _remove_all_passwords(browser): + functional.nav_to_module(browser, 'bepasty') + while True: + remove_button = browser.find_by_css('.password-remove') + if remove_button: + functional.submit(browser, remove_button) + else: + break + + +def _get_password(browser): + functional.nav_to_module(browser, 'bepasty') + return browser.find_by_css('.password-password').first.text + + +def _can_login(browser, password): + _logout(browser) + browser.fill('token', password) + login = browser.find_by_xpath('//form//button') + functional.submit(browser, login, '/bepasty') + + return bool(browser.find_by_value('Logout')) + + +def _logout(browser): + functional.visit(browser, '/bepasty') + logout = browser.find_by_value('Logout') + if logout: + logout.click() + + +def _can_list_all(browser): + functional.visit(browser, '/bepasty') + return functional.eventually(browser.links.find_by_href, + ['/bepasty/+list'], 5) + + +def _cannot_list_all(browser): + functional.visit(browser, '/bepasty/+list') + return functional.eventually(browser.is_text_present, ['Forbidden'], 5) diff --git a/plinth/modules/bepasty/urls.py b/plinth/modules/bepasty/urls.py new file mode 100644 index 000000000..544703b0a --- /dev/null +++ b/plinth/modules/bepasty/urls.py @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +URLs for the bepasty module. +""" + +from django.conf.urls import url + +from .views import AddPasswordView, BepastyView, remove + +urlpatterns = [ + url(r'^apps/bepasty/$', BepastyView.as_view(), name='index'), + url(r'^apps/bepasty/add/$', AddPasswordView.as_view(), name='add'), + url(r'^apps/bepasty/(?P[A-Za-z0-9]+)/remove/$', remove, + name='remove'), +] diff --git a/plinth/modules/bepasty/views.py b/plinth/modules/bepasty/views.py new file mode 100644 index 000000000..e0bf68192 --- /dev/null +++ b/plinth/modules/bepasty/views.py @@ -0,0 +1,120 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +""" +Views for the bepasty app. +""" + +from django.contrib import messages +from django.contrib.messages.views import SuccessMessageMixin +from django.shortcuts import redirect +from django.urls import reverse_lazy +from django.utils.translation import ugettext_lazy as _ +from django.views.decorators.http import require_POST +from django.views.generic import FormView + +from plinth.errors import ActionError +from plinth.modules import bepasty +from plinth.views import AppView + +from .forms import AddPasswordForm, SetDefaultPermissionsForm + + +class BepastyView(AppView): + """Serve configuration page.""" + app_id = 'bepasty' + form_class = SetDefaultPermissionsForm + template_name = 'bepasty.html' + + def __init__(self, *args, **kwargs): + """Initialize the view.""" + super().__init__(*args, **kwargs) + self.conf = None + + def _get_configuration(self): + """Return the current configuration.""" + if not self.conf: + self.conf = bepasty.get_configuration() + + return self.conf + + def get_context_data(self, **kwargs): + """Return additional context for rendering the template.""" + permissions_short_text = { + 'read': _('Read'), + 'create': _('Create'), + 'list': _('List'), + 'delete': _('Delete'), + 'admin': _('Admin') + } + context = super().get_context_data(**kwargs) + conf = self._get_configuration() + passwords = [] + for password, permissions in conf['PERMISSIONS'].items(): + permissions = permissions.split(',') + permissions = [ + str(permissions_short_text[permission]) + for permission in permissions if permission + ] + passwords.append({ + 'password': password, + 'permissions': ', '.join(permissions), + 'comment': conf['PERMISSION_COMMENTS'].get(password) or '' + }) + context['passwords'] = passwords + return context + + def get_initial(self): + """Return the status of the service to fill in the form.""" + initial = super().get_initial() + default = self._get_configuration().get('DEFAULT_PERMISSIONS', '') + default = ' '.join(default.split(',')) + default = 'read list' if default == 'list read' else default + initial['default_permissions'] = default + return initial + + def form_valid(self, form): + """Apply the changes submitted in the form.""" + old_data = form.initial + form_data = form.cleaned_data + + if old_data['default_permissions'] != form_data['default_permissions']: + try: + bepasty.set_default_permissions( + form_data['default_permissions']) + messages.success(self.request, _('Configuration updated.')) + except ActionError: + messages.error(self.request, + _('An error occurred during configuration.')) + + return super().form_valid(form) + + +class AddPasswordView(SuccessMessageMixin, FormView): + """View to add a new password.""" + form_class = AddPasswordForm + prefix = 'bepasty' + template_name = 'bepasty_add.html' + success_url = reverse_lazy('bepasty:index') + success_message = _('Password added.') + + def get_context_data(self, **kwargs): + """Return additional context for rendering the template.""" + context = super().get_context_data(**kwargs) + context['title'] = _('Add Password') + return context + + def form_valid(self, form): + """Add the password on valid form submission.""" + _add_password(form.cleaned_data) + return super().form_valid(form) + + +def _add_password(form_data): + bepasty.add_password(form_data['permissions'], form_data['comment']) + + +@require_POST +def remove(request, password): + """View to remove a password.""" + bepasty.remove_password(password) + messages.success(request, _('Password deleted.')) + return redirect(reverse_lazy('bepasty:index')) diff --git a/plinth/modules/bind/__init__.py b/plinth/modules/bind/__init__.py index 80f0dc70e..bf5a8f097 100644 --- a/plinth/modules/bind/__init__.py +++ b/plinth/modules/bind/__init__.py @@ -36,11 +36,6 @@ _description = [ box_name=_(cfg.box_name)), ] -port_forwarding_info = [ - ('TCP', 53), - ('UDP', 53), -] - CONFIG_FILE = '/etc/bind/named.conf.options' ZONES_DIR = '/var/bind/pri' @@ -102,16 +97,6 @@ class BindApp(app_module.App): self.add(daemon) -def init(): - """Initialize the BIND module.""" - global app - app = BindApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/bind/views.py b/plinth/modules/bind/views.py index ab0cf9a55..d244687d4 100644 --- a/plinth/modules/bind/views.py +++ b/plinth/modules/bind/views.py @@ -7,10 +7,10 @@ from django.contrib import messages from django.utils.translation import ugettext_lazy as _ from plinth import actions -from plinth.views import AppView from plinth.modules import bind, names +from plinth.views import AppView -from . import get_config, port_forwarding_info +from . import get_config from .forms import BindForm @@ -19,7 +19,6 @@ class BindAppView(AppView): # pylint: disable=too-many-ancestors app_id = 'bind' form_class = BindForm template_name = 'bind.html' - port_forwarding_info = port_forwarding_info def get_context_data(self, *args, **kwargs): """ diff --git a/plinth/modules/cockpit/__init__.py b/plinth/modules/cockpit/__init__.py index 2d001fe4a..c1cf08767 100644 --- a/plinth/modules/cockpit/__init__.py +++ b/plinth/modules/cockpit/__init__.py @@ -91,18 +91,8 @@ class CockpitApp(app_module.App): daemon = Daemon('daemon-cockpit', managed_services[0]) self.add(daemon) - -def init(): - """Initialize the module.""" - global app - app = CockpitApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - domain_added.connect(on_domain_added) - domain_removed.connect(on_domain_removed) + domain_added.connect(on_domain_added) + domain_removed.connect(on_domain_removed) def setup(helper, old_version=None): diff --git a/plinth/modules/config/__init__.py b/plinth/modules/config/__init__.py index 0ad1bbf06..a0c60f932 100644 --- a/plinth/modules/config/__init__.py +++ b/plinth/modules/config/__init__.py @@ -62,6 +62,13 @@ class ConfigApp(app_module.App): 'config:index', can_have_certificate=True) self.add(domain_type) + # Register domain with Name Services module. + domainname = get_domainname() + if domainname: + domain_added.send_robust(sender='config', + domain_type='domain-type-static', + name=domainname, services='__all__') + def get_domainname(): """Return the domainname""" @@ -142,20 +149,6 @@ def set_advanced_mode(advanced_mode): kvstore.set(ADVANCED_MODE_KEY, advanced_mode) -def init(): - """Initialize the module""" - global app - app = ConfigApp() - app.set_enabled(True) - - # Register domain with Name Services module. - domainname = get_domainname() - if domainname: - domain_added.send_robust(sender='config', - domain_type='domain-type-static', - name=domainname, services='__all__') - - def setup(helper, old_version=None): """Install and configure the module.""" _migrate_home_page_config() diff --git a/plinth/modules/config/forms.py b/plinth/modules/config/forms.py index 70f4dfed1..2194a0a7f 100644 --- a/plinth/modules/config/forms.py +++ b/plinth/modules/config/forms.py @@ -88,6 +88,7 @@ class ConfigurationForm(forms.Form): choices=get_homepage_choices) advanced_mode = forms.BooleanField( - label=_('Show advanced apps and features'), required=False, - help_text=_('Show apps and features that require more technical ' - 'knowledge.')) + label=ugettext_lazy('Show advanced apps and features'), required=False, + help_text=ugettext_lazy( + 'Show apps and features that require more technical ' + 'knowledge.')) diff --git a/plinth/modules/coquelicot/__init__.py b/plinth/modules/coquelicot/__init__.py deleted file mode 100644 index 1501cde6a..000000000 --- a/plinth/modules/coquelicot/__init__.py +++ /dev/null @@ -1,96 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Plinth module to configure coquelicot. -""" - -from django.utils.translation import ugettext_lazy as _ - -from plinth import actions -from plinth import app as app_module -from plinth import frontpage, menu -from plinth.daemon import Daemon -from plinth.modules.apache.components import Webserver -from plinth.modules.firewall.components import Firewall - -from .manifest import backup, clients # noqa, pylint: disable=unused-import - -version = 1 - -managed_services = ['coquelicot'] - -managed_packages = ['coquelicot'] - -_description = [ - _('Coquelicot is a "one-click" file sharing web application with a focus ' - 'on protecting users\' privacy. It is best used for quickly sharing a ' - 'single file. '), - _('This Coquelicot instance is exposed to the public but requires an ' - 'upload password to prevent unauthorized access. You can set a new ' - 'upload password in the form that will appear below after installation. ' - 'The default upload password is "test".') -] - -app = None - - -class CoquelicotApp(app_module.App): - """FreedomBox app for Coquelicot.""" - - app_id = 'coquelicot' - - def __init__(self): - """Create components for the app.""" - super().__init__() - info = app_module.Info(app_id=self.app_id, version=version, - name=_('Coquelicot'), - icon_filename='coquelicot', - short_description=_('File Sharing'), - description=_description, - manual_page='Coquelicot', clients=clients) - self.add(info) - - menu_item = menu.Menu('menu-coquelicot', info.name, - info.short_description, info.icon_filename, - 'coquelicot:index', parent_url_name='apps') - self.add(menu_item) - - shortcut = frontpage.Shortcut('shortcut-coquelicot', info.name, - short_description=info.short_description, - icon='coquelicot', url='/coquelicot', - clients=info.clients, - login_required=True) - self.add(shortcut) - - firewall = Firewall('firewall-coquelicot', info.name, - ports=['http', 'https'], is_external=True) - self.add(firewall) - - webserver = Webserver('webserver-coquelicot', 'coquelicot-freedombox', - urls=['https://{host}/coquelicot']) - self.add(webserver) - - daemon = Daemon('daemon-coquelicot', managed_services[0]) - self.add(daemon) - - -def init(): - """Initialize the module.""" - global app - app = CoquelicotApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - -def setup(helper, old_version=None): - """Install and configure the module.""" - helper.install(managed_packages) - helper.call('post', actions.superuser_run, 'coquelicot', ['setup']) - helper.call('post', app.enable) - - -def get_current_max_file_size(): - """Get the current value of maximum file size.""" - size = actions.superuser_run('coquelicot', ['get-max-file-size']) - return int(size.strip()) diff --git a/plinth/modules/coquelicot/data/etc/apache2/conf-available/coquelicot-freedombox.conf b/plinth/modules/coquelicot/data/etc/apache2/conf-available/coquelicot-freedombox.conf deleted file mode 100644 index 0fe851e83..000000000 --- a/plinth/modules/coquelicot/data/etc/apache2/conf-available/coquelicot-freedombox.conf +++ /dev/null @@ -1,5 +0,0 @@ - - ProxyPass http://127.0.0.1:51161/coquelicot - SetEnv proxy-sendchunks 1 - RequestHeader set X-Forwarded-SSL "on" - diff --git a/plinth/modules/coquelicot/data/etc/plinth/modules-enabled/coquelicot b/plinth/modules/coquelicot/data/etc/plinth/modules-enabled/coquelicot deleted file mode 100644 index fa55f19dc..000000000 --- a/plinth/modules/coquelicot/data/etc/plinth/modules-enabled/coquelicot +++ /dev/null @@ -1 +0,0 @@ -#plinth.modules.coquelicot diff --git a/plinth/modules/coquelicot/forms.py b/plinth/modules/coquelicot/forms.py deleted file mode 100644 index b418b844c..000000000 --- a/plinth/modules/coquelicot/forms.py +++ /dev/null @@ -1,20 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Plinth form for configuring Coquelicot. -""" - -from django import forms -from django.utils.translation import ugettext_lazy as _ - - -class CoquelicotForm(forms.Form): # pylint: disable=W0232 - """Coquelicot configuration form.""" - upload_password = forms.CharField( - label=_('Upload Password'), - help_text=_('Set a new upload password for Coquelicot. ' - 'Leave this field blank to keep the current password.'), - required=False, widget=forms.PasswordInput) - max_file_size = forms.IntegerField( - label=_("Maximum File Size (in MiB)"), help_text=_( - 'Set the maximum size of the files that can be uploaded to ' - 'Coquelicot.'), required=False, min_value=0) diff --git a/plinth/modules/coquelicot/tests/coquelicot.feature b/plinth/modules/coquelicot/tests/coquelicot.feature deleted file mode 100644 index f15c4788c..000000000 --- a/plinth/modules/coquelicot/tests/coquelicot.feature +++ /dev/null @@ -1,57 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later - -@apps @coquelicot @backups @skip -Feature: Coquelicot File Sharing - Run Coquelicot File Sharing server. - -Background: - Given I'm a logged in user - Given the coquelicot application is installed - -Scenario: Enable coquelicot application - Given the coquelicot application is disabled - When I enable the coquelicot application - Then the coquelicot service should be running - -Scenario: Modify maximum upload size - Given the coquelicot application is enabled - When I modify the maximum file size of coquelicot to 256 - Then the maximum file size of coquelicot should be 256 - -Scenario: Modify upload password - Given the coquelicot application is enabled - When I modify the coquelicot upload password to whatever123 - Then I should be able to login to coquelicot with password whatever123 - -Scenario: Modify maximum upload size in disabled case - Given the coquelicot application is disabled - When I modify the maximum file size of coquelicot to 123 - Then the coquelicot service should not be running - -Scenario: Upload a file to coquelicot - Given the coquelicot application is enabled - And a sample local file - When I modify the coquelicot upload password to whatever123 - And I upload the sample local file to coquelicot with password whatever123 - And I download the uploaded file from coquelicot - Then contents of downloaded sample file should be same as sample local file - -Scenario: Backup and restore coquelicot - Given the coquelicot application is enabled - When I modify the coquelicot upload password to beforebackup123 - And I modify the maximum file size of coquelicot to 128 - And I upload the sample local file to coquelicot with password beforebackup123 - And I create a backup of the coquelicot app data with name test_coquelicot - And I modify the coquelicot upload password to afterbackup123 - And I modify the maximum file size of coquelicot to 64 - And I restore the coquelicot app data backup with name test_coquelicot - And I download the uploaded file from coquelicot - Then the coquelicot service should be running - And I should be able to login to coquelicot with password beforebackup123 - And the maximum file size of coquelicot should be 128 - And contents of downloaded sample file should be same as sample local file - -Scenario: Disable coquelicot application - Given the coquelicot application is enabled - When I disable the coquelicot application - Then the coquelicot service should not be running diff --git a/plinth/modules/coquelicot/tests/test_functional.py b/plinth/modules/coquelicot/tests/test_functional.py deleted file mode 100644 index e8c8a08fe..000000000 --- a/plinth/modules/coquelicot/tests/test_functional.py +++ /dev/null @@ -1,126 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Functional, browser based tests for coquelicot app. -""" - -import random -import tempfile - -from pytest_bdd import given, parsers, scenarios, then, when -from selenium.webdriver.common.action_chains import ActionChains -from selenium.webdriver.common.keys import Keys - -from plinth.tests import functional - -scenarios('coquelicot.feature') - - -@given('a sample local file') -def sample_local_file(): - file_path, contents = _create_sample_local_file() - return dict(file_path=file_path, contents=contents) - - -@when(parsers.parse('I modify the maximum file size of coquelicot to {size:d}') - ) -def modify_max_file_size(session_browser, size): - _modify_max_file_size(session_browser, size) - - -@then(parsers.parse('the maximum file size of coquelicot should be {size:d}')) -def assert_max_file_size(session_browser, size): - assert _get_max_file_size(session_browser) == size - - -@when(parsers.parse('I modify the coquelicot upload password to {password:w}')) -def modify_upload_password(session_browser, password): - _modify_upload_password(session_browser, password) - - -@then( - parsers.parse( - 'I should be able to login to coquelicot with password {password:w}')) -def verify_upload_password(session_browser, password): - _verify_upload_password(session_browser, password) - - -@when( - parsers.parse('I upload the sample local file to coquelicot with password ' - '{password:w}')) -def coquelicot_upload_file(session_browser, sample_local_file, password): - url = _upload_file(session_browser, sample_local_file['file_path'], - password) - sample_local_file['upload_url'] = url - - -@when('I download the uploaded file from coquelicot') -def coquelicot_download_file(sample_local_file): - file_path = functional.download_file_outside_browser( - sample_local_file['upload_url']) - sample_local_file['download_path'] = file_path - - -@then('contents of downloaded sample file should be same as sample local file') -def coquelicot_compare_upload_download_files(sample_local_file): - _compare_files(sample_local_file['file_path'], - sample_local_file['download_path']) - - -def _create_sample_local_file(): - """Create a sample file for upload using browser.""" - contents = bytearray(random.getrandbits(8) for _ in range(64)) - with tempfile.NamedTemporaryFile(delete=False) as temp_file: - temp_file.write(contents) - - return temp_file.name, contents - - -def _verify_upload_password(browser, password): - functional.visit(browser, '/coquelicot') - # ensure the password form is scrolled into view - browser.execute_script('window.scrollTo(100, 0)') - browser.find_by_id('upload_password').fill(password) - actions = ActionChains(browser.driver) - actions.send_keys(Keys.RETURN) - actions.perform() - assert functional.eventually(browser.is_element_present_by_css, - args=['div[style*="display: none;"]']) - - -def _upload_file(browser, file_path, password): - """Upload a local file from disk to coquelicot.""" - _verify_upload_password(browser, password) - browser.attach_file('file', file_path) - functional.submit(browser) - assert functional.eventually(browser.is_element_present_by_css, - args=['#content .url']) - url_textarea = browser.find_by_css('#content .url textarea').first - return url_textarea.value - - -def _modify_max_file_size(browser, size): - """Change the maximum file size of coquelicot to the given value""" - functional.visit(browser, '/plinth/apps/coquelicot/') - browser.find_by_id('id_max_file_size').fill(size) - functional.submit(browser, form_class='form-configuration') - - -def _get_max_file_size(browser): - """Get the maximum file size of coquelicot""" - functional.visit(browser, '/plinth/apps/coquelicot/') - return int(browser.find_by_id('id_max_file_size').value) - - -def _modify_upload_password(browser, password): - """Change the upload password for coquelicot to the given value""" - functional.visit(browser, '/plinth/apps/coquelicot/') - browser.find_by_id('id_upload_password').fill(password) - functional.submit(browser, form_class='form-configuration') - - -def _compare_files(file1, file2): - """Assert that the contents of two files are the same.""" - file1_contents = open(file1, 'rb').read() - file2_contents = open(file2, 'rb').read() - - assert file1_contents == file2_contents diff --git a/plinth/modules/coquelicot/urls.py b/plinth/modules/coquelicot/urls.py deleted file mode 100644 index a08863c94..000000000 --- a/plinth/modules/coquelicot/urls.py +++ /dev/null @@ -1,12 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -URLs for the coquelicot module. -""" - -from django.conf.urls import url - -from .views import CoquelicotAppView - -urlpatterns = [ - url(r'^apps/coquelicot/$', CoquelicotAppView.as_view(), name='index'), -] diff --git a/plinth/modules/coquelicot/views.py b/plinth/modules/coquelicot/views.py deleted file mode 100644 index 46d9aed0e..000000000 --- a/plinth/modules/coquelicot/views.py +++ /dev/null @@ -1,52 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Plinth views for Coquelicot. -""" - -from django.contrib import messages -from django.utils.translation import ugettext as _ - -from plinth import actions, views -from plinth.errors import ActionError -from plinth.modules.coquelicot import get_current_max_file_size - -from .forms import CoquelicotForm - - -class CoquelicotAppView(views.AppView): - """Serve configuration page.""" - app_id = 'coquelicot' - form_class = CoquelicotForm - - def get_initial(self): - """Return the status of the service to fill in the form.""" - initial = super().get_initial() - initial['max_file_size'] = get_current_max_file_size() - return initial - - def form_valid(self, form): - """Apply the changes submitted in the form.""" - form_data = form.cleaned_data - - if form_data['upload_password']: - try: - actions.superuser_run( - 'coquelicot', ['set-upload-password'], - input=form_data['upload_password'].encode()) - messages.success(self.request, _('Upload password updated')) - except ActionError: - messages.error(self.request, - _('Failed to update upload password')) - - max_file_size = form_data['max_file_size'] - if max_file_size and max_file_size != get_current_max_file_size(): - try: - actions.superuser_run( - 'coquelicot', ['set-max-file-size', - str(max_file_size)]) - messages.success(self.request, _('Maximum file size updated')) - except ActionError: - messages.error(self.request, - _('Failed to update maximum file size')) - - return super().form_valid(form) diff --git a/plinth/modules/coturn/__init__.py b/plinth/modules/coturn/__init__.py index 2f80bea4a..d5309d8f6 100644 --- a/plinth/modules/coturn/__init__.py +++ b/plinth/modules/coturn/__init__.py @@ -36,18 +36,6 @@ _description = [ 'matrix-synapse need to be configured with the details provided here.'), ] -port_forwarding_info = [ - ('UDP', 3478), - ('TCP', 3478), - ('UDP', 3479), - ('TCP', 3479), - ('UDP', 5349), - ('TCP', 5349), - ('UDP', 5350), - ('TCP', 5350), - # XXX: Add relay ports here -] - app = None @@ -99,16 +87,6 @@ class CoturnApp(app_module.App): self.add(users_and_groups) -def init(): - """Initialize the Coturn module.""" - global app - app = CoturnApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/coturn/views.py b/plinth/modules/coturn/views.py index 3d2b6c52d..d868a21b4 100644 --- a/plinth/modules/coturn/views.py +++ b/plinth/modules/coturn/views.py @@ -17,7 +17,6 @@ class CoturnAppView(views.AppView): app_id = 'coturn' template_name = 'coturn.html' form_class = forms.CoturnForm - port_forwarding_info = coturn.port_forwarding_info def get_context_data(self, **kwargs): """Return additional context for rendering the template.""" diff --git a/plinth/modules/datetime/__init__.py b/plinth/modules/datetime/__init__.py index 218ad486e..a45e410a2 100644 --- a/plinth/modules/datetime/__init__.py +++ b/plinth/modules/datetime/__init__.py @@ -92,15 +92,6 @@ class DateTimeApp(app_module.App): return self._is_time_managed() -def init(): - """Initialize the date/time module.""" - global app - app = DateTimeApp() - - if app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.call('post', app.enable) diff --git a/plinth/modules/deluge/__init__.py b/plinth/modules/deluge/__init__.py index b70bc8fb7..bb6137161 100644 --- a/plinth/modules/deluge/__init__.py +++ b/plinth/modules/deluge/__init__.py @@ -88,16 +88,6 @@ class DelugeApp(app_module.App): self.add(users_and_groups) -def init(): - """Initialize the Deluge module.""" - global app - app = DelugeApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/diagnostics/__init__.py b/plinth/modules/diagnostics/__init__.py index 3afb3303b..1984338dd 100644 --- a/plinth/modules/diagnostics/__init__.py +++ b/plinth/modules/diagnostics/__init__.py @@ -9,6 +9,7 @@ import logging import threading from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import ugettext_noop from plinth import app as app_module from plinth import daemon, menu @@ -65,13 +66,6 @@ class DiagnosticsApp(app_module.App): return results -def init(): - """Initialize the module""" - global app - app = DiagnosticsApp() - app.set_enabled(True) - - def start_task(): """Start the run task in a separate thread.""" global running_task @@ -103,6 +97,12 @@ def run_on_all_enabled_modules(): 'progress_percentage': 0 } + # Three result strings returned by tests, mark for translation and + # translate later. + ugettext_noop('passed') + ugettext_noop('failed') + ugettext_noop('error') + apps = [] for app in app_module.App.list(): # XXX: Implement more cleanly. diff --git a/plinth/modules/diagnostics/templates/diagnostics_button.html b/plinth/modules/diagnostics/templates/diagnostics_button.html index 48fd00223..8883e0f56 100644 --- a/plinth/modules/diagnostics/templates/diagnostics_button.html +++ b/plinth/modules/diagnostics/templates/diagnostics_button.html @@ -9,7 +9,7 @@ {% csrf_token %} {% if enabled %} - {% else %} {{ test }} {% if result == 'passed' %} - {{ result }} + {% trans result %} {% elif result == 'failed' %} - {{ result }} + {% trans result %} {% elif result == 'error' %} - {{ result }} + {% trans result %} {% else %} {{ result }} {% endif %} diff --git a/plinth/modules/diaspora/__init__.py b/plinth/modules/diaspora/__init__.py index 660e89f29..2be66b871 100644 --- a/plinth/modules/diaspora/__init__.py +++ b/plinth/modules/diaspora/__init__.py @@ -112,22 +112,13 @@ class DiasporaApp(app_module.App): class Shortcut(frontpage.Shortcut): """Frontpage shortcut to use configured domain name for URL.""" + def enable(self): """Set the proper shortcut URL when enabled.""" super().enable() self.url = 'https://diaspora.{}'.format(get_configured_domain_name()) -def init(): - """Initialize the Diaspora module.""" - global app - app = DiasporaApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.call('pre', actions.superuser_run, 'diaspora', ['pre-install']) diff --git a/plinth/modules/dynamicdns/__init__.py b/plinth/modules/dynamicdns/__init__.py index 77a0d5823..bcf20774f 100644 --- a/plinth/modules/dynamicdns/__init__.py +++ b/plinth/modules/dynamicdns/__init__.py @@ -70,18 +70,21 @@ class DynamicDNSApp(app_module.App): reserved_usernames=['ez-ipupd']) self.add(users_and_groups) + current_status = get_status() + if current_status['enabled']: + domain_added.send_robust(sender='dynamicdns', + domain_type='domain-type-dynamic', + name=current_status['dynamicdns_domain'], + services='__all__') + self.set_enabled(True) -def init(): - """Initialize the module.""" - global app - app = DynamicDNSApp() - current_status = get_status() - if current_status['enabled']: - domain_added.send_robust(sender='dynamicdns', - domain_type='domain-type-dynamic', - name=current_status['dynamicdns_domain'], - services='__all__') - app.set_enabled(True) + def is_enabled(self): + """Return whether all the leader components are enabled. + + Return True when there are no leader components and DynamicDNS setup + is done. + """ + return super().is_enabled() and get_status()['enabled'] def setup(helper, old_version=None): diff --git a/plinth/modules/dynamicdns/forms.py b/plinth/modules/dynamicdns/forms.py index 918bf7f5e..e4344a85a 100644 --- a/plinth/modules/dynamicdns/forms.py +++ b/plinth/modules/dynamicdns/forms.py @@ -7,12 +7,14 @@ from django import forms from django.core import validators from django.utils.translation import ugettext as _ from django.utils.translation import ugettext_lazy + from plinth import cfg from plinth.utils import format_lazy class TrimmedCharField(forms.CharField): """Trim the contents of a CharField.""" + def clean(self, value): """Clean and validate the field value""" if value: @@ -59,11 +61,11 @@ class ConfigureForm(forms.Form): help_user = \ ugettext_lazy('The username that was used when the account was ' 'created.') - """ToDo: sync this list with the html template file""" - provider_choices = (('GnuDIP', 'GnuDIP'), ('noip', 'noip.com'), - ('selfhost', 'selfhost.bz'), ('freedns', - 'freedns.afraid.org'), - ('other', 'other update URL')) + + provider_choices = (('GnuDIP', ugettext_lazy('GnuDIP')), + ('noip', 'noip.com'), ('selfhost', 'selfhost.bz'), + ('freedns', 'freedns.afraid.org'), + ('other', ugettext_lazy('other update URL'))) enabled = forms.BooleanField(label=ugettext_lazy('Enable Dynamic DNS'), required=False) diff --git a/plinth/modules/ejabberd/__init__.py b/plinth/modules/ejabberd/__init__.py index 76e44f533..18b66174f 100644 --- a/plinth/modules/ejabberd/__init__.py +++ b/plinth/modules/ejabberd/__init__.py @@ -18,10 +18,10 @@ from plinth.modules import config from plinth.modules.apache.components import Webserver from plinth.modules.firewall.components import Firewall from plinth.modules.letsencrypt.components import LetsEncrypt +from plinth.modules.users.components import UsersAndGroups from plinth.signals import (domain_added, post_hostname_change, pre_hostname_change) from plinth.utils import format_lazy -from plinth.modules.users.components import UsersAndGroups from .manifest import backup, clients # noqa, pylint: disable=unused-import @@ -46,12 +46,6 @@ _description = [ jsxc_url=reverse_lazy('jsxc:index')) ] -port_forwarding_info = [ - ('TCP', 5222), - ('TCP', 5269), - ('TCP', 5280), -] - logger = logging.getLogger(__name__) app = None @@ -113,19 +107,9 @@ class EjabberdApp(app_module.App): reserved_usernames=['ejabberd']) self.add(users_and_groups) - -def init(): - """Initialize the ejabberd module""" - global app - app = EjabberdApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - pre_hostname_change.connect(on_pre_hostname_change) - post_hostname_change.connect(on_post_hostname_change) - domain_added.connect(on_domain_added) + pre_hostname_change.connect(on_pre_hostname_change) + post_hostname_change.connect(on_post_hostname_change) + domain_added.connect(on_domain_added) def setup(helper, old_version=None): diff --git a/plinth/modules/ejabberd/manifest.py b/plinth/modules/ejabberd/manifest.py index e7a1f9241..7279829bb 100644 --- a/plinth/modules/ejabberd/manifest.py +++ b/plinth/modules/ejabberd/manifest.py @@ -2,8 +2,8 @@ from django.utils.translation import ugettext_lazy as _ -from plinth.modules.backups.api import validate as validate_backup from plinth.clients import store_url, validate +from plinth.modules.backups.api import validate as validate_backup from plinth.modules.jsxc import manifest as jsxc_manifest _clients = validate([{ @@ -66,8 +66,7 @@ _clients = validate([{ 'type': 'store', 'os': 'ios', 'store_name': 'app-store', - 'url': 'https://itunes.apple.com/us/app/chatsecure' - '/id464200063' + 'url': 'https://apps.apple.com/us/app/chatsecure/id464200063' }] }, { 'name': diff --git a/plinth/modules/ejabberd/views.py b/plinth/modules/ejabberd/views.py index 3714ae744..d96dbf271 100644 --- a/plinth/modules/ejabberd/views.py +++ b/plinth/modules/ejabberd/views.py @@ -18,7 +18,6 @@ class EjabberdAppView(AppView): app_id = 'ejabberd' template_name = 'ejabberd.html' form_class = EjabberdForm - port_forwarding_info = ejabberd.port_forwarding_info def get_initial(self): initdict = super().get_initial() diff --git a/plinth/modules/firewall/__init__.py b/plinth/modules/firewall/__init__.py index 5ab04d8d7..178ed409c 100644 --- a/plinth/modules/firewall/__init__.py +++ b/plinth/modules/firewall/__init__.py @@ -75,13 +75,6 @@ class FirewallApp(app_module.App): self.add(daemon) -def init(): - """Initailze firewall module""" - global app - app = FirewallApp() - app.set_enabled(True) - - def _run_setup(): """Run firewalld setup.""" _run(['setup'], superuser=True) diff --git a/plinth/modules/firewall/components.py b/plinth/modules/firewall/components.py index 4519b77ac..37c4dbc29 100644 --- a/plinth/modules/firewall/components.py +++ b/plinth/modules/firewall/components.py @@ -149,3 +149,31 @@ class Firewall(app.FollowerComponent): results.append([message, result]) return results + + +def get_port_forwarding_info(app_): + """Return a list of ports to be forwarded for this app to work.""" + from plinth.modules import networks + info = { + 'network_topology_type': networks.get_network_topology_type(), + 'router_configuration_type': networks.get_router_configuration_type(), + 'ports': [] + } + for component in app_.components.values(): + if not isinstance(component, Firewall): + continue + + if not component.is_external: + continue + + for port in component.ports_details: + if port['name'] in ['http', 'https']: + continue + + for detail in port['details']: + info['ports'].append({ + 'protocol': detail[1].upper(), + 'ports': detail[0] + }) + + return info diff --git a/plinth/modules/first_boot/__init__.py b/plinth/modules/first_boot/__init__.py index fc6476b14..e90729193 100644 --- a/plinth/modules/first_boot/__init__.py +++ b/plinth/modules/first_boot/__init__.py @@ -8,7 +8,7 @@ import os from django.urls import reverse -from plinth import cfg, module_loader +from plinth import app, cfg, module_loader from plinth.signals import post_setup version = 1 @@ -34,9 +34,15 @@ _all_first_boot_steps = None _is_completed = None -def init(): - """Initialize the first boot module.""" - post_setup.connect(_clear_first_boot_steps) +class FirstBootApp(app.App): + """FreedomBox app for First Boot.""" + + app_id = 'first_boot' + + def __init__(self): + """Create components for the app.""" + super().__init__() + post_setup.connect(_clear_first_boot_steps) def _clear_first_boot_steps(sender, module_name, **kwargs): diff --git a/plinth/modules/gitweb/__init__.py b/plinth/modules/gitweb/__init__.py index 983a617b7..4254ab9d7 100644 --- a/plinth/modules/gitweb/__init__.py +++ b/plinth/modules/gitweb/__init__.py @@ -17,8 +17,8 @@ from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups from .forms import is_repo_url -from .manifest import (GIT_REPO_PATH, # noqa, pylint: disable=unused-import - backup, clients) +from .manifest import ( # noqa, pylint: disable=unused-import + GIT_REPO_PATH, backup, clients) version = 1 @@ -88,43 +88,19 @@ class GitwebApp(app_module.App): groups=groups) self.add(users_and_groups) + setup_helper = globals()['setup_helper'] + if setup_helper.get_state() != 'needs-setup': + self.update_service_access() + def set_shortcut_login_required(self, login_required): """Change the login_required property of shortcut.""" shortcut = self.remove('shortcut-gitweb') shortcut.login_required = login_required self.add(shortcut) - def get_repo_list(self): - """List all Git repositories and set Gitweb as public or private.""" - repos = [] - if os.path.exists(GIT_REPO_PATH): - for repo in os.listdir(GIT_REPO_PATH): - if not repo.endswith('.git') or repo.startswith('.'): - continue - - repo_info = {} - repo_info['name'] = repo[:-4] - - private_file = os.path.join(GIT_REPO_PATH, repo, 'private') - if os.path.exists(private_file): - repo_info['access'] = 'private' - else: - repo_info['access'] = 'public' - - progress_file = os.path.join(GIT_REPO_PATH, repo, - 'clone_progress') - if os.path.exists(progress_file): - with open(progress_file) as file_handle: - clone_progress = file_handle.read() - repo_info['clone_progress'] = clone_progress - - repos.append(repo_info) - - return sorted(repos, key=lambda repo: repo['name']) - def update_service_access(self): """Update the frontpage shortcut and webserver auth requirement.""" - repos = self.get_repo_list() + repos = get_repo_list() if have_public_repos(repos): self._enable_public_access() else: @@ -154,28 +130,16 @@ class GitwebWebserverAuth(Webserver): def is_enabled(self): """Return if configuration is enabled or public access is enabled.""" - repos = app.get_repo_list() + repos = get_repo_list() return have_public_repos(repos) or super().is_enabled() def enable(self): """Enable apache configuration only if no public repository exists.""" - repos = app.get_repo_list() + repos = get_repo_list() if not have_public_repos(repos): super().enable() -def init(): - """Initialize the module.""" - global app - app = GitwebApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup': - app.update_service_access() - if app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) @@ -220,6 +184,34 @@ def create_repo(repo, repo_description, owner, is_private): actions.superuser_run('gitweb', args) +def get_repo_list(): + """List all git repositories.""" + repos = [] + if os.path.exists(GIT_REPO_PATH): + for repo in os.listdir(GIT_REPO_PATH): + if not repo.endswith('.git') or repo.startswith('.'): + continue + + repo_info = {} + repo_info['name'] = repo[:-4] + + private_file = os.path.join(GIT_REPO_PATH, repo, 'private') + if os.path.exists(private_file): + repo_info['access'] = 'private' + else: + repo_info['access'] = 'public' + + progress_file = os.path.join(GIT_REPO_PATH, repo, 'clone_progress') + if os.path.exists(progress_file): + with open(progress_file) as file_handle: + clone_progress = file_handle.read() + repo_info['clone_progress'] = clone_progress + + repos.append(repo_info) + + return sorted(repos, key=lambda repo: repo['name']) + + def repo_info(repo): """Get information about repository.""" output = actions.run('gitweb', ['repo-info', '--name', repo]) @@ -239,6 +231,18 @@ def _rename_repo(oldname, newname): actions.superuser_run('gitweb', args) +def _set_default_branch(repo, branch): + """Set default branch of the repository.""" + args = [ + 'set-default-branch', + '--name', + repo, + '--branch', + branch, + ] + actions.superuser_run('gitweb', args) + + def _set_repo_description(repo, repo_description): """Set description of the repository.""" args = [ @@ -283,6 +287,9 @@ def edit_repo(form_initial, form_cleaned): else: _set_repo_access(repo, 'public') + if form_cleaned['default_branch'] != form_initial['default_branch']: + _set_default_branch(repo, form_cleaned['default_branch']) + def delete_repo(repo): """Delete a repository.""" diff --git a/plinth/modules/gitweb/data/etc/apache2/conf-available/gitweb-freedombox-auth.conf b/plinth/modules/gitweb/data/etc/apache2/conf-available/gitweb-freedombox-auth.conf index 9f5d0b62f..4bf4bef7e 100644 --- a/plinth/modules/gitweb/data/etc/apache2/conf-available/gitweb-freedombox-auth.conf +++ b/plinth/modules/gitweb/data/etc/apache2/conf-available/gitweb-freedombox-auth.conf @@ -1,7 +1,7 @@ ## ## Limit access to gitweb web interface. Only users belonging to 'admin' or ## 'git-access' groups are allowed to view the web interface. This configuration -## is to be enabled when there is at least one public git project. +## is to be enabled when there are no public git projects. ## Include includes/freedombox-single-sign-on.conf diff --git a/plinth/modules/gitweb/forms.py b/plinth/modules/gitweb/forms.py index afb6c617b..9501d8884 100644 --- a/plinth/modules/gitweb/forms.py +++ b/plinth/modules/gitweb/forms.py @@ -3,6 +3,7 @@ Django form for configuring Gitweb. """ +import json import re from urllib.parse import urlparse @@ -11,9 +12,23 @@ from django.core.exceptions import ValidationError from django.core.validators import URLValidator from django.utils.translation import ugettext_lazy as _ +from plinth import actions from plinth.modules import gitweb +def _get_branches(repo): + """Get all the branches in the repository.""" + branch_data = json.loads( + actions.run('gitweb', ['get-branches', '--name', repo])) + default_branch = branch_data['default_branch'] + branches = branch_data['branches'] + + if default_branch not in branches: + branches.insert(0, default_branch) + + return [(branch, branch) for branch in branches] + + def get_name_from_url(url): """Get a repository name from URL""" return urlparse(url).path.split('/')[-1] @@ -92,7 +107,7 @@ class CreateRepoForm(forms.Form): if repo_name.endswith('.git'): repo_name = repo_name[:-4] - for repo in gitweb.app.get_repo_list(): + for repo in gitweb.get_repo_list(): if repo_name == repo['name']: raise ValidationError( _('A repository with this name already exists.')) @@ -115,6 +130,16 @@ class EditRepoForm(CreateRepoForm): 'An alpha-numeric string that uniquely identifies a repository.'), ) + default_branch = forms.ChoiceField( + label=_('Default branch'), + help_text=_('Gitweb displays this as a default branch.')) + + def __init__(self, *args, **kwargs): + """Initialize the form with extra request argument.""" + super().__init__(*args, **kwargs) + branches = _get_branches(self.initial['name']) + self.fields['default_branch'].choices = branches + def clean_name(self): """Check if the name is valid.""" name = self.cleaned_data['name'] @@ -124,7 +149,7 @@ class EditRepoForm(CreateRepoForm): if name.endswith('.git'): name = name[:-4] - for repo in gitweb.app.get_repo_list(): + for repo in gitweb.get_repo_list(): if name == repo['name']: raise ValidationError( _('A repository with this name already exists.')) diff --git a/plinth/modules/gitweb/tests/gitweb.feature b/plinth/modules/gitweb/tests/gitweb.feature index 3719632a4..37a98aa5a 100644 --- a/plinth/modules/gitweb/tests/gitweb.feature +++ b/plinth/modules/gitweb/tests/gitweb.feature @@ -27,12 +27,6 @@ Scenario: Create private repository Then the repository should be listed as a private And the repository should be listed on gitweb -Scenario: Delete repository - Given the gitweb application is enabled - And a repository - When I delete the repository - Then the repository should not be listed - @backups Scenario: Backup and restore gitweb Given the gitweb application is enabled @@ -70,6 +64,13 @@ Scenario: Edit repository metadata And I set the metadata of the repository Then the metadata of the repository should be as set +Scenario: Edit default branch of the repository + Given the gitweb application is enabled + And a repository with the branch branch1 + When I set branch1 as a default branch + Then the gitweb site should show branch1 as a default repo branch + + Scenario: Access public repository with git client Given the gitweb application is enabled And a public repository @@ -87,6 +88,12 @@ Scenario: Access private repository with git client And the repository should be privately readable And the repository should be privately writable +Scenario: Delete repository + Given the gitweb application is enabled + And a repository + When I delete the repository + Then the repository should not be listed + Scenario: Disable gitweb application Given the gitweb application is enabled When I disable the gitweb application diff --git a/plinth/modules/gitweb/tests/test_actions.py b/plinth/modules/gitweb/tests/test_actions.py index 0224004e5..2f1bc062c 100644 --- a/plinth/modules/gitweb/tests/test_actions.py +++ b/plinth/modules/gitweb/tests/test_actions.py @@ -11,6 +11,15 @@ from unittest.mock import patch import pytest from django.forms import ValidationError +REPO_NAME = 'Test-repo' +REPO_DATA = { + 'name': REPO_NAME, + 'description': '', + 'owner': '', + 'access': 'private', + 'default_branch': 'master', +} + def _action_file(): """Return the path to the 'gitweb' actions file.""" @@ -25,6 +34,7 @@ gitweb_actions = imp.load_source('gitweb', _action_file()) @pytest.fixture(name='call_action') def fixture_call_action(tmpdir, capsys): """Run actions with custom repo root path.""" + def _call_action(args, **kwargs): gitweb_actions.GIT_REPO_PATH = str(tmpdir) with patch('argparse._sys.argv', ['gitweb'] + args): @@ -35,47 +45,85 @@ def fixture_call_action(tmpdir, capsys): return _call_action -def test_actions(call_action): - """Test gitweb actions script.""" - repo = 'Test-repo' - repo_renamed = 'Test-repo_2' - data = { - 'name': repo, - 'description': 'Test description', - 'owner': 'Test owner', - 'access': 'private' +@pytest.fixture(name='existing_repo') +def fixture_existing_repo(call_action): + """A fixture to create a repository.""" + try: + call_action(['delete-repo', '--name', REPO_NAME]) + except FileNotFoundError: + pass + + call_action([ + 'create-repo', '--name', REPO_NAME, '--description', '', '--owner', '', + '--is-private', '--keep-ownership' + ]) + + +def test_create_repo(call_action): + """Test creating a repository.""" + call_action([ + 'create-repo', '--name', REPO_NAME, '--description', '', '--owner', '', + '--is-private', '--keep-ownership' + ]) + + assert json.loads(call_action(['repo-info', '--name', + REPO_NAME])) == REPO_DATA + + +def test_change_repo_medatada(call_action, existing_repo): + """Test change a metadata of the repository.""" + new_data = { + 'name': REPO_NAME, + 'description': 'description2', + 'owner': 'owner2', + 'access': 'public', + 'default_branch': 'master', } - # Create repository call_action([ - 'create-repo', '--name', repo, '--description', data['description'], - '--owner', data['owner'], '--is-private', '--keep-ownership' + 'set-repo-description', '--name', REPO_NAME, '--description', + new_data['description'] ]) - assert json.loads(call_action(['repo-info', '--name', repo])) == data - - # Change metadata - data['description'] = 'Test description 2' - data['owner'] = 'Test owner 2' - data['access'] = 'public' - call_action([ - 'set-repo-description', '--name', repo, '--description', - data['description'] - ]) - call_action(['set-repo-owner', '--name', repo, '--owner', data['owner']]) call_action( - ['set-repo-access', '--name', repo, '--access', data['access']]) - assert json.loads(call_action(['repo-info', '--name', repo])) == data + ['set-repo-owner', '--name', REPO_NAME, '--owner', new_data['owner']]) + call_action([ + 'set-repo-access', '--name', REPO_NAME, '--access', new_data['access'] + ]) - # Rename repository - call_action(['rename-repo', '--oldname', repo, '--newname', repo_renamed]) - with pytest.raises(RuntimeError, match='Repository not found'): - call_action(['repo-info', '--name', repo]) - assert call_action(['repo-info', '--name', repo_renamed]) + assert json.loads(call_action(['repo-info', '--name', + REPO_NAME])) == new_data - # Delete repository - call_action(['delete-repo', '--name', repo_renamed]) + +def test_rename_repository(call_action, existing_repo): + """Test renaming a repository.""" + new_name = 'Test-repo_2' + + call_action(['rename-repo', '--oldname', REPO_NAME, '--newname', new_name]) with pytest.raises(RuntimeError, match='Repository not found'): - call_action(['repo-info', '--name', repo_renamed]) + call_action(['repo-info', '--name', REPO_NAME]) + + assert json.loads(call_action(['repo-info', '--name', new_name])) == { + **REPO_DATA, + **{ + 'name': new_name + } + } + + +def test_get_branches(call_action, existing_repo): + """Test getting all the branches of the repository.""" + assert json.loads(call_action(['get-branches', '--name', REPO_NAME])) == { + "default_branch": "master", + "branches": [] + } + + +def test_delete_repository(call_action, existing_repo): + """Test deleting a repository.""" + call_action(['delete-repo', '--name', REPO_NAME]) + + with pytest.raises(RuntimeError, match='Repository not found'): + call_action(['repo-info', '--name', REPO_NAME]) @pytest.mark.parametrize( diff --git a/plinth/modules/gitweb/tests/test_functional.py b/plinth/modules/gitweb/tests/test_functional.py index 2dbbbaf8c..090ed08b7 100644 --- a/plinth/modules/gitweb/tests/test_functional.py +++ b/plinth/modules/gitweb/tests/test_functional.py @@ -30,6 +30,13 @@ def gitweb_private_repo(session_browser): _create_repo(session_browser, 'Test-repo', 'private', True) +@given(parsers.parse('a repository with the branch {branch:w}')) +def _create_repo_with_branch(session_browser, branch): + _delete_repo(session_browser, 'Test-repo', ignore_missing=True) + _create_repo(session_browser, 'Test-repo', 'public') + _create_branch('Test-repo', branch) + + @given('both public and private repositories exist') def gitweb_public_and_private_repo(session_browser): _create_repo(session_browser, 'Test-repo', 'public', True) @@ -66,6 +73,11 @@ def gitweb_delete_repo(session_browser): _delete_repo(session_browser, 'Test-repo') +@when(parsers.parse('I set {branch:w} as a default branch')) +def gitweb_set_default_branch(session_browser, branch): + _set_default_branch(session_browser, 'Test-repo', branch) + + @when('I set the metadata of the repository') def gitweb_edit_repo_metadata(session_browser, gitweb_repo_metadata): _edit_repo_metadata(session_browser, 'Test-repo', gitweb_repo_metadata) @@ -76,6 +88,14 @@ def gitweb_using_git_client(): pass +@then( + parsers.parse( + 'the gitweb site should show {branch:w} as a default repo branch')) +def gitweb_site_check_default_repo_branch(session_browser, branch): + assert _get_gitweb_site_default_repo_branch(session_browser, + 'Test-repo') == branch + + @then('the repository should be restored') @then('the repository should be listed as a public') def gitweb_repo_should_exists(session_browser): @@ -142,6 +162,39 @@ def gitweb_repo_privately_writable(): url_git_extension=True) +def _create_branch(repo, branch): + """Create a branch on the remote repository.""" + repo_url = _get_repo_url(repo, with_auth=True) + + with _gitweb_temp_directory() as temp_directory: + repo_path = os.path.join(temp_directory, repo) + + _create_local_repo(repo_path) + + add_branch_commands = [['git', 'checkout', '-q', '-b', branch], + [ + 'git', '-c', 'user.name=Tester', '-c', + 'user.email=tester', 'commit', '-q', + '--allow-empty', '-m', 'test_branch1' + ], + ['git', 'push', '-q', '-f', repo_url, branch]] + for command in add_branch_commands: + subprocess.check_call(command, cwd=repo_path) + + +def _create_local_repo(path): + """Create a local repository.""" + shutil.rmtree(path, ignore_errors=True) + os.mkdir(path) + create_repo_commands = [ + 'git init -q', 'git config http.sslVerify false', + 'git -c "user.name=Tester" -c "user.email=tester" ' + 'commit -q --allow-empty -m "test"' + ] + for command in create_repo_commands: + subprocess.check_call(command, shell=True, cwd=path) + + def _create_repo(browser, repo, access=None, ok_if_exists=False): """Create repository.""" if not _repo_exists(browser, repo, access): @@ -187,6 +240,13 @@ def _edit_repo_metadata(browser, repo, metadata): functional.submit(browser) +def _get_gitweb_site_default_repo_branch(browser, repo): + functional.nav_to_module(browser, 'gitweb') + browser.find_by_css('a[href="/gitweb/{0}.git"]'.format(repo)).first.click() + + return browser.find_by_css('.head').first.text + + def _get_repo_metadata(browser, repo): """Get repository metadata.""" functional.nav_to_module(browser, 'gitweb') @@ -268,19 +328,23 @@ def _repo_is_writable(repo, with_auth=False, url_git_extension=False): if url_git_extension: url = url + '.git' - with _gitweb_temp_directory() as cwd: - subprocess.run(['mkdir', 'test-project'], check=True, cwd=cwd) - cwd = os.path.join(cwd, 'test-project') - prepare_git_repo_commands = [ - 'git init -q', 'git config http.sslVerify false', - 'git -c "user.name=Tester" -c "user.email=tester" ' - 'commit -q --allow-empty -m "test"' - ] - for command in prepare_git_repo_commands: - subprocess.run(command, shell=True, check=True, cwd=cwd) + with _gitweb_temp_directory() as temp_directory: + repo_directory = os.path.join(temp_directory, 'test-project') + _create_local_repo(repo_directory) + git_push_command = ['git', 'push', '-qf', url, 'master'] - return _gitweb_git_command_is_successful(git_push_command, cwd) + return _gitweb_git_command_is_successful(git_push_command, + repo_directory) + + +def _set_default_branch(browser, repo, branch): + """Set default branch of the repository.""" + functional.nav_to_module(browser, 'gitweb') + browser.find_link_by_href( + '/plinth/apps/gitweb/{}/edit/'.format(repo)).first.click() + browser.find_by_id('id_gitweb-default_branch').select(branch) + functional.submit(browser) def _set_repo_access(browser, repo, access): diff --git a/plinth/modules/gitweb/tests/test_views.py b/plinth/modules/gitweb/tests/test_views.py index 65678a8f1..11a459d7d 100644 --- a/plinth/modules/gitweb/tests/test_views.py +++ b/plinth/modules/gitweb/tests/test_views.py @@ -24,14 +24,16 @@ EXISTING_REPOS = [ 'description': '', 'owner': '', 'access': 'public', - 'is_private': False + 'is_private': False, + 'default_branch': 'master', }, { 'name': 'something2', 'description': '', 'owner': '', 'access': 'private', - 'is_private': True + 'is_private': True, + 'default_branch': 'master', }, ] @@ -48,26 +50,36 @@ def fixture_gitweb_urls(): def action_run(*args, **kwargs): """Action return values.""" - if args[1][0] == 'repo-info': + subcommand = args[1][0] + if subcommand == 'repo-info': return json.dumps(EXISTING_REPOS[0]) - if args[1][0] == 'check-repo-exists': + elif subcommand == 'check-repo-exists': return True + elif subcommand == 'get-branches': + return json.dumps({ + "default_branch": "master", + "branches": ["master", "branch1"] + }) + return None @pytest.fixture(autouse=True) def gitweb_patch(): """Patch gitweb.""" - with patch('plinth.modules.gitweb.app') as app_patch, \ + with patch('plinth.modules.gitweb.get_repo_list') as get_repo_list, \ + patch('plinth.modules.gitweb.app') as gitweb_app, \ patch('plinth.actions.superuser_run', side_effect=action_run), \ patch('plinth.actions.run', side_effect=action_run): - app_patch.get_repo_list.return_value = [{ + get_repo_list.return_value = [{ 'name': EXISTING_REPOS[0]['name'] }, { 'name': EXISTING_REPOS[1]['name'] }] + gitweb_app.update_service_access.return_value = None + yield @@ -148,8 +160,8 @@ def test_create_repo_failed_view(rf): """Test that repo creation failure sends correct error message.""" general_error_message = "An error occurred while creating the repository." error_description = 'some error' - with patch('plinth.modules.gitweb.create_repo', side_effect=ActionError( - 'gitweb', '', error_description)): + with patch('plinth.modules.gitweb.create_repo', + side_effect=ActionError('gitweb', '', error_description)): form_data = { 'gitweb-name': 'something_other', 'gitweb-description': '', @@ -205,7 +217,8 @@ def test_edit_repository_view(rf): 'gitweb-name': 'something_other.git', 'gitweb-description': 'test-description', 'gitweb-owner': 'test-owner', - 'gitweb-is_private': True + 'gitweb-is_private': True, + 'gitweb-default_branch': 'branch1', } url = urls.reverse('gitweb:edit', kwargs={'name': EXISTING_REPOS[0]['name']}) @@ -274,7 +287,8 @@ def test_edit_repository_no_change_view(rf): form_data = { 'gitweb-name': EXISTING_REPOS[0]['name'], 'gitweb-description': EXISTING_REPOS[0]['description'], - 'gitweb-owner': EXISTING_REPOS[0]['owner'] + 'gitweb-owner': EXISTING_REPOS[0]['owner'], + 'gitweb-default_branch': EXISTING_REPOS[0]['default_branch'], } request = rf.post( urls.reverse('gitweb:edit', @@ -294,7 +308,8 @@ def test_edit_repository_failed_view(rf): form_data = { 'gitweb-name': 'something_other', 'gitweb-description': 'test-description', - 'gitweb-owner': 'test-owner' + 'gitweb-owner': 'test-owner', + 'gitweb-default_branch': 'master', } request = rf.post( urls.reverse('gitweb:edit', diff --git a/plinth/modules/gitweb/views.py b/plinth/modules/gitweb/views.py index 26027579f..6420d384d 100644 --- a/plinth/modules/gitweb/views.py +++ b/plinth/modules/gitweb/views.py @@ -28,7 +28,7 @@ class GitwebAppView(views.AppView): def get_context_data(self, *args, **kwargs): """Add repositories to the context data.""" context = super().get_context_data(*args, **kwargs) - repos = gitweb.app.get_repo_list() + repos = gitweb.get_repo_list() context['repos'] = repos context['cloning'] = any('clone_progress' in repo for repo in repos) context['refresh_page_sec'] = 3 if context['cloning'] else None @@ -92,7 +92,7 @@ class EditRepoView(SuccessMessageMixin, FormView): def get_initial(self): """Load information about repository being edited.""" name = self.kwargs['name'] - for repo in gitweb.app.get_repo_list(): + for repo in gitweb.get_repo_list(): if repo['name'] == name and 'clone_progress' not in repo: break else: @@ -126,7 +126,7 @@ def delete(request, name): On GET, display a confirmation page. On POST, delete the repository. """ - for repo in gitweb.app.get_repo_list(): + for repo in gitweb.get_repo_list(): if repo['name'] == name and 'clone_progress' not in repo: break else: diff --git a/plinth/modules/help/__init__.py b/plinth/modules/help/__init__.py index b062bdeb1..eed3852df 100644 --- a/plinth/modules/help/__init__.py +++ b/plinth/modules/help/__init__.py @@ -5,6 +5,7 @@ FreedomBox app for help pages. import os +from django.utils.translation import pgettext_lazy from django.utils.translation import ugettext_lazy as _ from plinth import app as app_module @@ -32,7 +33,8 @@ class HelpApp(app_module.App): menu_item = menu.Menu('menu-help', _('Documentation'), None, 'fa-book', 'help:index', parent_url_name='index') self.add(menu_item) - menu_item = menu.Menu('menu-help-manual', _('Manual'), None, + menu_item = menu.Menu('menu-help-manual', + pgettext_lazy('User guide', 'Manual'), None, 'fa-info-circle', 'help:manual', parent_url_name='help:index', order=10) self.add(menu_item) @@ -63,10 +65,3 @@ class HelpApp(app_module.App): static_files = web_server.StaticFiles('static-files-help', directory_map) self.add(static_files) - - -def init(): - """Initialize the Help module""" - global app - app = HelpApp() - app.set_enabled(True) diff --git a/plinth/modules/help/templates/help_about.html b/plinth/modules/help/templates/help_about.html index b0eeb0616..c8a4be47a 100644 --- a/plinth/modules/help/templates/help_about.html +++ b/plinth/modules/help/templates/help_about.html @@ -74,17 +74,4 @@ {% endblocktrans %} {% endif %}

    - - {% if backports_in_use %} -

    {% trans "Security Notice" %}

    -

    - {% blocktrans trimmed %} - You are using packages from Debian backports. Please note that these - packages do not have security support from Debian. However, they are - maintained on a best-effort basis by contributors in Debian and - FreedomBox community. - {% endblocktrans %} -

    - {% endif %} - {% endblock %} diff --git a/plinth/modules/help/views.py b/plinth/modules/help/views.py index 047ed8a28..3a0127bdc 100644 --- a/plinth/modules/help/views.py +++ b/plinth/modules/help/views.py @@ -6,7 +6,6 @@ Help app for FreedomBox. import mimetypes import os import pathlib -import subprocess from apt.cache import Cache from django.core.files.base import File @@ -52,7 +51,6 @@ def about(request): 'version': __version__, 'new_version': not freedombox.candidate.is_installed, 'os_release': get_os_release(), - 'backports_in_use': get_backports_in_use(), } return TemplateResponse(request, 'help_about.html', context) @@ -134,16 +132,3 @@ def get_os_release(): line = line.split('=') output = line[1] return output - - -def get_backports_in_use(): - """Return whether backports packages are installed.""" - # Only freedombox package is set to be installed from backports currently. - output = subprocess.check_output(['apt-cache', 'policy', 'freedombox']) - for line in output.decode().split('\n'): - if 'Installed:' in line: - version = line.strip().split(': ')[1] - if 'bpo' in version: - return True - - return False diff --git a/plinth/modules/i2p/__init__.py b/plinth/modules/i2p/__init__.py index cbdf49d14..2b2c045c7 100644 --- a/plinth/modules/i2p/__init__.py +++ b/plinth/modules/i2p/__init__.py @@ -35,12 +35,6 @@ _description = [ 'configuration process.') ] -port_forwarding_info = [ - ('TCP', 4444), - ('TCP', 4445), - ('TCP', 6668), -] - tunnels_to_manage = { 'I2P HTTP Proxy': 'i2p-http-proxy-freedombox', 'I2P HTTPS Proxy': 'i2p-https-proxy-freedombox', @@ -103,16 +97,6 @@ class I2PApp(app_module.App): self.add(users_and_groups) -def init(): - """Initialize the module.""" - global app - app = I2PApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/i2p/views.py b/plinth/modules/i2p/views.py index c5b3bfb56..31a97e13f 100644 --- a/plinth/modules/i2p/views.py +++ b/plinth/modules/i2p/views.py @@ -3,8 +3,8 @@ Views for I2P application. """ -from django.utils.translation import ugettext as _ -from plinth.modules import i2p +from django.utils.translation import ugettext_lazy as _ + from plinth.views import AppView @@ -29,7 +29,6 @@ class I2PAppView(AppView): def get_context_data(self, **kwargs): """Return the context data for rendering the template view.""" context = super().get_context_data(**kwargs) - context['port_forwarding_info'] = i2p.port_forwarding_info context['proxies_description'] = self.proxies_description context['torrents_description'] = self.torrents_description diff --git a/plinth/modules/ikiwiki/__init__.py b/plinth/modules/ikiwiki/__init__.py index 4e8e738c3..1d5cfacf8 100644 --- a/plinth/modules/ikiwiki/__init__.py +++ b/plinth/modules/ikiwiki/__init__.py @@ -101,16 +101,6 @@ class IkiwikiApp(app_module.App): return sites -def init(): - """Initialize the ikiwiki module.""" - global app - app = IkiwikiApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/infinoted/__init__.py b/plinth/modules/infinoted/__init__.py index 64c42cf5d..3ded41f35 100644 --- a/plinth/modules/infinoted/__init__.py +++ b/plinth/modules/infinoted/__init__.py @@ -30,8 +30,6 @@ _description = [ box_name=_(cfg.box_name)), ] -port_forwarding_info = [('TCP', 6523)] - app = None @@ -72,16 +70,6 @@ class InfinotedApp(app_module.App): self.add(daemon) -def init(): - """Initialize the infinoted module.""" - global app - app = InfinotedApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/infinoted/urls.py b/plinth/modules/infinoted/urls.py index eb1352b9c..5f67998d3 100644 --- a/plinth/modules/infinoted/urls.py +++ b/plinth/modules/infinoted/urls.py @@ -5,8 +5,9 @@ URLs for the infinoted module. from django.conf.urls import url -from .views import InfinotedAppView +from plinth.views import AppView urlpatterns = [ - url(r'^apps/infinoted/$', InfinotedAppView.as_view(), name='index'), + url(r'^apps/infinoted/$', AppView.as_view(app_id='infinoted'), + name='index'), ] diff --git a/plinth/modules/infinoted/views.py b/plinth/modules/infinoted/views.py deleted file mode 100644 index 089354e4d..000000000 --- a/plinth/modules/infinoted/views.py +++ /dev/null @@ -1,12 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Views for the infinoted app. -""" -from plinth.modules import infinoted -from plinth.views import AppView - - -class InfinotedAppView(AppView): - """Main app view for Infinoted.""" - app_id = 'infinoted' - port_forwarding_info = infinoted.port_forwarding_info diff --git a/plinth/modules/jsxc/__init__.py b/plinth/modules/jsxc/__init__.py index a8f15102c..80b96a9fb 100644 --- a/plinth/modules/jsxc/__init__.py +++ b/plinth/modules/jsxc/__init__.py @@ -42,7 +42,8 @@ class JSXCApp(app_module.App): info = app_module.Info(app_id=self.app_id, version=version, name=_('JSXC'), icon_filename='jsxc', short_description=_('Chat Client'), - description=_description, clients=clients) + description=_description, manual_page='JSXC', + clients=clients) self.add(info) menu_item = menu.Menu('menu-jsxc', info.name, info.short_description, @@ -72,16 +73,6 @@ class JSXCApp(app_module.App): self.add(static_files) -def init(): - """Initialize the JSXC module""" - global app - app = JSXCApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/letsencrypt/__init__.py b/plinth/modules/letsencrypt/__init__.py index 981e42430..d0ae503b8 100644 --- a/plinth/modules/letsencrypt/__init__.py +++ b/plinth/modules/letsencrypt/__init__.py @@ -73,6 +73,11 @@ class LetsEncryptApp(app_module.App): 'letsencrypt:index', parent_url_name='system') self.add(menu_item) + domain_added.connect(on_domain_added) + domain_removed.connect(on_domain_removed) + + post_module_loading.connect(_certificate_handle_modified) + def diagnose(self): """Run diagnostics and return the results.""" results = super().diagnose() @@ -84,18 +89,6 @@ class LetsEncryptApp(app_module.App): return results -def init(): - """Initialize the module.""" - global app - app = LetsEncryptApp() - app.set_enabled(True) - - domain_added.connect(on_domain_added) - domain_removed.connect(on_domain_removed) - - post_module_loading.connect(_certificate_handle_modified) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/matrixsynapse/__init__.py b/plinth/modules/matrixsynapse/__init__.py index fcc388e89..97cf017a1 100644 --- a/plinth/modules/matrixsynapse/__init__.py +++ b/plinth/modules/matrixsynapse/__init__.py @@ -18,11 +18,10 @@ from plinth.daemon import Daemon from plinth.modules.apache.components import Webserver from plinth.modules.firewall.components import Firewall from plinth.modules.letsencrypt.components import LetsEncrypt -from plinth.utils import Version from .manifest import backup, clients # noqa, pylint: disable=unused-import -version = 5 +version = 6 managed_services = ['matrix-synapse'] @@ -40,16 +39,18 @@ _description = [ 'servers via federation.'), _('To communicate, you can use the ' 'available clients ' - 'for mobile, desktop and the web. Riot ' - 'client is recommended.') + 'for mobile, desktop and the web. ' + 'Element client is recommended.') ] -port_forwarding_info = [('TCP', 8448)] - logger = logging.getLogger(__name__) SERVER_NAME_PATH = "/etc/matrix-synapse/conf.d/server_name.yaml" -CONFIG_FILE_PATH = '/etc/matrix-synapse/homeserver.yaml' +ORIG_CONF_PATH = '/etc/matrix-synapse/homeserver.yaml' +STATIC_CONF_PATH = '/etc/matrix-synapse/conf.d/freedombox-static.yaml' +LISTENERS_CONF_PATH = '/etc/matrix-synapse/conf.d/freedombox-listeners.yaml' +REGISTRATION_CONF_PATH = \ + '/etc/matrix-synapse/conf.d/freedombox-registration.yaml' app = None @@ -106,44 +107,32 @@ class MatrixSynapseApp(app_module.App): self.add(daemon) -def init(): - """Initialize the matrix-synapse module.""" - global app - app = MatrixSynapseApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) - helper.call('post', actions.superuser_run, 'matrixsynapse', - ['post-install']) - helper.call('post', app.enable) + if old_version and old_version < 6: + helper.call('post', upgrade, helper) + else: + helper.call('post', actions.superuser_run, 'matrixsynapse', + ['post-install']) + + if not old_version: + helper.call('post', app.enable) + app.get_component('letsencrypt-matrixsynapse').setup_certificates() -def force_upgrade(helper, packages): - """Force upgrade matrix-synapse to resolve conffile prompt.""" - if 'matrix-synapse' not in packages: - return False - - # Allow any lower version to upgrade to 1.15.* - package = packages['matrix-synapse'] - if Version(package['new_version']) > Version('1.16~'): - return False - +def upgrade(helper): + """Upgrade matrix-synapse configuration to avoid conffile prompt.""" public_registration_status = get_public_registration_status() - helper.install(['matrix-synapse'], force_configuration='new') + actions.superuser_run('matrixsynapse', ['move-old-conf']) + helper.install(['matrix-synapse'], force_configuration='new', + reinstall=True, force_missing_configuration=True) actions.superuser_run('matrixsynapse', ['post-install']) if public_registration_status: actions.superuser_run('matrixsynapse', ['public-registration', 'enable']) - return True - def setup_domain(domain_name): """Configure a domain name for matrixsynapse.""" diff --git a/plinth/modules/matrixsynapse/manifest.py b/plinth/modules/matrixsynapse/manifest.py index 8a43ad28e..654be70e1 100644 --- a/plinth/modules/matrixsynapse/manifest.py +++ b/plinth/modules/matrixsynapse/manifest.py @@ -2,15 +2,15 @@ from django.utils.translation import ugettext_lazy as _ -from plinth.modules.backups.api import validate as validate_backup from plinth.clients import store_url, validate +from plinth.modules.backups.api import validate as validate_backup -_android_package_id = 'im.vector.alpha' -_riot_desktop_download_url = 'https://riot.im/desktop.html' +_android_package_id = 'im.vector.app' +_element_desktop_download_url = 'https://element.io/get-started' clients = validate([{ 'name': - _('Riot'), + _('Element'), 'platforms': [{ 'type': 'store', 'os': 'android', @@ -21,21 +21,26 @@ clients = validate([{ 'os': 'android', 'store_name': 'f-droid', 'url': store_url('f-droid', _android_package_id) + }, { + 'type': 'store', + 'os': 'ios', + 'store_name': 'app-store', + 'url': 'https://apps.apple.com/app/vector/id1083446067' }, { 'type': 'web', - 'url': 'https://riot.im/app/#/home' + 'url': 'https://app.element.io/' }, { 'type': 'download', 'os': 'gnu-linux', - 'url': _riot_desktop_download_url, + 'url': _element_desktop_download_url, }, { 'type': 'download', 'os': 'macos', - 'url': _riot_desktop_download_url, + 'url': _element_desktop_download_url, }, { 'type': 'download', 'os': 'windows', - 'url': _riot_desktop_download_url, + 'url': _element_desktop_download_url, }] }]) diff --git a/plinth/modules/matrixsynapse/views.py b/plinth/modules/matrixsynapse/views.py index c1a6e4a62..f8746b342 100644 --- a/plinth/modules/matrixsynapse/views.py +++ b/plinth/modules/matrixsynapse/views.py @@ -46,7 +46,6 @@ class MatrixSynapseAppView(AppView): app_id = 'matrixsynapse' template_name = 'matrix-synapse.html' form_class = MatrixSynapseForm - port_forwarding_info = matrixsynapse.port_forwarding_info def dispatch(self, request, *args, **kwargs): """Redirect to setup page if setup is not done yet.""" diff --git a/plinth/modules/mediawiki/__init__.py b/plinth/modules/mediawiki/__init__.py index e8a057f9e..a588f9834 100644 --- a/plinth/modules/mediawiki/__init__.py +++ b/plinth/modules/mediawiki/__init__.py @@ -86,22 +86,13 @@ class MediaWikiApp(app_module.App): class Shortcut(frontpage.Shortcut): """Frontpage shortcut for only logged users when in private mode.""" + def enable(self): """When enabled, check if MediaWiki is in private mode.""" super().enable() self.login_required = is_private_mode_enabled() -def init(): - """Initialize the module.""" - global app - app = MediaWikiApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) @@ -125,6 +116,7 @@ def is_private_mode_enabled(): def get_default_skin(): """Return the value of the default skin""" + def _find_skin(config_file): with open(config_file, 'r') as config: for line in config: diff --git a/plinth/modules/minetest/__init__.py b/plinth/modules/minetest/__init__.py index c8d7d373a..0012e5edd 100644 --- a/plinth/modules/minetest/__init__.py +++ b/plinth/modules/minetest/__init__.py @@ -11,8 +11,8 @@ from plinth import app as app_module from plinth import cfg, frontpage, menu from plinth.daemon import Daemon from plinth.modules.firewall.components import Firewall -from plinth.utils import format_lazy from plinth.modules.users.components import UsersAndGroups +from plinth.utils import format_lazy from .manifest import backup, clients # noqa, pylint: disable=unused-import @@ -42,8 +42,6 @@ _description = [ 'is needed.'), box_name=_(cfg.box_name)), ] -port_forwarding_info = [('UDP', 30000)] - CONFIG_FILE = '/etc/minetest/minetest.conf' AUG_PATH = '/files' + CONFIG_FILE + '/.anon' @@ -92,16 +90,6 @@ class MinetestApp(app_module.App): self.add(users_and_groups) -def init(): - """Initialize the module.""" - global app - app = MinetestApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/minetest/views.py b/plinth/modules/minetest/views.py index 4e4f6da63..a58dd659b 100644 --- a/plinth/modules/minetest/views.py +++ b/plinth/modules/minetest/views.py @@ -7,7 +7,7 @@ from django.contrib import messages from django.utils.translation import ugettext_lazy as _ from plinth import actions -from plinth.modules import minetest, names +from plinth.modules import names from plinth.views import AppView from . import get_configuration @@ -19,7 +19,6 @@ class MinetestAppView(AppView): # pylint: disable=too-many-ancestors app_id = 'minetest' template_name = 'minetest.html' form_class = MinetestForm - port_forwarding_info = minetest.port_forwarding_info def get_initial(self): """Return the values to fill in the form.""" diff --git a/plinth/modules/minidlna/__init__.py b/plinth/modules/minidlna/__init__.py index 755bd28cf..2bc18cebd 100644 --- a/plinth/modules/minidlna/__init__.py +++ b/plinth/modules/minidlna/__init__.py @@ -81,16 +81,6 @@ class MiniDLNAApp(app_module.App): self.add(users_and_groups) -def init(): - """Initialize the module.""" - global app - app = MiniDLNAApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the package""" helper.install(managed_packages) diff --git a/plinth/modules/minidlna/data/etc/apache2/conf-available/minidlna-freedombox.conf b/plinth/modules/minidlna/data/etc/apache2/conf-available/minidlna-freedombox.conf index 544e0d862..aaaf5f876 100644 --- a/plinth/modules/minidlna/data/etc/apache2/conf-available/minidlna-freedombox.conf +++ b/plinth/modules/minidlna/data/etc/apache2/conf-available/minidlna-freedombox.conf @@ -1,3 +1,9 @@ + Include includes/freedombox-single-sign-on.conf + + + TKTAuthToken "admin" + + ProxyPass http://localhost:8200/ diff --git a/plinth/modules/mldonkey/__init__.py b/plinth/modules/mldonkey/__init__.py index 06221335e..d282a03c0 100644 --- a/plinth/modules/mldonkey/__init__.py +++ b/plinth/modules/mldonkey/__init__.py @@ -89,16 +89,6 @@ class MLDonkeyApp(app_module.App): self.add(users_and_groups) -def init(): - """Initialize the MLDonkey module.""" - global app - app = MLDonkeyApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.call('pre', actions.superuser_run, 'mldonkey', ['pre-install']) diff --git a/plinth/modules/monkeysphere/__init__.py b/plinth/modules/monkeysphere/__init__.py index 5a16a383e..b125a56b6 100644 --- a/plinth/modules/monkeysphere/__init__.py +++ b/plinth/modules/monkeysphere/__init__.py @@ -61,13 +61,6 @@ class MonkeysphereApp(app_module.App): self.add(users_and_groups) -def init(): - """Initialize the monkeysphere module.""" - global app - app = MonkeysphereApp() - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/mumble/__init__.py b/plinth/modules/mumble/__init__.py index 94c4896b7..2f71b3766 100644 --- a/plinth/modules/mumble/__init__.py +++ b/plinth/modules/mumble/__init__.py @@ -28,11 +28,6 @@ _description = [ 'from your desktop and Android devices are available.') ] -port_forwarding_info = [ - ('TCP', 64738), - ('UDP', 64738), -] - app = None @@ -77,16 +72,6 @@ class MumbleApp(app_module.App): self.add(users_and_groups) -def init(): - """Initialize the Mumble module.""" - global app - app = MumbleApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/mumble/manifest.py b/plinth/modules/mumble/manifest.py index d605e6817..7623fdb04 100644 --- a/plinth/modules/mumble/manifest.py +++ b/plinth/modules/mumble/manifest.py @@ -30,7 +30,7 @@ clients = validate([{ 'type': 'store', 'os': 'ios', 'store_name': 'app-store', - 'url': 'https://itunes.apple.com/us/app/mumble/id443472808' + 'url': 'https://apps.apple.com/us/app/mumble/id443472808' }] }, { 'name': @@ -53,7 +53,7 @@ clients = validate([{ 'type': 'store', 'os': 'ios', 'store_name': 'app-store', - 'url': 'https://itunes.apple.com/dk/app/mumblefy/id858752232' + 'url': 'https://apps.apple.com/dk/app/mumblefy/id858752232' }] }, { 'name': diff --git a/plinth/modules/mumble/views.py b/plinth/modules/mumble/views.py index 55bc178f6..a12ba76ce 100644 --- a/plinth/modules/mumble/views.py +++ b/plinth/modules/mumble/views.py @@ -3,14 +3,12 @@ from django.contrib import messages from django.utils.translation import ugettext_lazy as _ from plinth import actions -from plinth.modules.mumble import port_forwarding_info from plinth.modules.mumble.forms import MumbleForm from plinth.views import AppView class MumbleAppView(AppView): app_id = 'mumble' - port_forwarding_info = port_forwarding_info form_class = MumbleForm def form_valid(self, form): diff --git a/plinth/modules/names/__init__.py b/plinth/modules/names/__init__.py index 9f5297cf8..b06316fbc 100644 --- a/plinth/modules/names/__init__.py +++ b/plinth/modules/names/__init__.py @@ -52,15 +52,8 @@ class NamesApp(app_module.App): 'names:index', parent_url_name='system') self.add(menu_item) - -def init(): - """Initialize the names module.""" - global app - app = NamesApp() - app.set_enabled(True) - - domain_added.connect(on_domain_added) - domain_removed.connect(on_domain_removed) + domain_added.connect(on_domain_added) + domain_removed.connect(on_domain_removed) def on_domain_added(sender, domain_type, name='', description='', diff --git a/plinth/modules/names/templates/names.html b/plinth/modules/names/templates/names.html index 126e18617..c3ea506d4 100644 --- a/plinth/modules/names/templates/names.html +++ b/plinth/modules/names/templates/names.html @@ -11,9 +11,9 @@ - - - + + + diff --git a/plinth/modules/networks/__init__.py b/plinth/modules/networks/__init__.py index 36409eea4..e5c773e2a 100644 --- a/plinth/modules/networks/__init__.py +++ b/plinth/modules/networks/__init__.py @@ -10,7 +10,7 @@ from django.utils.translation import ugettext_lazy as _ from plinth import actions from plinth import app as app_module -from plinth import daemon, menu, network +from plinth import daemon, kvstore, menu, network version = 1 @@ -47,10 +47,6 @@ logger = Logger(__name__) app = None -NETWORK_TOPOLOGY_TYPE_KEY = 'networks_topology_type' -ROUTER_CONFIGURATION_TYPE_KEY = 'networks_router_configuration_type' -INTERNET_CONNECTION_TYPE_KEY = 'networks_internet_type' - class NetworksApp(app_module.App): """FreedomBox app for Networks.""" @@ -87,13 +83,6 @@ class NetworksApp(app_module.App): return results -def init(): - """Initialize the Networks module.""" - global app - app = NetworksApp() - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) @@ -101,6 +90,38 @@ def setup(helper, old_version=None): helper.call('post', app.enable) +def get_network_topology_type(): + """Return the currently configured network topology type or default.""" + return kvstore.get_default('networks_topology_type', 'to_router') + + +def set_network_topology_type(network_topology_type): + """Store the network topology type.""" + kvstore.set('networks_topology_type', network_topology_type) + + +def get_internet_connection_type(): + """Return the currently configured internet connection type or default.""" + return kvstore.get_default('networks_internet_type', 'unknown') + + +def set_internet_connection_type(internet_connection_type): + """Store the internet connection type.""" + return kvstore.set('networks_internet_type', internet_connection_type) + + +def get_router_configuration_type(): + """Return the currently configured router configuration type or default.""" + return kvstore.get_default('networks_router_configuration_type', + 'not_configured') + + +def set_router_configuration_type(router_configuration_type): + """Store the router configuration type.""" + return kvstore.set('networks_router_configuration_type', + router_configuration_type) + + def _get_shared_interfaces(): """Get active network interfaces in shared mode.""" shared_interfaces = [] diff --git a/plinth/modules/networks/forms.py b/plinth/modules/networks/forms.py index e3166bc4b..07a11d034 100644 --- a/plinth/modules/networks/forms.py +++ b/plinth/modules/networks/forms.py @@ -2,6 +2,7 @@ from django import forms from django.core import validators +from django.utils.translation import pgettext_lazy from django.utils.translation import ugettext_lazy as _ from plinth import cfg, network @@ -44,7 +45,8 @@ class ConnectionForm(forms.Form): 'clients on this network and share its Internet connection.'), box_name=_(cfg.box_name)), choices=[('auto', _('Automatic (DHCP)')), ('shared', _('Shared')), - ('manual', _('Manual')), ('disabled', _('Disabled'))]) + ('manual', pgettext_lazy('Not automatically', 'Manual')), + ('disabled', _('Disabled'))]) ipv4_address = forms.CharField( label=_('Address'), validators=[validators.validate_ipv4_address], required=False) @@ -74,7 +76,8 @@ class ConnectionForm(forms.Form): 'configuration from this network making it a client.'), box_name=_(cfg.box_name)), choices=[('auto', _('Automatic')), ('dhcp', _('Automatic, DHCP only')), - ('manual', _('Manual')), ('ignore', _('Ignore'))]) + ('manual', pgettext_lazy('Not automatically', 'Manual')), + ('ignore', _('Ignore'))]) ipv6_address = forms.CharField( label=_('Address'), validators=[validators.validate_ipv6_address], required=False) diff --git a/plinth/modules/networks/views.py b/plinth/modules/networks/views.py index ace417ada..939e2d638 100644 --- a/plinth/modules/networks/views.py +++ b/plinth/modules/networks/views.py @@ -11,7 +11,7 @@ from django.utils.translation import ugettext as _ from django.views.decorators.http import require_POST from django.views.generic.edit import FormView -from plinth import kvstore, network +from plinth import network from plinth.modules import first_boot, networks from .forms import (ConnectionTypeSelectForm, EthernetForm, GenericForm, @@ -25,10 +25,8 @@ def index(request): """Show connection list.""" connections = network.get_connection_list() - network_topology = kvstore.get_default(networks.NETWORK_TOPOLOGY_TYPE_KEY, - 'to_router') - internet_connection_type = kvstore.get_default( - networks.INTERNET_CONNECTION_TYPE_KEY, 'unknown') + network_topology_type = networks.get_network_topology_type() + internet_connection_type = networks.get_internet_connection_type() return TemplateResponse( request, 'networks_configuration.html', { 'app_id': 'networks', @@ -37,7 +35,7 @@ def index(request): 'has_diagnostics': True, 'is_enabled': True, 'connections': connections, - 'network_topology': network_topology, + 'network_topology': network_topology_type, 'internet_connectivity_type': internet_connection_type, }) @@ -418,18 +416,14 @@ class NetworkTopologyView(FormView): def get_initial(self): """Get initial form data.""" - return { - 'network_topology': - kvstore.get_default(networks.NETWORK_TOPOLOGY_TYPE_KEY, - 'to_router') - } + return {'network_topology': networks.get_network_topology_type()} def form_valid(self, form): """Save value to DB.""" network_topology = form.cleaned_data['network_topology'] logger.info('Updating network topology type with value %s' % network_topology) - kvstore.set(networks.NETWORK_TOPOLOGY_TYPE_KEY, network_topology) + networks.set_network_topology_type(network_topology) if network_topology == 'to_router': self.success_url = reverse_lazy('networks:router-configuration') @@ -462,17 +456,13 @@ class RouterConfigurationView(FormView): def get_initial(self): """Return initial data for the form.""" - return { - 'router_config': - kvstore.get_default(networks.ROUTER_CONFIGURATION_TYPE_KEY, - 'not_configured') - } + return {'router_config': networks.get_router_configuration_type()} def form_valid(self, form): """Save value to DB and redirect.""" type_ = form.cleaned_data['router_config'] logger.info('Updating router configuration: %s', type_) - kvstore.set(networks.ROUTER_CONFIGURATION_TYPE_KEY, type_) + networks.set_router_configuration_type(type_) return super().form_valid(form) @@ -482,8 +472,7 @@ class RouterConfigurationFirstBootView(RouterConfigurationView): def dispatch(self, request, *args, **kwargs): """Don't show wizard step if FreedomBox is not behind a router.""" - network_topology = kvstore.get_default( - networks.NETWORK_TOPOLOGY_TYPE_KEY, 'to_router') + network_topology = networks.get_network_topology_type() if network_topology != 'to_router': first_boot.mark_step_done('router_setup_wizard') return HttpResponseRedirect(reverse_lazy(first_boot.next_step())) @@ -513,15 +502,14 @@ class InternetConnectionTypeView(FormView): """Return initial data for the form.""" return { 'internet_connection_type': - kvstore.get_default(networks.INTERNET_CONNECTION_TYPE_KEY, - 'unknown') + networks.get_internet_connection_type() } def form_valid(self, form): """Save value to DB and redirect.""" type_ = form.cleaned_data['internet_connection_type'] logger.info('Updating internet connectivity type: %s', type_) - kvstore.set(networks.INTERNET_CONNECTION_TYPE_KEY, type_) + networks.set_internet_connection_type(type_) return super().form_valid(form) diff --git a/plinth/modules/openvpn/__init__.py b/plinth/modules/openvpn/__init__.py index 29d612c94..0bb5d4de8 100644 --- a/plinth/modules/openvpn/__init__.py +++ b/plinth/modules/openvpn/__init__.py @@ -32,8 +32,6 @@ _description = [ 'for added security and anonymity.'), box_name=_(cfg.box_name)) ] -port_forwarding_info = [('UDP', 1194)] - app = None setup_process = None @@ -83,16 +81,13 @@ class OpenVPNApp(app_module.App): listen_ports=[(1194, 'udp4'), (1194, 'udp6')]) self.add(daemon) + def is_enabled(self): + """Return whether all the leader components are enabled. -def init(): - """Initialize the OpenVPN module.""" - global app - app = OpenVPNApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled() \ - and is_setup(): - app.set_enabled(True) + Return True when there are no leader components and OpenVPN setup + is done. + """ + return super().is_enabled() and is_setup() def setup(helper, old_version=None): diff --git a/plinth/modules/openvpn/views.py b/plinth/modules/openvpn/views.py index f8e917e90..8884bfbbc 100644 --- a/plinth/modules/openvpn/views.py +++ b/plinth/modules/openvpn/views.py @@ -22,7 +22,6 @@ class OpenVPNAppView(AppView): """Show OpenVPN app main page.""" app_id = 'openvpn' template_name = 'openvpn.html' - port_forwarding_info = openvpn.port_forwarding_info def dispatch(self, request, *args, **kwargs): """Collect the result of running setup process.""" diff --git a/plinth/modules/pagekite/__init__.py b/plinth/modules/pagekite/__init__.py index 429b0469d..eff0ab899 100644 --- a/plinth/modules/pagekite/__init__.py +++ b/plinth/modules/pagekite/__init__.py @@ -80,6 +80,9 @@ class PagekiteApp(app_module.App): daemon = Daemon('daemon-pagekite', managed_services[0]) self.add(daemon) + # Register kite name with Name Services module. + utils.update_names_module(is_enabled=self.is_enabled()) + def enable(self): """Send domain signals after enabling the app.""" super().enable() @@ -91,19 +94,6 @@ class PagekiteApp(app_module.App): super().disable() -def init(): - """Initialize the PageKite module""" - global app - app = PagekiteApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - # Register kite name with Name Services module. - utils.update_names_module(is_enabled=True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/performance/__init__.py b/plinth/modules/performance/__init__.py index 260171084..0c67a98bb 100644 --- a/plinth/modules/performance/__init__.py +++ b/plinth/modules/performance/__init__.py @@ -22,12 +22,12 @@ managed_services = [ managed_packages = ['cockpit-pcp'] _description = [ - ('Performance app allows you to collect, store and view information about ' - 'utilization of the hardware. This can give you basic insights into ' - 'usage patterns and whether the hardware is overloaded by users and ' - 'services.'), - ('Performance metrics are collected by Performance Co-Pilot and can be ' - 'viewed using the Cockpit app.'), + _('Performance app allows you to collect, store and view information ' + 'about utilization of the hardware. This can give you basic insights ' + 'into usage patterns and whether the hardware is overloaded by users ' + 'and services.'), + _('Performance metrics are collected by Performance Co-Pilot and can be ' + 'viewed using the Cockpit app.'), ] app = None @@ -70,16 +70,6 @@ class PerformanceApp(app_module.App): self.add(daemon_3) -def init(): - """Initialize the Performance module.""" - global app - app = PerformanceApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/power/__init__.py b/plinth/modules/power/__init__.py index ba2e4052e..936e86fac 100644 --- a/plinth/modules/power/__init__.py +++ b/plinth/modules/power/__init__.py @@ -33,10 +33,3 @@ class PowerApp(app_module.App): self.add(info) # not in menu, see issue #834 - - -def init(): - """Initialize the power module.""" - global app - app = PowerApp() - app.set_enabled(True) diff --git a/plinth/modules/privoxy/__init__.py b/plinth/modules/privoxy/__init__.py index 2848ad32b..047f5f3f3 100644 --- a/plinth/modules/privoxy/__init__.py +++ b/plinth/modules/privoxy/__init__.py @@ -89,16 +89,6 @@ class PrivoxyApp(app_module.App): return results -def init(): - """Initialize the module.""" - global app - app = PrivoxyApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.call('pre', actions.superuser_run, 'privoxy', ['pre-install']) diff --git a/plinth/modules/quassel/__init__.py b/plinth/modules/quassel/__init__.py index 90f1f4cfc..bee065c40 100644 --- a/plinth/modules/quassel/__init__.py +++ b/plinth/modules/quassel/__init__.py @@ -15,8 +15,8 @@ from plinth.daemon import Daemon from plinth.modules import names from plinth.modules.firewall.components import Firewall from plinth.modules.letsencrypt.components import LetsEncrypt -from plinth.utils import format_lazy from plinth.modules.users.components import UsersAndGroups +from plinth.utils import format_lazy from .manifest import backup, clients # noqa, pylint: disable=unused-import @@ -44,8 +44,6 @@ _description = [ 'are available.'), ] -port_forwarding_info = [('TCP', 4242)] - app = None @@ -99,16 +97,6 @@ class QuasselApp(app_module.App): self.add(users_and_groups) -def init(): - """Initialize the quassel module.""" - global app - app = QuasselApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/quassel/views.py b/plinth/modules/quassel/views.py index f8266b44c..12787e0b9 100644 --- a/plinth/modules/quassel/views.py +++ b/plinth/modules/quassel/views.py @@ -11,7 +11,6 @@ from .forms import QuasselForm class QuasselAppView(AppView): app_id = 'quassel' - port_forwarding_info = quassel.port_forwarding_info form_class = QuasselForm def get_initial(self): diff --git a/plinth/modules/radicale/__init__.py b/plinth/modules/radicale/__init__.py index 37de29ab7..c80444c57 100644 --- a/plinth/modules/radicale/__init__.py +++ b/plinth/modules/radicale/__init__.py @@ -4,30 +4,26 @@ FreedomBox app for radicale. """ import logging -import subprocess -from distutils.version import LooseVersion as LV import augeas -from apt.cache import Cache from django.utils.translation import ugettext_lazy as _ from plinth import actions from plinth import app as app_module from plinth import cfg, frontpage, menu -from plinth.daemon import Daemon from plinth.modules.apache.components import Uwsgi, Webserver from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups -from plinth.utils import format_lazy, Version +from plinth.utils import Version, format_lazy from .manifest import backup, clients # noqa, pylint: disable=unused-import version = 2 -managed_services = ['radicale'] - managed_packages = ['radicale', 'uwsgi', 'uwsgi-plugin-python3'] +managed_services = ['uwsgi'] + _description = [ format_lazy( _('Radicale is a CalDAV and CardDAV server. It allows synchronization ' @@ -45,8 +41,6 @@ logger = logging.getLogger(__name__) CONFIG_FILE = '/etc/radicale/config' -VERSION_2 = LV('2') - app = None @@ -81,135 +75,26 @@ class RadicaleApp(app_module.App): ports=['http', 'https'], is_external=True) self.add(firewall) - webserver = RadicaleWebserver('webserver-radicale', None, - urls=['https://{host}/radicale']) + webserver = Webserver('webserver-radicale', 'radicale2-freedombox', + urls=['https://{host}/radicale']) self.add(webserver) - uwsgi = RadicaleUwsgi('uwsgi-radicale', 'radicale') + uwsgi = Uwsgi('uwsgi-radicale', 'radicale') self.add(uwsgi) - daemon = RadicaleDaemon('daemon-radicale', managed_services[0]) - self.add(daemon) - users_and_groups = UsersAndGroups('users-and-groups-radicale', reserved_usernames=['radicale']) self.add(users_and_groups) - -class RadicaleWebserver(Webserver): - """Webserver enable/disable behavior specific for radicale.""" - - @property - def web_name(self): - """Return web configuration name based on radicale version.""" - current_version = get_package_version() - if current_version and current_version < VERSION_2: - return 'radicale-plinth' - - return 'radicale2-freedombox' - - @web_name.setter - def web_name(self, web_name): - """Set the web name""" - - -class RadicaleUwsgi(Uwsgi): - """uWSGI enable/disable behavior specific for radicale.""" - - def is_enabled(self): - """Return whether the uWSGI configuration is enabled if version>=2.""" - package_version = get_package_version() - if package_version and package_version >= VERSION_2: - return super().is_enabled() - - return True - def enable(self): - """Enable the uWSGI configuration if version >=2.""" - package_version = get_package_version() - if package_version and package_version >= VERSION_2: - actions.superuser_run('radicale', ['fix-collections']) - super().enable() - - def disable(self): - """Disable the uWSGI configuration if version >=2.""" - package_version = get_package_version() - if package_version and package_version >= VERSION_2: - super().disable() - - -class RadicaleDaemon(Daemon): - """Daemon enable/disable behavior specific for radicale.""" - - @staticmethod - def _is_old_radicale(): - """Return whether radicale is less than version 2.""" - package_version = get_package_version() - return package_version and package_version < VERSION_2 - - def is_enabled(self): - """Return whether daemon is enabled if version < 2.""" - if self._is_old_radicale(): - return super().is_enabled() - - return True - - def enable(self): - """Enable the daemon if version < 2.""" - if self._is_old_radicale(): - super().enable() - else: - super().disable() - - def disable(self): - """Disable the daemon if version < 2.""" - if self._is_old_radicale(): - super().disable() - - def is_running(self): - """Return whether daemon is enabled if version < 2.""" - if self._is_old_radicale(): - return super().is_running() - - return True - - -def init(): - """Initialize the radicale module.""" - global app - app = RadicaleApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) + """Fix missing directories before enabling radicale.""" + actions.superuser_run('radicale', ['fix-paths']) + super().enable() def setup(helper, old_version=None): """Install and configure the module.""" - if old_version == 1: - # Check that radicale 2.x is available for install. - cache = Cache() - candidate = cache['radicale'].candidate - if candidate < '2': - logger.error('Radicale 2.x is not available to install.') - - # Try to upgrade radicale 1.x to 2.x. - helper.call('pre', actions.superuser_run, 'radicale', ['migrate']) - helper.install(managed_packages, force_configuration='new') - - # Check that radicale 2.x is installed. - current_version = get_package_version() - if not current_version: - logger.error('Could not determine installed version of radicale.') - elif current_version < VERSION_2: - logger.error('Could not install radicale 2.x.') - - # Enable radicale. - helper.call('post', actions.superuser_run, 'radicale', ['setup']) - else: - helper.install(managed_packages) - helper.call('post', actions.superuser_run, 'radicale', ['setup']) - + helper.install(managed_packages) helper.call('post', app.enable) @@ -219,10 +104,6 @@ def force_upgrade(helper, packages): return False # Allow upgrade from 2.* to newer 2.* - current_version = get_package_version() - if not current_version or current_version < VERSION_2: - return False - package = packages['radicale'] if Version(package['new_version']) > Version('3~'): return False @@ -234,30 +115,6 @@ def force_upgrade(helper, packages): return True -def get_package_version(): - try: - proc = subprocess.run(['radicale', '--version'], - stdout=subprocess.PIPE, check=True) - output = proc.stdout.decode('utf-8') - except subprocess.CalledProcessError: - return None - - package_version = str(output.strip()) - return LV(package_version) - - -def enable(): - """Enable the module.""" - actions.superuser_run('radicale', ['enable']) - app.enable() - - -def disable(): - """Disable the module.""" - actions.superuser_run('radicale', ['disable']) - app.disable() - - def load_augeas(): """Prepares the augeas.""" aug = augeas.Augeas(flags=augeas.Augeas.NO_LOAD + @@ -276,10 +133,8 @@ def get_rights_value(): aug = load_augeas() value = aug.get('/files' + CONFIG_FILE + '/rights/type') - current_version = get_package_version() - if current_version and current_version >= VERSION_2: - if value == 'from_file': - # Radicale 2.x default rights file is equivalent to owner_only. - value = 'owner_only' + if value == 'from_file': + # Default rights file is equivalent to owner_only. + value = 'owner_only' return value diff --git a/plinth/modules/radicale/data/etc/apache2/conf-available/radicale-plinth.conf b/plinth/modules/radicale/data/etc/apache2/conf-available/radicale-plinth.conf deleted file mode 100644 index ed6ba9f59..000000000 --- a/plinth/modules/radicale/data/etc/apache2/conf-available/radicale-plinth.conf +++ /dev/null @@ -1,13 +0,0 @@ -## -## On all sites, provide Radicale on a path: /radicale -## Allow all valid users. -## -Redirect 301 /.well-known/carddav /radicale/.well-known/carddav -Redirect 301 /.well-known/caldav /radicale/.well-known/caldav - - - ProxyPass http://localhost:5232 - - Include includes/freedombox-auth-ldap.conf - Require valid-user - diff --git a/plinth/modules/radicale/forms.py b/plinth/modules/radicale/forms.py index 6536b9e92..0ce96e0f2 100644 --- a/plinth/modules/radicale/forms.py +++ b/plinth/modules/radicale/forms.py @@ -27,5 +27,6 @@ CHOICES = [ class RadicaleForm(forms.Form): """Specialized configuration form for radicale service.""" - access_rights = forms.ChoiceField(choices=CHOICES, required=True, + access_rights = forms.ChoiceField(label=_('Access rights'), + choices=CHOICES, required=True, widget=forms.RadioSelect()) diff --git a/plinth/modules/radicale/manifest.py b/plinth/modules/radicale/manifest.py index 965b491fd..f17f220ec 100644 --- a/plinth/modules/radicale/manifest.py +++ b/plinth/modules/radicale/manifest.py @@ -83,5 +83,5 @@ backup = validate_backup({ 'data': { 'directories': ['/var/lib/radicale/'] }, - 'services': ['radicale'] + 'services': ['uwsgi'] }) diff --git a/plinth/modules/radicale/tests/radicale.feature b/plinth/modules/radicale/tests/radicale.feature index 728e76273..431e00cbb 100644 --- a/plinth/modules/radicale/tests/radicale.feature +++ b/plinth/modules/radicale/tests/radicale.feature @@ -36,6 +36,16 @@ Scenario: Authenticated access rights Then the radicale service should be running And the access rights should be "any user can view or make changes" +@backups +Scenario: Backup and restore radicale + Given the radicale application is enabled + And the access rights are set to "only the owner can view or make changes" + When I create a backup of the radicale app data with name test_radicale + And I change the access rights to "any user can view, but only the owner can make changes" + And I restore the radicale app data backup with name test_radicale + Then the radicale service should be running + And the access rights should be "only the owner can view or make changes" + Scenario: Disable radicale application Given the radicale application is enabled When I disable the radicale application diff --git a/plinth/modules/roundcube/__init__.py b/plinth/modules/roundcube/__init__.py index 25a055d09..9452140b2 100644 --- a/plinth/modules/roundcube/__init__.py +++ b/plinth/modules/roundcube/__init__.py @@ -77,16 +77,6 @@ class RoundcubeApp(app_module.App): self.add(webserver) -def init(): - """Initialize the module.""" - global app - app = RoundcubeApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.call('pre', actions.superuser_run, 'roundcube', ['pre-install']) diff --git a/plinth/modules/samba/__init__.py b/plinth/modules/samba/__init__.py index 33f474e42..bc59a274e 100644 --- a/plinth/modules/samba/__init__.py +++ b/plinth/modules/samba/__init__.py @@ -98,16 +98,6 @@ class SambaApp(app_module.App): self.add(users_and_groups) -def init(): - """Initialize the module.""" - global app - app = SambaApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/samba/tests/test_views.py b/plinth/modules/samba/tests/test_views.py index 2bf5ae490..f0bc5592e 100644 --- a/plinth/modules/samba/tests/test_views.py +++ b/plinth/modules/samba/tests/test_views.py @@ -27,6 +27,14 @@ DISKS = [{ 'percent_used': 63, 'size_str': '9.5 GiB', 'used_str': '5.7 GiB' +}, { + 'device': '/dev/sda2', + 'label': '', + 'filesystem_type': 'vfat', + 'mount_point': '/boot/efi', + 'percent_used': 50, + 'size_str': '150 MiB', + 'used_str': '75 MiB' }] SHARES = [ @@ -47,7 +55,7 @@ SHARES = [ "mount_point": "/media/root/otherdisk", "path": "/media/root/otherdisk/FreedomBox/shares/homes/open_share", "share_type": "open" - } + }, ] @@ -96,20 +104,16 @@ def test_samba_shares_view(rf): view = views.SambaAppView.as_view() response, _ = make_request(rf.get(''), view) - assert response.context_data['disks'] == DISKS + assert response.context_data['disks'] == [DISKS[0]] assert response.context_data['shared_mounts'] == { '/': ['open', 'home'], '/media/root/otherdisk': ['open'] } assert response.context_data['unavailable_shares'] == [{ - 'mount_point': - '/media/root/otherdisk', - 'name': - 'otherdisk', - 'path': - '/media/root/otherdisk/FreedomBox/shares/homes/open_share', - 'share_type': - 'open' + 'mount_point': '/media/root/otherdisk', + 'name': 'otherdisk', + 'path': '/media/root/otherdisk/FreedomBox/shares/homes/open_share', + 'share_type': 'open' }] assert response.context_data['users'] == USERS assert response.status_code == 200 @@ -119,8 +123,8 @@ def test_enable_samba_share_view(rf): """Test that enabling share sends correct success message.""" form_data = {'filesystem_type': 'ext4', 'open_share': 'enable'} mount_point = urllib.parse.quote('/') - response, messages = make_request( - rf.post('', data=form_data), views.share, mount_point=mount_point) + response, messages = make_request(rf.post('', data=form_data), views.share, + mount_point=mount_point) assert list(messages)[0].message == 'Share enabled.' assert response.status_code == 302 @@ -134,8 +138,8 @@ def test_enable_samba_share_failed_view(rf): error_message = 'Sharing failed' with patch('plinth.modules.samba.add_share', side_effect=ActionError(error_message)): - response, messages = make_request( - rf.post('', data=form_data), views.share, mount_point=mount_point) + response, messages = make_request(rf.post('', data=form_data), + views.share, mount_point=mount_point) assert list(messages)[0].message == 'Error enabling share: {0}'.format( error_message) @@ -147,8 +151,8 @@ def test_disable_samba_share(rf): """Test that enabling share sends correct success message.""" form_data = {'filesystem_type': 'ext4', 'open_share': 'disable'} mount_point = urllib.parse.quote('/') - response, messages = make_request( - rf.post('', data=form_data), views.share, mount_point=mount_point) + response, messages = make_request(rf.post('', data=form_data), views.share, + mount_point=mount_point) assert list(messages)[0].message == 'Share disabled.' assert response.status_code == 302 @@ -162,10 +166,11 @@ def test_disable_samba_share_failed_view(rf): error_message = 'Unsharing failed' with patch('plinth.modules.samba.delete_share', side_effect=ActionError(error_message)): - response, messages = make_request( - rf.post('', data=form_data), views.share, mount_point=mount_point) + response, messages = make_request(rf.post('', data=form_data), + views.share, mount_point=mount_point) - assert list(messages)[ - 0].message == 'Error disabling share: {0}'.format(error_message) + assert list( + messages)[0].message == 'Error disabling share: {0}'.format( + error_message) assert response.status_code == 302 assert response.url == urls.reverse('samba:index') diff --git a/plinth/modules/samba/views.py b/plinth/modules/samba/views.py index 3de708c44..a1b4786ed 100644 --- a/plinth/modules/samba/views.py +++ b/plinth/modules/samba/views.py @@ -12,7 +12,6 @@ from django.shortcuts import redirect from django.urls import reverse from django.utils.translation import ugettext as _ from django.views.decorators.http import require_POST - from plinth import views from plinth.errors import ActionError from plinth.modules import samba, storage @@ -20,6 +19,15 @@ from plinth.modules import samba, storage logger = logging.getLogger(__name__) +def get_share_mounts(): + """Return list of mount points.""" + ignore_points = ('/boot', '/boot/efi', '/boot/firmware', '/.snapshots') + return [ + mount for mount in storage.get_mounts() + if mount['mount_point'] not in ignore_points + ] + + class SambaAppView(views.AppView): """Samba sharing basic configuration.""" app_id = 'samba' @@ -28,7 +36,7 @@ class SambaAppView(views.AppView): def get_context_data(self, *args, **kwargs): """Return template context data.""" context = super().get_context_data(*args, **kwargs) - disks = storage.get_mounts() + disks = get_share_mounts() shares = samba.get_shares() for disk in disks: diff --git a/plinth/modules/searx/__init__.py b/plinth/modules/searx/__init__.py index 162865d45..a1beef45b 100644 --- a/plinth/modules/searx/__init__.py +++ b/plinth/modules/searx/__init__.py @@ -15,7 +15,7 @@ from plinth.modules.firewall.components import Firewall from plinth.modules.users.components import UsersAndGroups from .manifest import (PUBLIC_ACCESS_SETTING_FILE, # noqa, pylint: disable=unused-import - backup, clients) + backup, clients) version = 4 @@ -103,16 +103,6 @@ class SearxWebserverAuth(Webserver): super().enable() -def init(): - """Initialize the module.""" - global app - app = SearxApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/searx/tests/searx.feature b/plinth/modules/searx/tests/searx.feature index 66b01baa4..83f0b07b7 100644 --- a/plinth/modules/searx/tests/searx.feature +++ b/plinth/modules/searx/tests/searx.feature @@ -12,6 +12,7 @@ Scenario: Enable searx application Given the searx application is disabled When I enable the searx application Then the searx site should be available + And the search form should be visible @backups Scenario: Backup and restore searx diff --git a/plinth/modules/searx/tests/test_functional.py b/plinth/modules/searx/tests/test_functional.py index e24ca2548..747067bb1 100644 --- a/plinth/modules/searx/tests/test_functional.py +++ b/plinth/modules/searx/tests/test_functional.py @@ -3,7 +3,7 @@ Functional, browser based tests for searx app. """ -from pytest_bdd import given, scenarios, when +from pytest_bdd import given, scenarios, then, when from plinth.tests import functional @@ -25,6 +25,11 @@ def searx_disable_public_access(session_browser): _disable_public_access(session_browser) +@then('the search form should be visible') +def is_searx_search_form_visible(session_browser): + _is_search_form_visible(session_browser) + + def _enable_public_access(browser): """Enable Public Access in SearX""" functional.nav_to_module(browser, 'searx') @@ -37,3 +42,10 @@ def _disable_public_access(browser): functional.nav_to_module(browser, 'searx') browser.find_by_id('id_public_access').uncheck() functional.submit(browser, form_class='form-configuration') + + +def _is_search_form_visible(browser): + """Checks whether the search box is shown in the Searx web interface.""" + searx_app_url = functional.config['DEFAULT']['url'] + '/searx' + browser.visit(searx_app_url) + assert browser.find_by_id("search_form") diff --git a/plinth/modules/security/__init__.py b/plinth/modules/security/__init__.py index 1e5446f08..4d78bbd9b 100644 --- a/plinth/modules/security/__init__.py +++ b/plinth/modules/security/__init__.py @@ -51,13 +51,6 @@ class SecurityApp(app_module.App): self.add(menu_item) -def init(): - """Initialize the module""" - global app - app = SecurityApp() - app.set_enabled(True) - - def setup(helper, old_version=None): """Install the required packages""" helper.install(managed_packages) diff --git a/plinth/modules/security/templates/security.html b/plinth/modules/security/templates/security.html index a9ce919e1..edf9a0b79 100644 --- a/plinth/modules/security/templates/security.html +++ b/plinth/modules/security/templates/security.html @@ -12,4 +12,24 @@ {% trans "Show security report" %} + + {% if is_backports_requested %} +

    {% trans "Frequent Feature Updates" %}

    +

    + {% blocktrans trimmed %} + Frequent feature updates are activated. + {% endblocktrans %} +

    +

    + {% blocktrans trimmed %} + Frequent feature updates allow the {{box_name}} Service, plus a very + limited set of software, to receive new features more frequently (from + the backports repository). This results in receiving some new features + within weeks, instead of only once every 2 years or so. Note that + software with frequent feature updates does not have support from the + Debian Security Team. Instead, they are maintained by contributors to + Debian and the {{box_name}} community. + {% endblocktrans %} +

    + {% endif %} {% endblock %} diff --git a/plinth/modules/security/views.py b/plinth/modules/security/views.py index d6ed5cd51..2270fb746 100644 --- a/plinth/modules/security/views.py +++ b/plinth/modules/security/views.py @@ -9,6 +9,7 @@ from django.utils.translation import ugettext as _ from plinth import action_utils, actions from plinth.modules import security +from plinth.modules.upgrades import is_backports_requested from .forms import SecurityForm @@ -28,10 +29,12 @@ def index(request): else: form = SecurityForm(initial=status, prefix='security') - return TemplateResponse(request, 'security.html', { - 'app_info': security.app.info, - 'form': form, - }) + return TemplateResponse( + request, 'security.html', { + 'app_info': security.app.info, + 'form': form, + 'is_backports_requested': is_backports_requested(), + }) def get_status(request): diff --git a/plinth/modules/shaarli/__init__.py b/plinth/modules/shaarli/__init__.py index bcdbb3698..3433f10d1 100644 --- a/plinth/modules/shaarli/__init__.py +++ b/plinth/modules/shaarli/__init__.py @@ -60,16 +60,6 @@ class ShaarliApp(app_module.App): self.add(webserver) -def init(): - """Initialize the module.""" - global app - app = ShaarliApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/shadowsocks/__init__.py b/plinth/modules/shadowsocks/__init__.py index 705c65447..66ffa53a4 100644 --- a/plinth/modules/shadowsocks/__init__.py +++ b/plinth/modules/shadowsocks/__init__.py @@ -77,16 +77,6 @@ class ShadowsocksApp(app_module.App): self.add(daemon) -def init(): - """Initialize the module.""" - global app - app = ShadowsocksApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/sharing/__init__.py b/plinth/modules/sharing/__init__.py index da9c86793..10dad5a43 100644 --- a/plinth/modules/sharing/__init__.py +++ b/plinth/modules/sharing/__init__.py @@ -36,7 +36,7 @@ class SharingApp(app_module.App): super().__init__() info = app_module.Info(app_id=self.app_id, version=version, name=_('Sharing'), icon_filename='sharing', - description=_description) + manual_page='Sharing', description=_description) self.add(info) menu_item = menu.Menu('menu-sharing', info.name, None, @@ -45,13 +45,6 @@ class SharingApp(app_module.App): self.add(menu_item) -def init(): - """Initialize the module.""" - global app - app = SharingApp() - app.set_enabled(True) - - def list_shares(): """Return a list of shares.""" output = actions.superuser_run('sharing', ['list']) diff --git a/plinth/modules/snapshot/__init__.py b/plinth/modules/snapshot/__init__.py index 13faf8d48..b126ab888 100644 --- a/plinth/modules/snapshot/__init__.py +++ b/plinth/modules/snapshot/__init__.py @@ -61,16 +61,6 @@ class SnapshotApp(app_module.App): self.add(menu_item) -def init(): - """Initialize the module.""" - global app - app = SnapshotApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def is_supported(): """Return whether snapshots are support on current setup.""" fs_type = storage.get_filesystem_type() diff --git a/plinth/modules/snapshot/forms.py b/plinth/modules/snapshot/forms.py index 3404b86e0..19be2ee98 100644 --- a/plinth/modules/snapshot/forms.py +++ b/plinth/modules/snapshot/forms.py @@ -20,13 +20,13 @@ class SnapshotForm(forms.Form): label=_('Timeline Snapshots'), help_text=_('Enable or disable timeline snapshots ' '(hourly, daily, monthly and yearly).'), - choices=[('yes', 'Enabled'), ('no', 'Disabled')]) + choices=[('yes', _('Enabled')), ('no', _('Disabled'))]) enable_software_snapshots = forms.ChoiceField( label=_('Software Installation Snapshots'), help_text=_('Enable or disable snapshots before and after software ' - 'installation'), choices=[('yes', 'Enabled'), - ('no', 'Disabled')]) + 'installation'), choices=[('yes', _('Enabled')), + ('no', _('Disabled'))]) hourly_limit = forms.IntegerField( label=_('Hourly Snapshots Limit'), min_value=0, @@ -47,4 +47,4 @@ class SnapshotForm(forms.Form): yearly_limit = forms.IntegerField( label=_('Yearly Snapshots Limit'), min_value=0, help_text=_('Keep a maximum of this many yearly snapshots. ' - 'The default value is 0 (disabled).')) + 'The default value is 0 (keep no yearly snapshot).')) diff --git a/plinth/modules/snapshot/templates/snapshot_not_supported.html b/plinth/modules/snapshot/templates/snapshot_not_supported.html index 5a932f158..7e72da616 100644 --- a/plinth/modules/snapshot/templates/snapshot_not_supported.html +++ b/plinth/modules/snapshot/templates/snapshot_not_supported.html @@ -7,7 +7,7 @@ {% load i18n %} {% block configuration %} -
    +
    {% blocktrans trimmed with fs_types_supported|join:', ' as types_supported %} You have a filesystem of type {{ fs_type }}. Snapshots are currently only available on {{ types_supported }} diff --git a/plinth/modules/snapshot/tests/snapshot.feature b/plinth/modules/snapshot/tests/snapshot.feature index ce49b2580..bd2687186 100644 --- a/plinth/modules/snapshot/tests/snapshot.feature +++ b/plinth/modules/snapshot/tests/snapshot.feature @@ -6,7 +6,8 @@ Feature: Storage Snapshots Background: Given I'm a logged in user - Given the snapshot application is installed + And the snapshot application is installed + And the filesystem supports snapshots Scenario: Create a snapshot Given the list of snapshots is empty diff --git a/plinth/modules/snapshot/tests/test_functional.py b/plinth/modules/snapshot/tests/test_functional.py index 6016ad957..e036d5772 100644 --- a/plinth/modules/snapshot/tests/test_functional.py +++ b/plinth/modules/snapshot/tests/test_functional.py @@ -3,6 +3,7 @@ Functional, browser based tests for snapshot app. """ +import pytest from pytest_bdd import given, parsers, scenarios, then, when from plinth.tests import functional @@ -10,6 +11,13 @@ from plinth.tests import functional scenarios('snapshot.feature') +@given('the filesystem supports snapshots') +def is_snapshots_supported(session_browser): + if not _is_snapshot_supported(session_browser): + pytest.skip('Filesystem doesn\'t support snapshots') + assert True + + @given('the list of snapshots is empty') def empty_snapshots_list(session_browser): _delete_all(session_browser) @@ -99,6 +107,12 @@ def _get_count(browser): return len(browser.find_by_xpath('//tr')) - 1 +def _is_snapshot_supported(browser): + """Return whether the filesystem supports snapshots.""" + functional.nav_to_module(browser, 'snapshot') + return not bool(browser.find_by_id('snapshot-not-supported')) + + def _set_configuration(browser, free_space, timeline_enabled, software_enabled, hourly, daily, weekly, monthly, yearly): """Set the configuration for snapshots.""" diff --git a/plinth/modules/ssh/__init__.py b/plinth/modules/ssh/__init__.py index a100059bf..3657fd849 100644 --- a/plinth/modules/ssh/__init__.py +++ b/plinth/modules/ssh/__init__.py @@ -32,8 +32,6 @@ _description = [ 'using such connections.') ] -port_forwarding_info = [('TCP', 22)] - app = None @@ -63,14 +61,6 @@ class SSHApp(app_module.App): self.add(daemon) -def init(): - """Initialize the ssh module.""" - global app - app = SSHApp() - if app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Configure the module.""" actions.superuser_run('ssh', ['setup']) diff --git a/plinth/modules/sso/__init__.py b/plinth/modules/sso/__init__.py index 2a6912adf..0d2197472 100644 --- a/plinth/modules/sso/__init__.py +++ b/plinth/modules/sso/__init__.py @@ -28,6 +28,7 @@ class SSOApp(app_module.App): def __init__(self): """Create components for the app.""" + super().__init__() info = app_module.Info(app_id=self.app_id, version=version, is_essential=is_essential, depends=depends, name=_('Single Sign On')) diff --git a/plinth/modules/storage/__init__.py b/plinth/modules/storage/__init__.py index facb5d0b9..471c55dcc 100644 --- a/plinth/modules/storage/__init__.py +++ b/plinth/modules/storage/__init__.py @@ -67,13 +67,6 @@ class StorageApp(app_module.App): glib.schedule(3, udisks2.init, repeat=False) -def init(): - """Initialize the module.""" - global app - app = StorageApp() - app.set_enabled(True) - - def get_disks(): """Returns list of disks and their free space. diff --git a/plinth/modules/storage/tests/test_storage.py b/plinth/modules/storage/tests/test_storage.py index 3a3f84b49..db11baca0 100644 --- a/plinth/modules/storage/tests/test_storage.py +++ b/plinth/modules/storage/tests/test_storage.py @@ -43,6 +43,14 @@ class Disk(): self.disk_file = disk_file + def expand_disk_file(self, size): + """Expand the disk file.""" + command = f'truncate --size={size}M {self.disk_file.name}' + subprocess.run(command.split(), check=True) + self._unmount_file_systems() + self._cleanup_loopback() + self._setup_loopback() + def _setup_loopback(self): """Setup loop back on the create disk file.""" command = 'losetup --show --find {file}'.format( @@ -112,6 +120,7 @@ class Disk(): self._create_partitions() self._setup_loopback() self._create_file_systems() + return self def __exit__(self, *exc): """Exit the context, destroy the test disk.""" @@ -162,32 +171,45 @@ class TestActions: 'mkpart extended 8 12', 'mkpart extended 12 16', 'mkpart extended 16 160' ] - with Disk(self, 256, disk_info, [(5, 'btrfs')]): + with Disk(self, 192, disk_info, [(5, 'btrfs')]) as disk: + # Second header already at the end + self.assert_free_space(5, space=True) + self.expand_partition(5, success=True) + self.expand_partition(5, success=False) + disk.expand_disk_file(256) + # Second header not at the end self.assert_free_space(5, space=True) self.expand_partition(5, success=True) self.expand_partition(5, success=False) @pytest.mark.usefixtures('needs_root') - def test_unsupported_file_system(self): + @pytest.mark.parametrize('partition_table_type', ['gpt', 'msdos']) + def test_unsupported_file_system(self, partition_table_type): """Test that free space after unknown file system does not count.""" - disk_info = ['mktable msdos', 'mkpart primary 1 8'] + disk_info = [f'mktable {partition_table_type}', 'mkpart primary 1 8'] with Disk(self, 32, disk_info): self.assert_free_space(1, space=False) self.expand_partition(1, success=False) @pytest.mark.usefixtures('needs_root') - def test_btrfs_expansion(self): + @pytest.mark.parametrize('partition_table_type', ['gpt', 'msdos']) + def test_btrfs_expansion(self, partition_table_type): """Test that btrfs file system can be expanded.""" - disk_info = ['mktable msdos', 'mkpart primary btrfs 1 200'] + disk_info = [ + f'mktable {partition_table_type}', 'mkpart primary btrfs 1 200' + ] with Disk(self, 256, disk_info, [(1, 'btrfs')]): self.expand_partition(1, success=True) self.expand_partition(1, success=False) self.assert_btrfs_file_system_healthy(1) @pytest.mark.usefixtures('needs_root') - def test_ext4_expansion(self): + @pytest.mark.parametrize('partition_table_type', ['gpt', 'msdos']) + def test_ext4_expansion(self, partition_table_type): """Test that ext4 file system can be expanded.""" - disk_info = ['mktable msdos', 'mkpart primary ext4 1 64'] + disk_info = [ + f'mktable {partition_table_type}', 'mkpart primary ext4 1 64' + ] with Disk(self, 128, disk_info, [(1, 'ext4')]): self.expand_partition(1, success=True) self.expand_partition(1, success=False) diff --git a/plinth/modules/syncthing/__init__.py b/plinth/modules/syncthing/__init__.py index a3190ce24..c8fdaf2b0 100644 --- a/plinth/modules/syncthing/__init__.py +++ b/plinth/modules/syncthing/__init__.py @@ -90,21 +90,11 @@ class SyncthingApp(app_module.App): daemon = Daemon('daemon-syncthing', managed_services[0]) self.add(daemon) - users_and_groups = UsersAndGroups( - 'users-and-groups-syncthing', [SYSTEM_USER], self.groups) + users_and_groups = UsersAndGroups('users-and-groups-syncthing', + [SYSTEM_USER], self.groups) self.add(users_and_groups) -def init(): - """Initialize the module.""" - global app - app = SyncthingApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/tahoe/__init__.py b/plinth/modules/tahoe/__init__.py index 2c5fedcab..057bd54a1 100644 --- a/plinth/modules/tahoe/__init__.py +++ b/plinth/modules/tahoe/__init__.py @@ -37,11 +37,6 @@ _description = [ 'node to the other storage nodes.'), box_name=_(cfg.box_name)), ] -port_forwarding_info = [ - ('TCP', 3456), - ('TCP', 5678), -] - tahoe_home = '/var/lib/tahoe-lafs' introducer_name = 'introducer' storage_node_name = 'storage_node' @@ -92,6 +87,14 @@ class TahoeApp(app_module.App): daemon = Daemon('daemon-tahoe', managed_services[0]) self.add(daemon) + def is_enabled(self): + """Return whether all the leader components are enabled. + + Return True when there are no leader components and + domain name is setup. + """ + return super().is_enabled() and is_setup() + def diagnose(self): """Run diagnostics and return the results.""" results = super().diagnose() @@ -108,6 +111,7 @@ class TahoeApp(app_module.App): class Shortcut(frontpage.Shortcut): """Frontpage shortcut to use configured domain name for URL.""" + def enable(self): """Set the proper shortcut URL when enabled.""" super().enable() @@ -130,17 +134,6 @@ def get_configured_domain_name(): return dnf.read().rstrip() -def init(): - """Initialize the module.""" - global app - app = TahoeApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and is_setup() \ - and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/tahoe/views.py b/plinth/modules/tahoe/views.py index 4ddec91eb..82bfd6510 100644 --- a/plinth/modules/tahoe/views.py +++ b/plinth/modules/tahoe/views.py @@ -36,7 +36,6 @@ class TahoeAppView(AppView): """Show tahoe-lafs service page.""" app_id = 'tahoe' template_name = 'tahoe-post-setup.html' - port_forwarding_info = tahoe.port_forwarding_info def dispatch(self, request, *args, **kwargs): if not tahoe.is_setup(): diff --git a/plinth/modules/tor/__init__.py b/plinth/modules/tor/__init__.py index f074526f1..7cd98bfc9 100644 --- a/plinth/modules/tor/__init__.py +++ b/plinth/modules/tor/__init__.py @@ -10,7 +10,8 @@ from django.utils.translation import ugettext_lazy as _ from plinth import action_utils, actions from plinth import app as app_module from plinth import menu -from plinth.daemon import Daemon, diagnose_netcat, diagnose_port_listening +from plinth.daemon import (Daemon, app_is_running, diagnose_netcat, + diagnose_port_listening) from plinth.modules.apache.components import diagnose_url from plinth.modules.firewall.components import Firewall from plinth.modules.names.components import DomainType @@ -85,6 +86,17 @@ class TorApp(app_module.App): reserved_usernames=['debian-tor']) self.add(users_and_groups) + # Register hidden service name with Name Services module. + if self.is_enabled() and app_is_running(self): + status = utils.get_status(initialized=False) + hostname = status['hs_hostname'] + services = [int(port['virtport']) for port in status['hs_ports']] + + if status['hs_enabled'] and status['hs_hostname']: + domain_added.send_robust(sender='tor', + domain_type='domain-type-tor', + name=hostname, services=services) + def diagnose(self): """Run diagnostics and return the results.""" results = super().diagnose() @@ -133,30 +145,6 @@ class TorApp(app_module.App): return results -def init(): - """Initialize the module.""" - global app - app = TorApp() - - setup_helper = globals()['setup_helper'] - needs_setup = setup_helper.get_state() == 'needs-setup' - - if not needs_setup: - if app.is_enabled(): - app.set_enabled(True) - - # Register hidden service name with Name Services module. - status = utils.get_status() - hostname = status['hs_hostname'] - services = [int(port['virtport']) for port in status['hs_ports']] - - if status['enabled'] and status['is_running'] and \ - status['hs_enabled'] and status['hs_hostname']: - domain_added.send_robust(sender='tor', - domain_type='domain-type-tor', - name=hostname, services=services) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/tor/utils.py b/plinth/modules/tor/utils.py index 27387a058..292d2925c 100644 --- a/plinth/modules/tor/utils.py +++ b/plinth/modules/tor/utils.py @@ -19,7 +19,7 @@ APT_SOURCES_URI_PATHS = ('/files/etc/apt/sources.list/*/uri', APT_TOR_PREFIX = 'tor+' -def get_status(): +def get_status(initialized=True): """Return current Tor status.""" output = actions.superuser_run('tor', ['get-status']) status = json.loads(output) @@ -43,8 +43,8 @@ def get_status(): } return { - 'enabled': tor.app.is_enabled(), - 'is_running': app_is_running(tor.app), + 'enabled': tor.app.is_enabled() if initialized else False, + 'is_running': app_is_running(tor.app) if initialized else False, 'use_upstream_bridges': status['use_upstream_bridges'], 'upstream_bridges': status['upstream_bridges'], 'relay_enabled': status['relay_enabled'], diff --git a/plinth/modules/transmission/__init__.py b/plinth/modules/transmission/__init__.py index 29bf1367c..055b52bd9 100644 --- a/plinth/modules/transmission/__init__.py +++ b/plinth/modules/transmission/__init__.py @@ -85,16 +85,6 @@ class TransmissionApp(app_module.App): self.add(users_and_groups) -def init(): - """Initialize the Transmission module.""" - global app - app = TransmissionApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) diff --git a/plinth/modules/ttrss/__init__.py b/plinth/modules/ttrss/__init__.py index 18784bdaf..69f070de5 100644 --- a/plinth/modules/ttrss/__init__.py +++ b/plinth/modules/ttrss/__init__.py @@ -93,16 +93,6 @@ class TTRSSApp(app_module.App): actions.superuser_run('ttrss', ['enable-api-access']) -def init(): - """Initialize the module.""" - global app - app = TTRSSApp() - - setup_helper = globals()['setup_helper'] - if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.call('pre', actions.superuser_run, 'ttrss', ['pre-setup']) diff --git a/plinth/modules/upgrades/__init__.py b/plinth/modules/upgrades/__init__.py index 7d83ca633..5ae2c85f3 100644 --- a/plinth/modules/upgrades/__init__.py +++ b/plinth/modules/upgrades/__init__.py @@ -3,6 +3,11 @@ FreedomBox app for upgrades. """ +import logging +import os +import subprocess + +from aptsources import sourceslist from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_noop @@ -13,12 +18,20 @@ from plinth import cfg, glib, menu from .manifest import backup # noqa, pylint: disable=unused-import -version = 3 +version = 7 is_essential = True managed_packages = ['unattended-upgrades', 'needrestart'] +first_boot_steps = [ + { + 'id': 'backports_wizard', + 'url': 'upgrades:backports-firstboot', + 'order': 5, + }, +] + _description = [ _('Check for and apply the latest software and security updates.'), _('Updates are run at 06:00 everyday according to local time zone. Set ' @@ -30,6 +43,12 @@ _description = [ app = None +BACKPORTS_REQUESTED_KEY = 'upgrades_backports_requested' + +SOURCES_LIST = '/etc/apt/sources.list.d/freedombox2.list' + +logger = logging.getLogger(__name__) + class UpgradesApp(app_module.App): """FreedomBox app for software upgrades.""" @@ -56,7 +75,7 @@ class UpgradesApp(app_module.App): # Check every day for setting up apt backport sources, every 3 minutes # in debug mode. interval = 180 if cfg.develop else 24 * 3600 - glib.schedule(interval, _setup_repositories) + glib.schedule(interval, setup_repositories) def _show_new_release_notification(self): """When upgraded to new release, show a notification.""" @@ -88,13 +107,6 @@ class UpgradesApp(app_module.App): note.dismiss(should_dismiss=dismiss) -def init(): - """Initialize the module.""" - global app - app = UpgradesApp() - app.set_enabled(True) - - def setup(helper, old_version=None): """Install and configure the module.""" helper.install(managed_packages) @@ -107,9 +119,14 @@ def setup(helper, old_version=None): # increment. helper.call('post', actions.superuser_run, 'upgrades', ['setup']) + # When upgrading from a version without first boot wizard for backports, + # assume backports have been requested. + if old_version and old_version < 7: + set_backports_requested(can_activate_backports()) + # Try to setup apt repositories, if needed, if possible, on first install # and on version increment. - helper.call('post', _setup_repositories, None) + helper.call('post', setup_repositories, None) def is_enabled(): @@ -128,6 +145,62 @@ def disable(): actions.superuser_run('upgrades', ['disable-auto']) -def _setup_repositories(data): +def setup_repositories(data): """Setup apt backport repositories.""" - actions.superuser_run('upgrades', ['setup-repositories']) + if is_backports_requested(): + command = ['setup-repositories'] + if cfg.develop: + command += ['--develop'] + + actions.superuser_run('upgrades', command) + + +def is_backports_requested(): + """Return whether user has chosen to activate backports.""" + from plinth import kvstore + return kvstore.get_default(BACKPORTS_REQUESTED_KEY, False) + + +def set_backports_requested(requested): + """Set whether user has chosen to activate backports.""" + from plinth import kvstore + kvstore.set(BACKPORTS_REQUESTED_KEY, requested) + logger.info('Backports requested - %s', requested) + + +def is_backports_enabled(): + """Return whether backports are enabled in the system configuration.""" + return os.path.exists(SOURCES_LIST) + + +def get_current_release(): + """Return current release and codename as a tuple.""" + output = subprocess.check_output( + ['lsb_release', '--release', '--codename', + '--short']).decode().strip() + lines = output.split('\n') + return lines[0], lines[1] + + +def is_backports_current(): + """Return whether backports are enabled for the current release.""" + if not is_backports_enabled(): + return False + + _, dist = get_current_release() + dist += '-backports' + sources = sourceslist.SourcesList() + for source in sources: + if source.dist == dist: + return True + + return False + + +def can_activate_backports(): + """Return whether backports can be activated.""" + release, _ = get_current_release() + if release == 'unstable' or (release == 'testing' and not cfg.develop): + return False + + return True diff --git a/plinth/modules/upgrades/data/lib/systemd/system/freedombox-manual-upgrade.service b/plinth/modules/upgrades/data/lib/systemd/system/freedombox-manual-upgrade.service index 862db4196..c0f80714c 100644 --- a/plinth/modules/upgrades/data/lib/systemd/system/freedombox-manual-upgrade.service +++ b/plinth/modules/upgrades/data/lib/systemd/system/freedombox-manual-upgrade.service @@ -3,6 +3,7 @@ Description=Run unattended-upgrade once [Service] Type=oneshot +ExecStartPre=-apt-get update --assume-yes --quiet ExecStart=unattended-upgrade --verbose KillMode=process TimeoutStopSec=900 diff --git a/plinth/modules/upgrades/forms.py b/plinth/modules/upgrades/forms.py index 26a5e0db3..db4263ef4 100644 --- a/plinth/modules/upgrades/forms.py +++ b/plinth/modules/upgrades/forms.py @@ -12,3 +12,10 @@ class ConfigureForm(forms.Form): auto_upgrades_enabled = forms.BooleanField( label=_('Enable auto-update'), required=False, help_text=_( 'When enabled, FreedomBox automatically updates once a day.')) + + +class BackportsFirstbootForm(forms.Form): + """Form to configure backports during first boot wizard.""" + backports_enabled = forms.BooleanField( + label=_('Activate frequent feature updates (recommended)'), + required=False, initial=True) diff --git a/plinth/modules/upgrades/templates/backports-firstboot.html b/plinth/modules/upgrades/templates/backports-firstboot.html new file mode 100644 index 000000000..77d14779f --- /dev/null +++ b/plinth/modules/upgrades/templates/backports-firstboot.html @@ -0,0 +1,48 @@ +{% extends "base_firstboot.html" %} +{% comment %} +# SPDX-License-Identifier: AGPL-3.0-or-later +{% endcomment %} + +{% load bootstrap %} +{% load i18n %} +{% load static %} + +{% block content %} +

    {% trans "Frequent Feature Updates" %}

    + +

    + {% blocktrans trimmed %} + Frequent feature updates allow the {{box_name}} Service, plus a very + limited set of software, to receive new features more frequently (from the + backports repository). This results in receiving some new features within + weeks, instead of only once every 2 years or so. Note that software with + frequent feature updates does not have support from the Debian Security + Team. Instead, they are maintained by contributors to Debian and the + {{box_name}} community. + {% endblocktrans %} +

    + +

    + {% blocktrans trimmed %} + It is strongly recommended to activate frequent feature updates. If not + activated now, they can be activated later. + {% endblocktrans %} +

    + + + +
    + {% csrf_token %} + + {{ form|bootstrap }} + + + + +{% endblock %} diff --git a/plinth/modules/upgrades/templates/upgrades_configure.html b/plinth/modules/upgrades/templates/upgrades_configure.html index d8497e010..5878a7d45 100644 --- a/plinth/modules/upgrades/templates/upgrades_configure.html +++ b/plinth/modules/upgrades/templates/upgrades_configure.html @@ -8,7 +8,57 @@ {% load static %} {% block extra_content %} -

    {% trans "Manual update" %}

    +

    {% trans "Frequent Feature Updates" %}

    +

    + {% if can_activate_backports and not is_backports_requested %} + {% blocktrans trimmed %} + Frequent feature updates can be activated. Activating them is + recommended. + {% endblocktrans %} + {% elif can_activate_backports and is_backports_requested %} + {% blocktrans trimmed %} + Frequent feature updates are activated. + {% endblocktrans %} + {% else %} + {% blocktrans trimmed %} + Frequent feature updates cannot be activated. They may not be necessary + on your distribution. + {% endblocktrans %} + {% endif %} +

    +

    + {% if can_activate_backports %} + {% blocktrans trimmed %} + Frequent feature updates allow the {{box_name}} Service, plus a very + limited set of software, to receive new features more frequently (from + the backports repository). This results in receiving some new features + within weeks, instead of only once every 2 years or so. Note that + software with frequent feature updates does not have support from the + Debian Security Team. Instead, they are maintained by contributors to + Debian and the {{box_name}} community. + {% endblocktrans %} + {% endif %} +

    + {% if can_activate_backports and not is_backports_requested %} + +

    +
    + {% csrf_token %} + + +

    + {% endif %} + +

    {% trans "Manual Update" %}

    {% if is_busy %}

    TypeDomain NameServices{% trans "Type" %}{% trans "Domain Name" %}{% trans "Services" %}
    + + + + + + + + + {% for port in port_forwarding_info.ports %} + + + + + + {% endfor %} + +
    {% trans "Protocol" %}{% trans "From Router/WAN Ports" %}{% blocktrans %}To {{box_name}} Ports{% endblocktrans %}
    {{ port.protocol }}{{ port.ports }}{{ port.ports }}
    + {% endif %}

    -
      - {% for port in port_forwarding_info %} -
    • {{ port.0 }} {{ port.1 }}
    • - {% endfor %} -
    {% endif %} diff --git a/plinth/tests/functional/__init__.py b/plinth/tests/functional/__init__.py index c0ecaa4ea..9987eed8d 100644 --- a/plinth/tests/functional/__init__.py +++ b/plinth/tests/functional/__init__.py @@ -13,15 +13,15 @@ from contextlib import contextmanager import pytest import requests -from selenium.common.exceptions import (WebDriverException, - StaleElementReferenceException) +from selenium.common.exceptions import (StaleElementReferenceException, + WebDriverException) from selenium.webdriver.support.ui import WebDriverWait config = configparser.ConfigParser() config.read(pathlib.Path(__file__).with_name('config.ini')) config['DEFAULT']['url'] = os.environ.get('FREEDOMBOX_URL', - config['DEFAULT']['url']) + config['DEFAULT']['url']).rstrip('/') config['DEFAULT']['samba_port'] = os.environ.get( 'FREEDOMBOX_SAMBA_PORT', config['DEFAULT']['samba_port']) @@ -261,6 +261,9 @@ def login(browser, url, username, password): if '/internet-connection-type' in browser.url: submit(browser, element=browser.find_by_name('skip')[0]) + if '/firstboot/backports' in browser.url: + submit(browser, element=browser.find_by_name('next')[0]) + ################# # App utilities # @@ -297,6 +300,8 @@ def install(browser, app_name): time.sleep(0.1) elif browser.is_element_present_by_css('.neterror'): browser.visit(browser.url) + elif browser.is_element_present_by_css('.alert-danger'): + break elif browser.is_element_present_by_css(install_button_css): install_button = browser.find_by_css(install_button_css).first if install_button['disabled']: diff --git a/plinth/tests/functional/install.sh b/plinth/tests/functional/install.sh index a2355a755..6aaba28ca 100755 --- a/plinth/tests/functional/install.sh +++ b/plinth/tests/functional/install.sh @@ -5,7 +5,7 @@ IFS=$'\n\t' echo "Installing requirements" sudo apt-get install -yq --no-install-recommends \ python3-pytest python3-pytest-django \ - python3-pip firefox smbclient\ + python3-pip firefox-esr smbclient\ xvfb pip3 install wheel pip3 install splinter pytest-splinter pytest-bdd pytest-xvfb pytest-xdist diff --git a/plinth/views.py b/plinth/views.py index d61e79356..4b8570ca7 100644 --- a/plinth/views.py +++ b/plinth/views.py @@ -19,6 +19,7 @@ from stronghold.decorators import public from plinth import app, package from plinth.daemon import app_is_running from plinth.modules.config import get_advanced_mode +from plinth.modules.firewall.components import get_port_forwarding_info from plinth.translation import get_language_from_request, set_language from . import forms, frontpage @@ -146,15 +147,10 @@ class AppView(FormView): to customize the appearance of the app to achieve more complex presentation instead of the simple appearance provided by default. - 'port_forwarding_info' is a list of port information dictionaries that can - used to show a special section in the app page that tells the users how to - forward ports on their router for this app to work properly. - """ form_class = None app_id = None template_name = 'app.html' - port_forwarding_info = None def __init__(self, *args, **kwargs): """Initialize the view.""" @@ -254,7 +250,7 @@ class AppView(FormView): context['is_running'] = app_is_running(self.app) context['app_info'] = self.app.info context['has_diagnostics'] = self.app.has_diagnostics() - context['port_forwarding_info'] = self.port_forwarding_info + context['port_forwarding_info'] = get_port_forwarding_info(self.app) context['app_enable_disable_form'] = self.get_enable_disable_form() from plinth.modules.firewall.components import Firewall diff --git a/pytest.ini b/pytest.ini index f557054cf..e95adc2ab 100644 --- a/pytest.ini +++ b/pytest.ini @@ -5,7 +5,6 @@ markers = functional backups bind configuration - coquelicot date_and_time deluge dynamicdns diff --git a/setup.py b/setup.py index 1eaead35e..52e46fd7f 100755 --- a/setup.py +++ b/setup.py @@ -37,6 +37,7 @@ ENABLED_APPS_PATH = "/etc/plinth/modules-enabled/" DISABLED_APPS_TO_REMOVE = [ 'apps', + 'coquelicot', 'diaspora', 'owncloud', 'system', @@ -110,6 +111,7 @@ class CustomBuild(build): class CustomClean(clean): """Override clean command to clean doc, locales, and egg-info.""" + def run(self): """Execute clean command""" subprocess.check_call(['rm', '-rf', 'Plinth.egg-info/']) @@ -127,6 +129,7 @@ class CustomClean(clean): class CustomInstall(install): """Override install command.""" + def run(self): for app in DISABLED_APPS_TO_REMOVE: file_path = pathlib.Path(ENABLED_APPS_PATH) / app @@ -144,6 +147,7 @@ class CustomInstall(install): class CustomInstallData(install_data): """Override install command to allow directory creation and copy""" + def _run_doc_install(self): """Install documentation""" command = ['make', '-j', '8', '-C', 'doc', 'install'] diff --git a/static/themes/default/icons/bepasty.png b/static/themes/default/icons/bepasty.png new file mode 100644 index 000000000..37dd561e9 Binary files /dev/null and b/static/themes/default/icons/bepasty.png differ diff --git a/static/themes/default/icons/bepasty.svg b/static/themes/default/icons/bepasty.svg new file mode 100644 index 000000000..eec946b8f --- /dev/null +++ b/static/themes/default/icons/bepasty.svg @@ -0,0 +1,125 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + B + pasty + + + diff --git a/static/themes/default/icons/coquelicot.png b/static/themes/default/icons/coquelicot.png deleted file mode 100644 index 9bb173f83..000000000 Binary files a/static/themes/default/icons/coquelicot.png and /dev/null differ diff --git a/static/themes/default/icons/coquelicot.svg b/static/themes/default/icons/coquelicot.svg deleted file mode 100644 index 3a252b8b4..000000000 --- a/static/themes/default/icons/coquelicot.svg +++ /dev/null @@ -1,648 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/static/themes/default/icons/deluge.svg b/static/themes/default/icons/deluge.svg index d75dd7995..15f2248aa 100644 --- a/static/themes/default/icons/deluge.svg +++ b/static/themes/default/icons/deluge.svg @@ -15,19 +15,15 @@ id="svg3440" sodipodi:version="0.32" inkscape:version="0.92.4 (5da689c313, 2019-01-14)" - sodipodi:docname="deluge.svg" - inkscape:export-xdpi="32" - inkscape:export-ydpi="32" + sodipodi:docname="Deluge-Logo.svg" + inkscape:export-filename="/home/zach/deluge.png" + inkscape:export-xdpi="480" + inkscape:export-ydpi="480" inkscape:output_extension="org.inkscape.output.svg.inkscape" sodipodi:modified="TRUE" - version="1.1" - inkscape:export-filename="/home/calum/Desktop/test1b.png"> + version="1.1"> - @@ -174,165 +170,130 @@ id="linearGradient4989"> + offset="0.0000000" + style="stop-color:#d3e9ff;stop-opacity:1.0000000;" /> + offset="0.15517241" + style="stop-color:#d3e9ff;stop-opacity:1.0000000;" /> + offset="0.75000000" + style="stop-color:#4074ae;stop-opacity:1.0000000;" /> + offset="1.0000000" + style="stop-color:#36486c;stop-opacity:1.0000000;" /> + style="stop-color:#ffffff;stop-opacity:1.0000000;" /> + style="stop-color:#ffffff;stop-opacity:0.16494845;" /> - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + inkscape:window-maximized="0" /> @@ -341,7 +302,7 @@ image/svg+xml - + Internet Category Jakub Steiner @@ -385,41 +346,65 @@ id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" - style="display:inline" - transform="translate(0,464)" /> - - + id="g874" + transform="matrix(10.934561,0,0,10.934561,-15.037742,-474.45489)"> + + d="M 23.942923,0.9561338 37.330543,18.266721 C 46.998995,29.84687 41.49692,43.923891 26.7742,45.000491 6.0597413,45.582655 6.5086231,27.37483 11.255313,18.609381 Z" + style="fill:url(#radialGradient6115);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.07523891px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + d="M 35.111358,26.143133 C 28.972772,13.030586 17.560684,17.697957 17.274449,26.949974 16.894738,39.223415 34.748874,37.615429 36.715244,41.468778 28.821643,47.675479 14.973233,45.226508 10.962289,39.715204 6.9574776,34.212326 7.2383598,25.630263 10.784249,19.587632 24.158625,0.978654 39.749127,24.383766 35.111358,26.143133 Z" + style="fill:#1b4075;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.07523891px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" + id="path2071" + d="m 23.996861,3.5433428 12.06049,15.6077022 c 8.71239,10.431485 3.361995,23.263047 -9.93217,24.357476 C 7.3917365,44.015286 7.4275065,28.119221 12.17284,20.333442 Z" + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.1000706;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.36612022" /> + + + + diff --git a/static/themes/default/js/main.js b/static/themes/default/js/main.js index 0ec9d7baa..082b51deb 100644 --- a/static/themes/default/js/main.js +++ b/static/themes/default/js/main.js @@ -52,6 +52,7 @@ function onSubmitAddProgress(event) { if (!button.classList.contains('btn') || button.classList.contains('btn-link') || button.classList.contains('no-running-status') || + button.classList.contains('pull-right') || button.hasAttribute('disabled')) { return; } diff --git a/static/themes/default/lato/Lato-Regular.ttf b/static/themes/default/lato/Lato-Regular.ttf deleted file mode 120000 index 01298edc1..000000000 --- a/static/themes/default/lato/Lato-Regular.ttf +++ /dev/null @@ -1 +0,0 @@ -/usr/share/fonts/truetype/lato/Lato-Regular.ttf \ No newline at end of file